123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- #pragma once
- #include "BUSClient.Define.hpp"
- #include "BUSClient.Base.hpp"
- namespace ECOM
- {
- namespace ServiceBus
- {
- namespace Controller
- {
- //-----------------------------------------------------------------------------
- // BaseReceiver, 消息接收的基类
- //-----------------------------------------------------------------------------
- class _ServiceBus_API BaseReceiver
- {
- public:
- void SetSourceID (LPCTSTR SourceID);
- DString SetUniqueSourceID (LPCTSTR SourceID);
- DString GetSourceID () const;
- void ConnectTo (LPCTSTR IPAddress);
- bool SetTcpNoDelay (bool bSet);
- int SetSocketOption (int level, int optname, const char * optval, int optlen);
- DString GetConnectIPAddress (void) const { return m_IPAddress; }
- void SetTCPTimeOut (int seconds);
- bool Subscribe (DWORD Command, int msTimeOut = gDefMSTimeOut);
- bool BUSSetting (DWORD Command, LPCTSTR Key, LPCTSTR Value);
- protected:
- DString m_IPAddress;
- int m_StatusPort;
- int m_NbOfChannel;
- bool m_bTcpNoDelay;
- int m_TCPTimeOut; // seconds
- DString m_SourceID;
- public:
- BaseReceiver ();
- virtual ~BaseReceiver ();
- public:
- // 启动线程后, Task 会检测是否真的启动了, 否则等待
- virtual void StartWait ();
- virtual void StopWait ();
- bool IsStarted () const;
- protected:
- virtual void CreateWaitTask (int NbOfChannel);
- protected:
- void OnHeartbeatRelay (const void * sender, EventArgs_Null * arg);
- void OnHeartbeat1MinuteRelay (const void * sender, EventArgs_Null * arg);
- void OnHeartbeat5MinuteRelay (const void * sender, EventArgs_Null * arg);
- void OnServerGlitchRelay (const void * sender, EventArgs_Int * arg);
- void OnServerOfflineRelay (const void * sender, EventArgs_Int * arg);
- void OnServerOnlineRelay (const void * sender, EventArgs_Int * arg);
- void OnServerRecoveredRelay (const void * sender, EventArgs_Int * arg);
- public:
- _tUnsafeDelegate <EventArgs_Null> OnHeartbeat;
- _tUnsafeDelegate <EventArgs_Null> OnHeartbeat1Minute;
- _tUnsafeDelegate <EventArgs_Null> OnHeartbeat5Minute;
- _tUnsafeDelegate <EventArgs_Int> OnServerGlitch;
- _tUnsafeDelegate <EventArgs_Int> OnServerOffline;
- _tUnsafeDelegate <EventArgs_Int> OnServerOnline;
- _tUnsafeDelegate <EventArgs_Int> OnServerRecovered;
- protected:
- class WaitMessageTask * m_Task;
- public:
- int m_iEnter;
- protected:
- static int gDefMSTimeOut;
- friend class Client;
- };
- //-----------------------------------------------------------------------------
- // MessageReceiver, 可以发送消息, 也可以接收消息
- //-----------------------------------------------------------------------------
- class _ServiceBus_API MessageReceiver : public BaseReceiver//, public MessageClient
- {
- typedef BaseReceiver inherited;
- public:
- MessageReceiver ();
- virtual ~MessageReceiver ();
- public:
- virtual void StartWait () override;
- virtual void StopWait () override;
- protected:
- virtual void CreateWaitTask (int NbOfChannel) override;
- protected:
- void OnMessageRelay (DWORD Command, const void * sender, ::EventArgs_BUSMessage * arg);
- protected:
- virtual bool RelayMessage (DWORD Command, const void * sender, ::EventArgs_BUSMessage * arg) { return false; }
- virtual void OnMessageNoResponse (const void * sender, ::EventArgs_BUSMessage * arg);
- public:
- BUSDelegate OnMessage;
- };
- class _ServiceBus_API BLOBReceiver : public BaseReceiver//, public BLOBClient
- {
- typedef BaseReceiver inherited;
- public:
- BLOBReceiver ();
- virtual ~BLOBReceiver ();
- protected:
- virtual void CreateWaitTask (int NbOfChannel) override;
- public:
- virtual void StartWait () override;
- virtual void StopWait () override;
- protected:
- void OnMessageRelay (DWORD Command, const void * sender, ::EventArgs_BUSMessage * arg);
- void OnBLOBRelay (DWORD Command, const void * sender, ::EventArgs_BUSBLOB * arg);
- protected:
- virtual bool RelayMessage (DWORD Command, const void * sender, ::EventArgs_BUSMessage * arg) { return false; }
- virtual bool RelayBLOB (DWORD Command, const void * sender, ::EventArgs_BUSBLOB * arg) { return false; }
- virtual void OnMessageNoResponse (const void * sender, ::EventArgs_BUSMessage * arg);
- virtual void OnBLOBNoResponse (const void * sender, ::EventArgs_BUSBLOB * arg);
- public:
- BUSDelegate OnMessage;
- BUSDelegate OnBLOB;
- };
- //-----------------------------------------------------------------------------
- // 单端口/固定端口的接收器
- //-----------------------------------------------------------------------------
- class _ServiceBus_API FixedMessageReceiver : public MessageReceiver
- {
- public:
- FixedMessageReceiver (int StatusPort, int NbOfChannel = 1)
- {
- m_StatusPort = StatusPort;
- m_NbOfChannel = NbOfChannel;
- }
- };
- class _ServiceBus_API FixedBLOBReceiver : public BLOBReceiver
- {
- public:
- FixedBLOBReceiver (int StatusPort, int NbOfChannel = 1)
- {
- m_StatusPort = StatusPort;
- m_NbOfChannel = NbOfChannel;
- }
- };
- }
- }
- };
|