abstract out epoll and make room for kqueue
This commit is contained in:
@@ -31,24 +31,21 @@ namespace ev
|
||||
virtual bool acceptable() const { return false; };
|
||||
virtual int accept() { return -1; };
|
||||
};
|
||||
|
||||
struct Loop
|
||||
{
|
||||
public:
|
||||
virtual ~Loop() {};
|
||||
|
||||
virtual bool BindTCP(const sockaddr * addr, ev::io * handler) = 0;
|
||||
virtual bool TrackConn(ev::io * handler) = 0;
|
||||
virtual void UntrackConn(ev::io * handler) = 0;
|
||||
virtual void Run() = 0;
|
||||
};
|
||||
}
|
||||
|
||||
class Mainloop
|
||||
{
|
||||
public:
|
||||
Mainloop();
|
||||
~Mainloop();
|
||||
ev::Loop * NewMainLoop();
|
||||
|
||||
bool BindTCP(const sockaddr * addr, ev::io * handler);
|
||||
bool TrackConn(ev::io * handler);
|
||||
void UntrackConn(ev::io * handler);
|
||||
void Run();
|
||||
|
||||
private:
|
||||
size_t conns;
|
||||
int epollfd;
|
||||
char readbuf[128];
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -11,7 +11,7 @@ namespace nntpchan
|
||||
class NNTPServer : public Server
|
||||
{
|
||||
public:
|
||||
NNTPServer(Mainloop & loop);
|
||||
NNTPServer(ev::Loop * loop);
|
||||
|
||||
virtual ~NNTPServer();
|
||||
|
||||
|
@@ -59,7 +59,7 @@ private:
|
||||
class Server : public ev::io
|
||||
{
|
||||
public:
|
||||
Server(Mainloop & loop);
|
||||
Server(ev::Loop * loop);
|
||||
virtual ~Server() {};
|
||||
|
||||
virtual bool acceptable() const { return true; };
|
||||
@@ -91,7 +91,7 @@ protected:
|
||||
private:
|
||||
|
||||
void OnAccept(int fd, int status);
|
||||
Mainloop & m_Loop;
|
||||
ev::Loop * m_Loop;
|
||||
std::deque<IServerConn *> m_conns;
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user