summaryrefslogtreecommitdiff
path: root/comm/OLD/Agent.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/Agent.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/Agent.h')
-rw-r--r--comm/OLD/Agent.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/comm/OLD/Agent.h b/comm/OLD/Agent.h
new file mode 100644
index 0000000..e7db419
--- /dev/null
+++ b/comm/OLD/Agent.h
@@ -0,0 +1,82 @@
+/*
+ * The Unix Channel
+ *
+ * by Michel Beaudouin-Lafon
+ *
+ * Copyright 1990-1993
+ * Laboratoire de Recherche en Informatique (LRI)
+ *
+ * Agents, by Stephane Chatty
+ *
+ * $Id$
+ * $CurLog$
+ */
+
+#ifndef Agent_H_
+#define Agent_H_
+
+#include "ccu/List.h"
+#include "MsgStream.h"
+#include "Multiplexer.h"
+#include "error.h"
+
+class UchRemoteAgent;
+
+class UchAgent : public UchStream {
+friend class UchRemoteAgent;
+
+protected:
+ CcuListOf <UchRemoteAgent> RemoteAgents;
+ pUchMultiplexer ChanSet;
+
+ void HandleRead ();
+
+public:
+ UchAgent ();
+ UchAgent (const UchAgent&);
+ UchAgent (UchAddress*);
+ ~UchAgent ();
+
+ UchChannel* Copy () const;
+
+ bool Setup (UchMultiplexer* cs = 0);
+inline UchMultiplexer* GetMultiplexer () { return ChanSet; }
+
+ UchRemoteAgent* Contact (UchAddress*);
+ void RemoveRemoteAgent (UchRemoteAgent*);
+ void Run ();
+ void Unlisten ();
+
+ void Broadcast (UchMessage&, bool = FALSE);
+ void Broadcast (UchMessage&, UchRemoteAgent*, bool = FALSE);
+ void Broadcast (UchMsgBuffer&, bool = FALSE);
+ void Broadcast (UchMsgBuffer&, UchRemoteAgent*, bool = FALSE);
+
+virtual void HandleNew (UchRemoteAgent*);
+virtual void HandleRemove (UchRemoteAgent*);
+virtual bool SysError (errtype, const char*, int = 0, int = 0);
+virtual void Error (errtype, const char*, const char*);
+};
+
+
+class UchRemoteAgent : public UchMsgStream {
+friend class UchAgent;
+
+protected:
+ UchAgent *MyLocalAgent;
+
+public:
+ UchRemoteAgent (UchAgent*);
+ UchRemoteAgent (const UchRemoteAgent& cl);
+ UchRemoteAgent (UchAgent*, UchAddress*);
+ UchRemoteAgent (UchAgent*, UchChannel* ch);
+ ~UchRemoteAgent ();
+
+ UchChannel* Copy () const;
+ void Delete ();
+
+inline UchAgent* GetLocalContact () { return MyLocalAgent; }
+};
+
+
+#endif /* Agent_H_ */