public void deliver(SCTPStream s, SortedArray <DataChunk> a, SCTPStreamListener l)
 {
     logger.LogDebug("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.LogDebug("in deliver() for a DCEP message " + dc.getDataAsString());
         }
         else
         {
             logger.LogDebug("inbound data chunk is " + dc.ToString());
             l.onMessage(s, dc.getDataAsString());
         }
     }
     a.Clear();
 }
예제 #2
0
        public void run()
        {
            //logger.LogDebug("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;
                    }
                    else
                    {
                        _li.onDataMessage(_stream, _data);
                        _delivered = true;
                    }

                    break;

                case DataChunk.WEBRTCstringEMPTY:
                    data = new byte[0];
                    goto case DataChunk.WEBRTCstring;

                case DataChunk.WEBRTCstring:
                    _li.onMessage(_stream, Encoding.UTF8.GetString(_data));
                    _delivered = true;
                    break;
                }
            }

            if (!_delivered)
            {
                logger.LogDebug("Undelivered message to " + (_stream == null ? "null stream" : _stream.getLabel()) +
                                " via " + (_li == null ? "null listener" : _li.GetType().Name) + " ppid is " + _pPid);
            }
        }
예제 #3
0
 public Chunk[] respond(SCTPStream a)
 {
     logger.LogDebug("in respond() for a opened stream " + a.getLabel());
     return(null);
 }