| 2027 | } |
| 2028 | |
| 2029 | bool RtmpChunkStream::OnSetBufferLength(const RtmpMessageHeader& mh, |
| 2030 | const butil::StringPiece& event_data, |
| 2031 | Socket* socket) { |
| 2032 | RtmpService* service = connection_context()->service(); |
| 2033 | if (service == NULL) { |
| 2034 | RTMP_ERROR(socket, mh) << "Client should not receive `SetBufferLength'"; |
| 2035 | return false; |
| 2036 | } |
| 2037 | if (event_data.size() != 8) { |
| 2038 | RTMP_ERROR(socket, mh) << "Invalid SetBufferLength.event_data.size=" |
| 2039 | << event_data.size(); |
| 2040 | return false; |
| 2041 | } |
| 2042 | const uint32_t stream_id = ReadBigEndian4Bytes(event_data.data()); |
| 2043 | const uint32_t bl_ms = ReadBigEndian4Bytes(event_data.data() + 4); |
| 2044 | RPC_VLOG << socket->remote_side() << "[" << mh.stream_id |
| 2045 | << "] SetBufferLength{stream_id=" << stream_id |
| 2046 | << " buffer_length_ms=" << bl_ms << '}'; |
| 2047 | if (stream_id == RTMP_CONTROL_MESSAGE_STREAM_ID) { |
| 2048 | // Ignore SetBufferSize for control stream. |
| 2049 | return true; |
| 2050 | } |
| 2051 | butil::intrusive_ptr<RtmpStreamBase> stream; |
| 2052 | if (!connection_context()->FindMessageStream(stream_id, &stream)) { |
| 2053 | RTMP_WARNING(socket, mh) << "Fail to find stream_id=" << stream_id; |
| 2054 | return false; |
| 2055 | } |
| 2056 | static_cast<RtmpServerStream*>(stream.get())->OnSetBufferLength(bl_ms); |
| 2057 | return true; |
| 2058 | } |
| 2059 | |
| 2060 | bool RtmpChunkStream::OnPingRequest(const RtmpMessageHeader& mh, |
| 2061 | const butil::StringPiece& event_data, |
nothing calls this directly
no test coverage detected