00001
00002
00003
00004
00005
00008
00009 #ifndef _ROKU_INCLUDE_CASCADE_INTERPROCESS_CASCADEWORMHOLE_H
00010 #define _ROKU_INCLUDE_CASCADE_INTERPROCESS_CASCADEWORMHOLE_H
00011
00012 #include <cascade/interprocess/CascadeMessage.h>
00013 #include <cascade/interprocess/CascadeMessageDefs.h>
00014
00143 class CascadeWormhole : public CascadeObject
00144 {
00145 public:
00146 CascadeWormhole();
00150 virtual ~CascadeWormhole();
00155
00156 public:
00157 enum {
00158 kMaxName = 96,
00159 kMaxNameLen = kMaxName - 1
00160 };
00161
00162 public:
00163 bool Create(const char * pWormholeURL);
00172 void Destroy();
00178 CascadeMessage * WaitForMessage(u32 nTimeoutMilliseconds = 0);
00188 bool PostMessage(const char * pWormholeURL, u32 nMessageID, void * pMessageData = NULL, u32 nDataSize = 0);
00199 bool BroadcastMessage(const char * pBroadcastURL, u32 nMessageID, void * pMessageData = NULL, u32 nDataSize = 0);
00211 bool SendMessage(const char * pWormholeURL, u32 nMessageID, void * pMessageData, u32 nDataSize, CascadeMessage *& pReplyMessageToSet);
00226 bool SendReply(u32 nReplyMessageID, void * pMessageData = NULL, u32 nDataSize = 0);
00242 typedef bool (WormholeEnumProc)(const char * pWormholeURL, void * pClientData);
00255 static bool EnumerateWormholes(const char * pWormholeURL, WormholeEnumProc * pEnumProc, void * pClientData);
00265 static bool DoesWormholeExist(const char * pWormholeURL);
00272 #ifndef DOXY_SKIP
00273
00274 #ifdef _CW_USE_OLD_WORMHOLE_IMPL
00275 private:
00276 void * m_pWormholeInternal;
00277 #else
00278 private:
00279 class Hole;
00280 Hole * m_pHole;
00281 #endif
00282 #endif
00283 };
00284
00285 #endif // #ifndef _ROKU_INCLUDE_CASCADE_INTERPROCESS_CASCADEWORMHOLE_H
00286
00288
00290
00291
00292
00293
00294
00295
00296
00297
00298