MARS
- comm: common library, including socket, thread, message queue, coroutine, etc.
- Xlog: a reliable log component with high-performance.
- SDT: a network detection component.
- STN: a signaling network component, the major part of Mars.
逻辑
//callback interface
class Callback
{
public:
virtual ~Callback() {}
virtual bool MakesureAuthed(const std::string& _host) = 0;
//流量统计
virtual void TrafficData(ssize_t _send, ssize_t _recv) = 0;
//底层询问上层该host对应的ip列表
virtual std::vector<std::string> OnNewDns(const std::string& host) = 0;
//网络层收到push消息回调
virtual void OnPush(uint64_t _channel_id, uint32_t _cmdid, uint32_t _taskid, const AutoBuffer& _body, const AutoBuffer& _extend) = 0;
//底层获取task要发送的数据
virtual bool Req2Buf(uint32_t _taskid, void* const _user_context, AutoBuffer& outbuffer, AutoBuffer& extend, int& error_code, const int channel_select, const std::string& host) = 0;
//底层回包返回给上层解析
virtual int Buf2Resp(uint32_t _taskid, void* const _user_context, const AutoBuffer& _inbuffer, const AutoBuffer& _extend, int& _error_code, const int _channel_select) = 0;
//任务执行结束
virtual int OnTaskEnd(uint32_t _taskid, void* const _user_context, int _error_type, int _error_code) = 0;
//上报网络连接状态
virtual void ReportConnectStatus(int _status, int _longlink_status) = 0;
virtual void OnLongLinkNetworkError(ErrCmdType _err_type, int _err_code, const std::string& _ip, uint16_t _port) {}
virtual void OnShortLinkNetworkError(ErrCmdType _err_type, int _err_code, const std::string& _ip, const std::string& _host, uint16_t _port) {}
virtual void OnLongLinkStatusChange(int _status) {}
//长连信令校验 ECHECK_NOW = 0, ECHECK_NEXT = 1, ECHECK_NEVER = 2
virtual int GetLonglinkIdentifyCheckBuffer(AutoBuffer& _identify_buffer, AutoBuffer& _buffer_hash, int32_t& _cmdid) = 0;
//长连信令校验回包
virtual bool OnLonglinkIdentifyResponse(const AutoBuffer& _response_buffer, const AutoBuffer& _identify_buffer_hash) = 0;
virtual void RequestSync() = 0;
//验证是否已登录
};
void SetCallback(Callback* const callback);