+struct SocketManager::SocketEntry {
+ ISocketObserver *observer;
+ int fd;
+ unsigned mask;
+ int timeout;
+ int timeout_this;
+ time_t last_activity;
+ SocketEntry *next;
+};
+
+struct SocketManager::SocketEvent {
+ ISocketObserver *observer;
+ int event;
+ SocketEvent *next; // front in queue
+ SocketEvent *prev; // back in queue
+};
+
+struct SocketManager::Rep {
+ SocketEntry *observers; // all registered observers
+ SocketEvent *queue_front;
+ SocketEvent *queue_back;
+ int log;
+};
+