public DataChunk(byte flags, int length, ByteBuffer pkt) : base(ChunkType.DATA, flags, length, pkt) { //logger.LogDebug("read in chunk header " + length); //logger.LogDebug("body remaining " + _body.remaining()); if (_body.remaining() >= 12) { _tsn = _body.GetUInt(); _streamId = _body.GetUShort(); _sSeqNo = _body.GetUShort(); _ppid = _body.GetInt(); //logger.LogDebug(" _tsn : " + _tsn // + " _streamId : " + _streamId // + " _sSeqNo : " + _sSeqNo // + " _ppid : " + _ppid); //logger.LogDebug("data size remaining " + _body.remaining()); switch (_ppid) { case WEBRTCCONTROL: ByteBuffer bb = _body.slice(); try { _open = new DataChannelOpen(bb); } catch (InvalidDataChunkException ex) { _invalid = ex; } //logger.LogDebug("Got an DCEP " + _open); break; case WEBRTCstring: // what format is a string ? _data = new byte[_body.remaining()]; _body.GetBytes(_data, _data.Length); _dataOffset = 0; _dataLength = _data.Length; //logger.LogDebug("string data is " + Encoding.ASCII.GetString(_data)); break; case WEBRTCBINARY: _data = new byte[_body.remaining()]; _body.GetBytes(_data, _data.Length); _dataOffset = 0; _dataLength = _data.Length; //logger.LogDebug("data is " + Packet.getHex(_data)); break; default: logger.LogWarning($"Invalid payload protocol identifier Id in data chunk, ppid {_ppid}."); _invalid = new InvalidDataChunkException( $"Invalid payload protocol identifier in data chunk, ppid {_ppid}."); break; } } }
public DataChunk(CType type, byte flags, int length, ByteBuffer pkt) : base(type, flags, length, pkt) { Logger.Debug("read in chunk header " + length); Logger.Debug("body remaining " + _body.remaining()); if (_body.remaining() >= 12) { _tsn = _body.GetUInt(); _streamId = _body.GetUShort(); _sSeqNo = _body.GetUShort(); _ppid = _body.GetInt(); Logger.Debug(" _tsn : " + _tsn + " _streamId : " + _streamId + " _sSeqNo : " + _sSeqNo + " _ppid : " + _ppid); Logger.Debug("data size remaining " + _body.remaining()); switch (_ppid) { case WEBRTCCONTROL: ByteBuffer bb = _body.slice(); try { _open = new DCOpen(bb); } catch (InvalidDataChunkException ex) { _invalid = ex; } Logger.Trace("Got an DCEP " + _open); break; case WEBRTCstring: // what format is a string ? _data = new byte[_body.remaining()]; _body.GetBytes(_data, _data.Length); _dataOffset = 0; _dataLength = _data.Length; Logger.Trace("string data is " + Encoding.ASCII.GetString(_data)); break; case WEBRTCBINARY: _data = new byte[_body.remaining()]; _body.GetBytes(_data, _data.Length); _dataOffset = 0; _dataLength = _data.Length; Logger.Trace("data is " + Packet.getHex(_data)); break; default: _invalid = new InvalidDataChunkException("Invalid Protocol Id in data Chunk " + _ppid); break; } } }