正在显示
2 个修改的文件
包含
78 行增加
和
10 行删除
| @@ -23,6 +23,22 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -23,6 +23,22 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 23 | 23 | ||
| 24 | #include <srs_protocol_io.hpp> | 24 | #include <srs_protocol_io.hpp> |
| 25 | 25 | ||
| 26 | +ISrsBufferWriter::ISrsBufferWriter() | ||
| 27 | +{ | ||
| 28 | +} | ||
| 29 | + | ||
| 30 | +ISrsBufferWriter::~ISrsBufferWriter() | ||
| 31 | +{ | ||
| 32 | +} | ||
| 33 | + | ||
| 34 | +ISrsProtocolStatistic::ISrsProtocolStatistic() | ||
| 35 | +{ | ||
| 36 | +} | ||
| 37 | + | ||
| 38 | +ISrsProtocolStatistic::~ISrsProtocolStatistic() | ||
| 39 | +{ | ||
| 40 | +} | ||
| 41 | + | ||
| 26 | ISrsProtocolReader::ISrsProtocolReader() | 42 | ISrsProtocolReader::ISrsProtocolReader() |
| 27 | { | 43 | { |
| 28 | } | 44 | } |
| @@ -35,9 +35,62 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -35,9 +35,62 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 35 | #include <srs_kernel_buffer.hpp> | 35 | #include <srs_kernel_buffer.hpp> |
| 36 | 36 | ||
| 37 | /** | 37 | /** |
| 38 | +* the system io reader/writer architecture: | ||
| 39 | ++---------------+ +--------------------+ +---------------+ | ||
| 40 | +| IBufferReader | | IStatistic | | IBufferWriter | | ||
| 41 | ++---------------+ +--------------------+ +---------------+ | ||
| 42 | +| + read() | | + get_recv_bytes() | | + write() | | ||
| 43 | ++------+--------+ | + get_recv_bytes() | | + writev() | | ||
| 44 | + / \ +---+--------------+-+ +-------+-------+ | ||
| 45 | + | / \ / \ / \ | ||
| 46 | + | | | | | ||
| 47 | ++------+------------------+-+ +-----+----------------+--+ | ||
| 48 | +| IProtocolReader | | IProtocolWriter | | ||
| 49 | ++---------------------------+ +-------------------------+ | ||
| 50 | +| + readfully() | | + set_send_timeout() | | ||
| 51 | +| + set_recv_timeout() | +-------+-----------------+ | ||
| 52 | ++------------+--------------+ / \ | ||
| 53 | + / \ | | ||
| 54 | + | | | ||
| 55 | + +--+-----------------------------+-+ | ||
| 56 | + | IProtocolReaderWriter | | ||
| 57 | + +----------------------------------+ | ||
| 58 | + | + is_never_timeout() | | ||
| 59 | + +----------------------------------+ | ||
| 60 | +*/ | ||
| 61 | + | ||
| 62 | +/** | ||
| 63 | +* the writer for the buffer to write to whatever channel. | ||
| 64 | +*/ | ||
| 65 | +class ISrsBufferWriter | ||
| 66 | +{ | ||
| 67 | +public: | ||
| 68 | + ISrsBufferWriter(); | ||
| 69 | + virtual ~ISrsBufferWriter(); | ||
| 70 | +// for protocol | ||
| 71 | +public: | ||
| 72 | + virtual int write(void* buf, size_t size, ssize_t* nwrite) = 0; | ||
| 73 | + virtual int writev(const iovec *iov, int iov_size, ssize_t* nwrite) = 0; | ||
| 74 | +}; | ||
| 75 | + | ||
| 76 | +/** | ||
| 77 | +* get the statistic of channel. | ||
| 78 | +*/ | ||
| 79 | +class ISrsProtocolStatistic | ||
| 80 | +{ | ||
| 81 | +public: | ||
| 82 | + ISrsProtocolStatistic(); | ||
| 83 | + virtual ~ISrsProtocolStatistic(); | ||
| 84 | +// for protocol | ||
| 85 | +public: | ||
| 86 | + virtual int64_t get_recv_bytes() = 0; | ||
| 87 | + virtual int64_t get_send_bytes() = 0; | ||
| 88 | +}; | ||
| 89 | + | ||
| 90 | +/** | ||
| 38 | * the reader for the protocol to read from whatever channel. | 91 | * the reader for the protocol to read from whatever channel. |
| 39 | */ | 92 | */ |
| 40 | -class ISrsProtocolReader : public ISrsBufferReader | 93 | +class ISrsProtocolReader : public virtual ISrsBufferReader, public virtual ISrsProtocolStatistic |
| 41 | { | 94 | { |
| 42 | public: | 95 | public: |
| 43 | ISrsProtocolReader(); | 96 | ISrsProtocolReader(); |
| @@ -46,13 +99,15 @@ public: | @@ -46,13 +99,15 @@ public: | ||
| 46 | public: | 99 | public: |
| 47 | virtual void set_recv_timeout(int64_t timeout_us) = 0; | 100 | virtual void set_recv_timeout(int64_t timeout_us) = 0; |
| 48 | virtual int64_t get_recv_timeout() = 0; | 101 | virtual int64_t get_recv_timeout() = 0; |
| 49 | - virtual int64_t get_recv_bytes() = 0; | 102 | +// for handshake. |
| 103 | +public: | ||
| 104 | + virtual int read_fully(void* buf, size_t size, ssize_t* nread) = 0; | ||
| 50 | }; | 105 | }; |
| 51 | 106 | ||
| 52 | /** | 107 | /** |
| 53 | * the writer for the protocol to write to whatever channel. | 108 | * the writer for the protocol to write to whatever channel. |
| 54 | */ | 109 | */ |
| 55 | -class ISrsProtocolWriter | 110 | +class ISrsProtocolWriter : public virtual ISrsBufferWriter, public virtual ISrsProtocolStatistic |
| 56 | { | 111 | { |
| 57 | public: | 112 | public: |
| 58 | ISrsProtocolWriter(); | 113 | ISrsProtocolWriter(); |
| @@ -61,11 +116,12 @@ public: | @@ -61,11 +116,12 @@ public: | ||
| 61 | public: | 116 | public: |
| 62 | virtual void set_send_timeout(int64_t timeout_us) = 0; | 117 | virtual void set_send_timeout(int64_t timeout_us) = 0; |
| 63 | virtual int64_t get_send_timeout() = 0; | 118 | virtual int64_t get_send_timeout() = 0; |
| 64 | - virtual int64_t get_send_bytes() = 0; | ||
| 65 | - virtual int writev(const iovec *iov, int iov_size, ssize_t* nwrite) = 0; | ||
| 66 | }; | 119 | }; |
| 67 | 120 | ||
| 68 | -class ISrsProtocolReaderWriter : public ISrsProtocolReader, public ISrsProtocolWriter | 121 | +/** |
| 122 | +* the reader and writer. | ||
| 123 | +*/ | ||
| 124 | +class ISrsProtocolReaderWriter : public virtual ISrsProtocolReader, public virtual ISrsProtocolWriter | ||
| 69 | { | 125 | { |
| 70 | public: | 126 | public: |
| 71 | ISrsProtocolReaderWriter(); | 127 | ISrsProtocolReaderWriter(); |
| @@ -76,10 +132,6 @@ public: | @@ -76,10 +132,6 @@ public: | ||
| 76 | * whether the specified timeout_us is never timeout. | 132 | * whether the specified timeout_us is never timeout. |
| 77 | */ | 133 | */ |
| 78 | virtual bool is_never_timeout(int64_t timeout_us) = 0; | 134 | virtual bool is_never_timeout(int64_t timeout_us) = 0; |
| 79 | -// for handshake. | ||
| 80 | -public: | ||
| 81 | - virtual int read_fully(void* buf, size_t size, ssize_t* nread) = 0; | ||
| 82 | - virtual int write(void* buf, size_t size, ssize_t* nwrite) = 0; | ||
| 83 | }; | 135 | }; |
| 84 | 136 | ||
| 85 | #endif | 137 | #endif |
-
请 注册 或 登录 后发表评论