mars 未完待续

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);
发布了664 篇原创文章 · 获赞 55 · 访问量 217万+

猜你喜欢

转载自blog.csdn.net/commshare/article/details/103683243