00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __NL_SOCKET_GROUP
00023 #define __NL_SOCKET_GROUP
00024
00025 #include <netlink/core.h>
00026 #include <netlink/socket.h>
00027
00028 NL_NAMESPACE
00029
00030 using std::vector;
00031
00032
00033 class SocketGroup;
00034
00041 class SocketGroupCmd {
00042
00043 public:
00044
00054 virtual void exec(Socket* socket, SocketGroup* group, void* reference)=0;
00055 };
00056
00057
00064 class SocketGroup {
00065
00066 private:
00067
00068 vector<Socket*> _vSocket;
00069
00070 SocketGroupCmd* _cmdOnAccept;
00071 SocketGroupCmd* _cmdOnRead;
00072 SocketGroupCmd* _cmdOnDisconnect;
00073
00074 public:
00075
00076 SocketGroup();
00077
00078 void add(Socket* socket);
00079 Socket* get(unsigned index) const;
00080 void remove(unsigned index);
00081 void remove(Socket* socket);
00082
00083 size_t size() const;
00084
00085 void setCmdOnAccept(SocketGroupCmd* cmd);
00086 void setCmdOnRead(SocketGroupCmd* cmd);
00087 void setCmdOnDisconnect(SocketGroupCmd* cmd);
00088
00089 bool listen(unsigned milisec=0, void* reference = NULL);
00090 };
00091
00092 #include <netlink/socket_group.inline.h>
00093
00094 NL_NAMESPACE_END
00095
00096 #endif