// // Copyright (c) 2013-2024 The SRS Authors // // SPDX-License-Identifier: MIT // #ifndef SRS_PROTOCOL_CONN_HPP #define SRS_PROTOCOL_CONN_HPP #include #include #include // The resource managed by ISrsResourceManager. class ISrsResource { public: ISrsResource(); virtual ~ISrsResource(); public: // Get the context id of connection. virtual const SrsContextId& get_id() = 0; public: // The resource description, optional. virtual std::string desc(); }; // The manager for resource. class ISrsResourceManager { public: ISrsResourceManager(); virtual ~ISrsResourceManager(); public: // Remove then free the specified connection. Note that the manager always free c resource, // in the same coroutine or another coroutine. Some manager may support add c to a map, it // should always free it even if it's in the map. virtual void remove(ISrsResource* c) = 0; }; // The connection interface for all HTTP/RTMP/RTSP object. class ISrsConnection : public ISrsResource { public: ISrsConnection(); virtual ~ISrsConnection(); public: // Get remote ip address. virtual std::string remote_ip() = 0; }; #endif