#pragma once class UpStream; class LongSession; class DownStream { public: void Init(int socket_handle, std::weak_ptr up); int GetSocketHandle() const { return socket_handle_; } std::weak_ptr GetUpStream() const { return up_; } void ReBindUpStream(std::weak_ptr up); bool IsLongSession() { return is_long_session_; } void ProcCMMsg(f8::MsgHdr& hdr, int tag); void ForwardUpStreamMsg(f8::MsgHdr& hdr); void OnClose(); private: int socket_handle_ = a8::INVALID_SOCKET_HANDLE; std::weak_ptr up_; bool is_long_session_ = false; std::weak_ptr long_session_wp_; };