00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef CCLIENTPROXYUNKNOWN_H
00016 #define CCLIENTPROXYUNKNOWN_H
00017
00018 #include "CEvent.h"
00019
00020 class CClientProxy;
00021 class CEventQueueTimer;
00022 class IStream;
00023
00024 class CClientProxyUnknown {
00025 public:
00026 CClientProxyUnknown(IStream* stream, double timeout);
00027 ~CClientProxyUnknown();
00028
00030
00031
00033
00038 CClientProxy* orphanClientProxy();
00039
00041
00042
00043
00045
00049 static CEvent::Type getSuccessEvent();
00050
00052
00056 static CEvent::Type getFailureEvent();
00057
00059
00060 private:
00061 void sendSuccess();
00062 void sendFailure();
00063 void addStreamHandlers();
00064 void addProxyHandlers();
00065 void removeHandlers();
00066 void removeTimer();
00067 void handleData(const CEvent&, void*);
00068 void handleWriteError(const CEvent&, void*);
00069 void handleTimeout(const CEvent&, void*);
00070 void handleDisconnect(const CEvent&, void*);
00071 void handleReady(const CEvent&, void*);
00072
00073 private:
00074 IStream* m_stream;
00075 CEventQueueTimer* m_timer;
00076 CClientProxy* m_proxy;
00077 bool m_ready;
00078
00079 static CEvent::Type s_successEvent;
00080 static CEvent::Type s_failureEvent;
00081 };
00082
00083 #endif