summaryrefslogtreecommitdiff
path: root/comm/OLD/Server.h
diff options
context:
space:
mode:
authorchatty1993-04-07 11:50:31 +0000
committerchatty1993-04-07 11:50:31 +0000
commitba066c34dde204aa192d03a23a81356374d93731 (patch)
tree39391f6235d2cf8a59a0634ac5ea430cdd21f5d4 /comm/OLD/Server.h
parent05ab076e1c2a9ca16472f9a6b47b8d22914b3783 (diff)
downloadivy-league-ba066c34dde204aa192d03a23a81356374d93731.zip
ivy-league-ba066c34dde204aa192d03a23a81356374d93731.tar.gz
ivy-league-ba066c34dde204aa192d03a23a81356374d93731.tar.bz2
ivy-league-ba066c34dde204aa192d03a23a81356374d93731.tar.xz
Initial revision
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_ */