diff options
Diffstat (limited to 'comm/OLD/Agent.h')
-rw-r--r-- | comm/OLD/Agent.h | 82 |
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_ */ |