Getting Started 08 Network Programming

net module

Callbacks.h

template<typename T>
inline T* get_pointer(const std::shared_ptr<T>& ptr)   //返回shard_ptr的裸指针,感觉意义不大的一个函数
{
  return ptr.get();
}

template<typename T>
inline T* get_pointer(const std::unique_ptr<T>& ptr)  //返回unique_ptr的裸指针
{
  return ptr.get();
}

template<typename To, typename From>                     //对智能指针进行转换
inline ::std::shared_ptr<To> down_pointer_cast(const ::std::shared_ptr<From>& f) {
  if (false)
  {
    implicit_cast<From*, To*>(0);
  }

#ifndef NDEBUG
  assert(f == NULL || dynamic_cast<To*>(get_pointer(f)) != NULL);
#endif
  return ::std::static_pointer_cast<To>(f);
}

typedef std::shared_ptr<TcpConnection> TcpConnectionPtr;                  
typedef std::function<void()> TimerCallback;
typedef std::function<void (const TcpConnectionPtr&)> ConnectionCallback;  //对于一个含有TcpConnection智能指针的对象座位参数的可调用对象,起不同的别名。 可调用对象,就是一种回调函数
typedef std::function<void (const TcpConnectionPtr&)> CloseCallback;
typedef std::function<void (const TcpConnectionPtr&)> WriteCompleteCallback;
typedef std::function<void (const TcpConnectionPtr&, size_t)> HighWaterMarkCallback;

// the data has been read to (buf, len)
typedef std::function<void (const TcpConnectionPtr&,
                            Buffer*,
                            Timestamp)> MessageCallback;

void defaultConnectionCallback(const TcpConnectionPtr& conn);
void defaultMessageCallback(const TcpConnectionPtr& conn,
                            Buffer* buffer,
                            Timestamp receiveTime);

Guess you like

Origin www.cnblogs.com/aiqingyi/p/11320256.html