123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- #pragma once
- class DelegateArgs;
- #include "BUSClient.MainEntry.hpp"
- namespace BUSC = ECOM::ServiceBus::Controller;
- #ifndef _ServiceBus_DLL
- #define _ServiceBus_API _declspec(dllimport)
- #else
- #define _ServiceBus_API _declspec(dllexport)
- #endif
- namespace ECOM
- {
- namespace ServiceBus
- {
- namespace Controller
- {
- class _ServiceBus_API MessageClient;
- };
- namespace MemMapExchBLOB
- {
- class _ServiceBus_API PullManager
- {
- public:
- static void SetLogFileName (const char * FileName);
- static void Prepare ();
- static void Quit ();
- // 设置缺省的超时, 单位: 毫秒
- static void SetDefTimeOut (int msTimeOut);
- static bool GetBLOB (DString Message, BlockBuffer & BLOB);
- };
- class _ServiceBus_API PullBLOB_Base
- {
- protected:
- PullBLOB_Base (LPCTSTR SourceID);
- PullBLOB_Base (const PullBLOB_Base &) = delete;
- PullBLOB_Base (PullBLOB_Base &&) = delete;
- PullBLOB_Base & operator = (const PullBLOB_Base &) = delete;
- public:
- virtual ~PullBLOB_Base ();
- protected:
- virtual Controller::MessageClient * GetClient () = 0;
- public:
- int Pull (LPCTSTR TargetID, DString Message, int msTimeOut = gDefMSTimeOut);
- int Pull (LPCTSTR TargetID, DString Message, DString & AckMessage, int msTimeOut = gDefMSTimeOut);
- // 可以用特殊命令 (而不是标准的 BUSCMD_MemMapPullBLOB) 给对方
- // 不过对方只能用标准的
- int Pull (LPCTSTR TargetID, DWORD Command, DString Message, DString & AckMessage, int msTimeOut = gDefMSTimeOut);
- protected:
- void OnBUSDummy (const void * sender, EventArgs_BUSMessage * e);
- void OnBUSMemMapPushBLOB (const void * sender, EventArgs_BUSMessage * e);
- public:
- std::vector <BlockBuffer> m_arBLOB;
- protected:
- DString m_SourceID;
- Controller::MessageReceiver * m_Receiver;
- Controller::MessageClient * m_Client;
- protected:
- friend PullManager;
- static int gDefMSTimeOut;
- };
- class _ServiceBus_API PullBLOB : public PullBLOB_Base
- {
- public:
- PullBLOB (PCTSTR SourceID);
- PullBLOB (const PullBLOB &) = delete;
- PullBLOB (PullBLOB &&) = delete;
- PullBLOB & operator = (const PullBLOB &) = delete;
- protected:
- virtual Controller::MessageClient * GetClient () override;
- };
- class _ServiceBus_API FixedPullBLOB : public PullBLOB_Base
- {
- public:
- FixedPullBLOB (PCTSTR SourceID, int Port = BUSC::LegacySendPort);
- FixedPullBLOB (const FixedPullBLOB &) = delete;
- FixedPullBLOB (FixedPullBLOB &&) = delete;
- FixedPullBLOB & operator = (const FixedPullBLOB &) = delete;
- protected:
- virtual Controller::MessageClient * GetClient () override;
- int m_Port;
- };
- }
- }
- };
|