summaryrefslogtreecommitdiff
path: root/vdr-vdrmanager/select.h
diff options
context:
space:
mode:
Diffstat (limited to 'vdr-vdrmanager/select.h')
-rw-r--r--vdr-vdrmanager/select.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/vdr-vdrmanager/select.h b/vdr-vdrmanager/select.h
new file mode 100644
index 0000000..fbdeb02
--- /dev/null
+++ b/vdr-vdrmanager/select.h
@@ -0,0 +1,41 @@
+/*
+ * encapsulated poll
+ */
+
+#ifndef _VDRMON_SELECT
+#define _VDRMON_SELECT
+
+#include <string>
+#include <sys/select.h>
+#include "sock.h"
+#include "handler.h"
+
+struct node;
+class cSelect
+{
+private:
+ node * clientsockets;
+ int clientsocketcount;
+ cVdrmanagerServerSocket * serversocket;
+ cHandler * handler;
+ struct pollfd * pollfds;
+ bool stopped;
+ time_t nexttimer;
+ time_t shutdown;
+public:
+ cSelect();
+ virtual ~cSelect();
+ void DispatchVdrEvent(string event);
+ void SetServerSocket(cVdrmanagerServerSocket * sock);
+ void AddClientSocket(cVdrmanagerClientSocket * sock);
+ void RemoveClientSocket(cVdrmanagerClientSocket * sock);
+ bool Action();
+ bool Stop();
+private:
+ void CreatePollfds();
+ cVdrmanagerClientSocket * GetClientSocket(int fd);
+ bool Poll();
+ void NotifyClients(string event);
+};
+
+#endif