示例#1
0
 public SetPeerBandwidthMessage(RTMPMessage x)
     : base(x)
 {
     using (var reader = new RTMPBinaryReader(new MemoryStream(x.Body))) {
         PeerBandwidth = reader.ReadUInt32();
         LimitType     = (PeerBandwidthLimitType)reader.ReadByte();
     }
 }
示例#2
0
        private static byte[] CreateBody(long bandwidth, PeerBandwidthLimitType limit_type)
        {
            var s = new MemoryStream();

            using (var writer = new RTMPBinaryWriter(s)) {
                writer.WriteUInt32(bandwidth);
                writer.Write((byte)limit_type);
            }
            return(s.ToArray());
        }
示例#3
0
        void OnSetPeerBandwidth(SetPeerBandwidthMessage msg)
        {
            switch (msg.LimitType)
            {
            case PeerBandwidthLimitType.Hard:
                sendWindowSize      = msg.PeerBandwidth;
                sendWindowLimitType = msg.LimitType;
                break;

            case PeerBandwidthLimitType.Soft:
                sendWindowSize      = Math.Min(sendWindowSize, msg.PeerBandwidth);
                sendWindowLimitType = msg.LimitType;
                break;

            case PeerBandwidthLimitType.Dynamic:
                if (sendWindowLimitType == PeerBandwidthLimitType.Hard)
                {
                    sendWindowSize      = msg.PeerBandwidth;
                    sendWindowLimitType = msg.LimitType;
                }
                break;
            }
        }
        private Task OnSetPeerBandwidth(SetPeerBandwidthMessage msg, CancellationToken cancel_token)
        {
            switch (msg.LimitType)
            {
            case PeerBandwidthLimitType.Hard:
                sendWindowSize      = msg.PeerBandwidth;
                sendWindowLimitType = msg.LimitType;
                break;

            case PeerBandwidthLimitType.Soft:
                sendWindowSize      = Math.Min(sendWindowSize, msg.PeerBandwidth);
                sendWindowLimitType = msg.LimitType;
                break;

            case PeerBandwidthLimitType.Dynamic:
                if (sendWindowLimitType == PeerBandwidthLimitType.Hard)
                {
                    sendWindowSize      = msg.PeerBandwidth;
                    sendWindowLimitType = msg.LimitType;
                }
                break;
            }
            return(Task.Delay(0));
        }
示例#5
0
 private static byte[] CreateBody(long bandwidth, PeerBandwidthLimitType limit_type)
 {
     var s = new MemoryStream();
       using (var writer=new RTMPBinaryWriter(s)) {
     writer.WriteUInt32(bandwidth);
     writer.Write((byte)limit_type);
       }
       return s.ToArray();
 }
示例#6
0
 public SetPeerBandwidthMessage(long timestamp, long stream_id, long bandwidth, PeerBandwidthLimitType limit_type)
     : base(RTMPMessageType.SetPeerBandwidth, timestamp, stream_id, CreateBody(bandwidth, limit_type))
 {
     PeerBandwidth = bandwidth;
 }
示例#7
0
 public SetPeerBandwidthMessage(RTMPMessage x)
   : base(x)
 {
   using (var reader=new RTMPBinaryReader(new MemoryStream(x.Body))) {
     PeerBandwidth = reader.ReadUInt32();
     LimitType = (PeerBandwidthLimitType)reader.ReadByte();
   }
 }
 private Task OnSetPeerBandwidth(SetPeerBandwidthMessage msg, CancellationToken cancel_token)
 {
   switch (msg.LimitType) {
   case PeerBandwidthLimitType.Hard:
     sendWindowSize = msg.PeerBandwidth;
     sendWindowLimitType = msg.LimitType;
     break;
   case PeerBandwidthLimitType.Soft:
     sendWindowSize = Math.Min(sendWindowSize, msg.PeerBandwidth);
     sendWindowLimitType = msg.LimitType;
     break;
   case PeerBandwidthLimitType.Dynamic:
     if (sendWindowLimitType==PeerBandwidthLimitType.Hard) {
       sendWindowSize = msg.PeerBandwidth;
       sendWindowLimitType = msg.LimitType;
     }
     break;
   }
   return Task.Delay(0);
 }
示例#9
0
		protected virtual async Task OnSetPeerBandwidth(SetPeerBandwidthMessage msg, CancellationToken cancel_token)
		{
			switch (msg.LimitType) {
			case PeerBandwidthLimitType.Hard:
				sendWindowSize = msg.PeerBandwidth;
				sendWindowLimitType = msg.LimitType;
				break;
			case PeerBandwidthLimitType.Soft:
				sendWindowSize = Math.Min(sendWindowSize, msg.PeerBandwidth);
				sendWindowLimitType = msg.LimitType;
				break;
			case PeerBandwidthLimitType.Dynamic:
				if (sendWindowLimitType==PeerBandwidthLimitType.Hard) {
					sendWindowSize = msg.PeerBandwidth;
					sendWindowLimitType = msg.LimitType;
				}
				break;
			}
		}
示例#10
0
 public PeerBandwidth(int acknowledgementWindowSize, byte type) : base(0U, PacketContentType.SetPeerBandwith)
 {
     AckWindowSize = acknowledgementWindowSize;
     LimitType     = (PeerBandwidthLimitType)type;
 }
示例#11
0
 public PeerBandwidth(int windowSize, PeerBandwidthLimitType type) : base(0U, PacketContentType.SetPeerBandwith)
 {
     AckWindowSize = windowSize;
     LimitType     = type;
 }
示例#12
0
 public SetPeerBandwidthMessage(long timestamp, long stream_id, long bandwidth, PeerBandwidthLimitType limit_type)
     : base(RTMPMessageType.SetPeerBandwidth, timestamp, stream_id, CreateBody(bandwidth, limit_type))
 {
     PeerBandwidth = bandwidth;
 }
 void OnSetPeerBandwidth(SetPeerBandwidthMessage msg)
 {
     switch (msg.LimitType) {
       case PeerBandwidthLimitType.Hard:
     sendWindowSize = msg.PeerBandwidth;
     sendWindowLimitType = msg.LimitType;
     break;
       case PeerBandwidthLimitType.Soft:
     sendWindowSize = Math.Min(sendWindowSize, msg.PeerBandwidth);
     sendWindowLimitType = msg.LimitType;
     break;
       case PeerBandwidthLimitType.Dynamic:
     if (sendWindowLimitType==PeerBandwidthLimitType.Hard) {
       sendWindowSize = msg.PeerBandwidth;
       sendWindowLimitType = msg.LimitType;
     }
     break;
       }
 }