summaryrefslogtreecommitdiff
path: root/comm/OLD/Server.h
diff options
context:
space:
mode:
Diffstat (limited to 'comm/OLD/Server.h')
-rw-r--r--comm/OLD/Server.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/comm/OLD/Server.h b/comm/OLD/Server.h
new file mode 100644
index 0000000..7f8c597
--- /dev/null
+++ b/comm/OLD/Server.h
@@ -0,0 +1,77 @@
+/*
+ * The Unix Channel
+ *
+ * by Michel Beaudouin-Lafon
+ *
+ * Copyright 1990-1993
+ * Laboratoire de Recherche en Informatique (LRI)
+ *
+ * Servers
+ *
+ * $Id$
+ * $CurLog$
+ */
+
+#ifndef Server_H_
+#define Server_H_
+
+#include "ccu/List.h"
+#include "MsgStream.h"
+#include "Multiplexer.h"
+#include "error.h"
+
+class UchServer;
+
+class UchClient : public UchMsgStream {
+friend class UchServer;
+
+protected:
+ UchServer *MyServer;
+
+public:
+ UchClient ();
+ UchClient (const UchClient& cl);
+ UchClient (UchChannel* ch);
+ ~UchClient ();
+
+ UchChannel* Copy () const;
+ void Delete ();
+
+inline UchServer* GetServer () { return MyServer; }
+ void SetOwner (UchServer*);
+};
+
+class UchServer : public UchStream {
+friend class UchClient;
+
+protected:
+ CcuListOf <UchClient> Clients;
+ pUchMultiplexer ChanSet;
+
+public:
+ UchServer ();
+ UchServer (const UchServer&);
+ UchServer (UchAddress*);
+ ~UchServer ();
+
+ UchChannel* Copy () const;
+ void HandleRead ();
+
+ bool Setup (UchMultiplexer* cs = 0);
+inline UchMultiplexer* GetMultiplexer () { return ChanSet; }
+ void RemoveClient (UchClient*);
+ void Run ();
+ void Unlisten ();
+ void Broadcast (UchMessage&, bool = FALSE);
+ void Broadcast (UchMessage&, UchClient*, bool = FALSE);
+ void Broadcast (UchMsgBuffer&, bool = FALSE);
+ void Broadcast (UchMsgBuffer&, UchClient*, bool = FALSE);
+// called by HandleRead when a new client connects: must build up a client from a channel
+virtual UchClient* HandleNew (UchChannel*);
+virtual void HandleRemove (UchClient*);
+virtual bool SysError (errtype, const char*, int = 0, int = 0);
+virtual void Error (errtype, const char*, const char*);
+};
+
+
+#endif /* Server_H_ */