public void run() { Logger.Debug("delegated message delivery from stream of type " + _stream.GetType().Name); byte[] data = _data; if (_li != null) { switch (_pPid) { case DataChunk.WEBRTCBINARYEMPTY: data = new byte[0]; goto case DataChunk.WEBRTCBINARY; case DataChunk.WEBRTCBINARY: if (typeof(SCTPByteStreamListener).IsAssignableFrom(_li.GetType())) { ((SCTPByteStreamListener)_li).onMessage(_stream, data); _delivered = true; } break; case DataChunk.WEBRTCstringEMPTY: data = new byte[0]; goto case DataChunk.WEBRTCstring; case DataChunk.WEBRTCstring: _li.onMessage(_stream, System.Text.Encoding.ASCII.GetString(_data)); _delivered = true; break; } } if (!_delivered) { Logger.Debug("Undelivered message to " + (_stream == null ? "null stream" : _stream.getLabel()) + " via " + (_li == null ? "null listener" : _li.GetType().Name) + " ppid is " + _pPid); } }
public void deliver(SCTPStream s, SortedArray <DataChunk> a, SCTPStreamListener l) { Logger.Debug("in deliver() for stream " + s.getLabel() + " with " + a.Count + " chunks. "); // strictly this should be looking at flags etc, and bundling the result into a message foreach (DataChunk dc in a) { if (dc.getDCEP() != null) { Logger.Debug("in deliver() for a DCEP message " + dc.getDataAsString()); } else { Logger.Debug("inbound data chunk is " + dc.ToString()); l.onMessage(s, dc.getDataAsString()); } } a.Clear(); }