目录
1、Callbacks.h
回调操作
不用依赖boost库,全部翻译成对C++11的依赖,与多线程相关,也翻译成C++11,与Linux底层的API的关联性减少,移植性更好
#pragma once
#include <memory>
#include <functional>
class Buffer;
class TcpConnection;
using TcpConnectionPtr=std::shared_ptr<TcpConnection>;
using ConnectionCallback=std::function<void(const TcpConnectionPtr&)>;
using CloseCallback=std::function<void(const TcpConnectionPtr&)>;
using WriteCompleteCallback=std::function<void(const TcpConnectionPtr&)>;
using MessageCallback=std::function<void(const TcpConnectionPtr&,
Buffer*,
Timestamp)>;
2、TcpServer.h
#pragma once
/**
* 用户使用muduo编写服务器程序
* 在这里加上头文件,用户使用的时候就不用加了
*/
#include "EventLoop.h"
#include "Acceptor.h"
#include "InetAddress.h"
#include "noncopyable.h"
#include "EventLoopThreadPool.h"
#include "Callbacks.h"
#include <functional>
#include <string>
#include <memory>
#include <atomic>
#include <unordered_map>
//对外的服务器编程使用的类
class TcpServer:noncopyable
{
public:
using ThreadInitCallback=std::function<void(EventLoop*)>;
enum Option//预制两个选项来表示端口是否可重用
{
kNoReusePort,//不可重用
kReusePort,//可重用
};
TcpServer(EventLoop* loop,
const InetAddress& listenAddr,
const std::string& nameArg,
Option option=kNoReusePort);
~TcpServer();
void setThreadInitcallback(const ThreadInitCallback& cb){threadInitCallback_=cb;}
void setConnectionCallback(const ConnectionCallback&