summaryrefslogtreecommitdiff
path: root/server/component.h
diff options
context:
space:
mode:
Diffstat (limited to 'server/component.h')
-rw-r--r--server/component.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/server/component.h b/server/component.h
new file mode 100644
index 0000000..2f8e605
--- /dev/null
+++ b/server/component.h
@@ -0,0 +1,50 @@
+/*
+ * $Id: component.h,v 1.1 2004/12/30 22:44:18 lordjaxom Exp $
+ */
+
+#ifndef VDR_STREAMDEV_SERVERS_COMPONENT_H
+#define VDR_STREAMDEV_SERVERS_COMPONENT_H
+
+#include "tools/socket.h"
+#include "tools/select.h"
+
+#include <vdr/tools.h>
+
+class cServerConnection;
+
+/* Basic TCP listen server, all functions virtual if a derivation wants to do
+ things different */
+
+class cServerComponent: public cListObject {
+private:
+ cTBSocket m_Listen;
+ const char *m_Protocol;
+ const char *m_ListenIp;
+ uint m_ListenPort;
+
+public:
+ cServerComponent(const char *Protocol, const char *ListenIp, uint ListenPort);
+ virtual ~cServerComponent();
+
+ /* Starts listening on the specified Port, override if you want to do things
+ different */
+ virtual bool Init(void);
+
+ /* Stops listening, override if you want to do things different */
+ virtual void Exit(void);
+
+ /* Adds the listening socket to the Select object */
+ virtual void AddSelect(cTBSelect &Select) const { Select.Add(m_Listen); }
+
+ /* Accepts the connection on a NewConnection() object and calls the
+ Welcome() on it, override if you want to do things different */
+ virtual cServerConnection *CanAct(const cTBSelect &Select);
+
+ /* Returns a new connection object for CanAct */
+ virtual cServerConnection *NewConnection(void) const = 0;
+};
+
+class cServerComponents: public cList<cServerComponent> {
+};
+
+#endif // VDR_STREAMDEV_SERVERS_COMPONENT_H