23 Star 37 Fork 11

stallion5632 / message_bus

Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

message_bus

  • 该模块一般用在客户端;
  • 基于消息的程序架构(如C/S架构),在发送一个request消息后可能会遇到这样的情况:
    • 等到response消息,其中response分为肯定回答和否定回答;
    • 在超时时间内没有收到回复。

业务往往需要等到响应结果以后再继续其他业务,设计方法是:采用回调的方法调用响应函数,维护一个定时器,不停检查是否有超时消息产生,并调用对应回调函数。

  • 需要使用到定时器,定时器默认间隔100ms。

  • 维护了一个超时消息的列表。

主要结构体

typedef std::function<void(std::string param1, int param2)> Callback_t;
typedef std::function<void()> TimeOutCallback_t;
struct CallbackItem_t
{
    Callback_t callback = nullptr;  
    TimeOutCallback_t timeOutCallback = nullptr;
    uint32_t timeoutInterval = 1000;    // 超时时间,milliseconds
    uint64_t timeoutStamp = 0;  // 内部使用时间戳,用户无需填写,microseconds
    std::vector<int> msgNumVec; // 需要关注的消息号
    CallbackType_t callbackType = ALWAYS;
};
typedef std::shared_ptr<CallbackItem_t> CallbackItem_ptr;
typedef std::map<int, std::vector<CallbackItem_ptr>> CallbackMap_t;
CallbackMap_t _callbackMap;   // message dispatch map
std::list<CallbackItem_ptr> _timeoutCheckList;	// timeout check list

Comments ( 0 )

Sign in for post a comment

About

一个消息总线模块:当收到等待的消息时,调用回调函数;当在规定时间内没收到时,调用超时响应函数。 expand collapse
C++ and 2 more languages
MIT
Cancel

Releases

No release

message_bus

Contributors

All

Activities

load more
can not load any more
C++
1
https://gitee.com/liudegui/message_bus.git
git@gitee.com:liudegui/message_bus.git
liudegui
message_bus
message_bus
master

Search