From ba066c34dde204aa192d03a23a81356374d93731 Mon Sep 17 00:00:00 2001 From: chatty Date: Wed, 7 Apr 1993 11:50:31 +0000 Subject: Initial revision --- comm/OLD/Service.h | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 comm/OLD/Service.h (limited to 'comm/OLD/Service.h') diff --git a/comm/OLD/Service.h b/comm/OLD/Service.h new file mode 100644 index 0000000..b97a6cf --- /dev/null +++ b/comm/OLD/Service.h @@ -0,0 +1,100 @@ +/* + * The Unix Channel + * + * by Michel Beaudouin-Lafon + * + * Copyright 1990-1993 + * Laboratoire de Recherche en Informatique (LRI) + * + * Client side: services + * + * $Id$ + * $CurLog$ + */ + +#ifndef Service_H_ +#define Service_H_ + +#include "Message.h" +#include "MsgStream.h" +#include "error.h" +#include "cplus_bugs.h" +#include "ccu/List.h" + +class UchService; + +// events are messages sent by a server that are linked into an event list +// +class UchEventMsg : public UchMessage { +friend class UchService; + +protected: + UchMsgStream* From; + +public: + +inline UchEventMsg () : UchMessage (), From (0) { } + ~UchEventMsg (); + +inline UchMsgStream* GetSource () { return From; } +}; + + +class UchGenEvtMsg : public UchEventMsg { +protected: + UchMessage* Msg; + +public: +inline UchGenEvtMsg () : UchEventMsg () { Msg = 0; } +inline UchGenEvtMsg (UchMessage* m) : UchEventMsg () { Msg = m; } + ~UchGenEvtMsg (); + + void WriteTo (UchMsgBuffer&); + void ReadFrom (UchMsgBuffer&, lword); +inline void SetMsg (UchMessage* m) { if (Msg) delete Msg; Msg = m; } +inline UchMessage* GetMsg () { return Msg; } +}; + +// class for storing and retrieving events +// +class UchEvtMsgQueue : public CcuSmartData { + +protected: + CcuListOf Queue; + +public: + UchEvtMsgQueue (); + ~UchEvtMsgQueue (); + +inline void Put (UchEventMsg* m) { Queue.Append (m); } +inline UchEventMsg* Peek () { return Queue.First (); } +inline UchEventMsg* Get () { return Queue.RemoveFirst (); } +inline void PutBack (UchEventMsg* m) { Queue.Prepend (m); } +inline operator const CcuListOf & () const { return Queue; } +}; + +PointerClass (pUchEvtMsgQueue, UchEvtMsgQueue) + +// UchService is the client's view of a server +// we use smart pointers so that the event queue can be shared +// +class UchService : public UchMsgStream { +protected: + pUchEvtMsgQueue EvQueue; + +public: + UchService (); + UchService (UchAddress*); + UchService (const UchService&); + ~UchService (); + + UchChannel* Copy () const; + + void SetEvQueue (UchEvtMsgQueue*); + UchEventMsg* PeekEvent (bool = TRUE); + UchEventMsg* GetEvent (bool = TRUE); + void PutEvent (UchEventMsg*); + void PutBackEvent (UchEventMsg*); +}; + +#endif /* Service_H_ */ -- cgit v1.1