00001 #ifdef CCAFE_THREADS
00002
00003 #ifndef ClientInterfaces_seen
00004 #define ClientInterfaces_seen
00005
00006 #include <string.h>
00016 class ClientOutputListener;
00017
00018 class Client :public virtual JCPN(HashKey), public CCAFERunnable,
00019 public ReadCallback, public ConnectCallback
00020 {
00021 public:
00023 virtual void addClientOutputListener(ClientOutputListener* l) = 0;
00025 virtual void removeClientOutputListener(ClientOutputListener* l) = 0;
00027 virtual void write(char* s) = 0;
00029 virtual void flush() = 0;
00031 virtual int getId() = 0;
00033 virtual char* getSourceName() = 0;
00036 virtual void disconnect() = 0;
00039 virtual void shutdown() = 0;
00040
00041 virtual int hashValue() { return getId(); }
00042 };
00043
00044
00045
00046 class ClientOutputEvent :public virtual JCPN(Object) {
00047 private:
00048 char* s;
00049 Client* source;
00050 public:
00051 ClientOutputEvent(Client* source, char*& s)
00052 {
00053 this->source = source;
00054 this->s = strdup(s);
00055 }
00056 ~ClientOutputEvent(){
00057 delete s;
00058 }
00059 Client* getSource() { return source; };
00060 char* getString() {
00061 return s;
00062 }
00063 };
00064
00065
00066
00067 class OutOfBandEvent :public virtual JCPN(Object) {
00068 private:
00069 Client* source;
00070 char* cmd;
00071 public:
00072 OutOfBandEvent(Client* src, char* cmd) {
00073 this->source = src;
00074 this->cmd = strdup(cmd);
00075 }
00076 ~OutOfBandEvent() {
00077 delete cmd;
00078 }
00079 char* getOutOfBandCommand() {
00080 return cmd;
00081 }
00082 Client* getSource() { return source; };
00083 };
00084
00085
00086 class ClientOutputListener :public virtual JCPN(Object) {
00087 public:
00088 virtual void clientOutput(ClientOutputEvent* evt) = 0;
00089 };
00090
00093 class ClientOutputRelay {
00094 public:
00095 virtual void relayMessageFromDataProducers(char* s) = 0;
00096 virtual void relayMessageFromController(char* s) = 0;
00097 virtual void setDataCollectorByName( char* className ) = 0;
00098 virtual int getNumClients() = 0;
00099 };
00100
00101
00102
00103 class OutOfBandListener :public virtual JCPN(Object) {
00104
00108 public:
00109 virtual void processOutOfBand(OutOfBandEvent* evt) = 0;
00110 };
00111
00112
00113 class ClientOutputCollector :public virtual OutOfBandListener {
00114 public:
00115 virtual void computeClientOutput(ClientOutputEvent* evt) = 0;
00116 virtual void controllerClientOutput(ClientOutputEvent* evt) = 0;
00117 virtual void setClientOutputRelay( ClientOutputRelay* cR) = 0;
00118 };
00119
00120
00121 #endif // seen client
00122 #else //CCAFE_THREADS
00123 extern int ccafe_no_clientinterfaces;
00124 #endif //CCAFE_THREADS