CCAFFEINE  0.8.8
ClientInterfaces.h
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 // BUGBUG - give the src a specific interface.
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 // BUGBUG - give the src a specific interface.
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