Пример #1
0
 public void Parse(HandshakeExtension info)
 {
     if (info.Properties.ContainsKey("AckExpireTime"))
     {
         AckExpireTime = TimeSpan.FromMilliseconds(int.Parse(info.Properties["AckExpireTime"]));
     }
 }
Пример #2
0
        public HandshakeExtension CreateHandshakeInfo()
        {
            var frame = new HandshakeExtension(Name);

            frame.Properties.Add("AckExpireTime", AckExpireTime.TotalMilliseconds.ToString());
            return(frame);
        }
Пример #3
0
        public HandshakeExtension Negotiate(HandshakeExtension remoteEndPointExtension)
        {
            var frame = new HandshakeExtension(Name);

            if (remoteEndPointExtension.Properties.ContainsKey("AckExpireTime"))
            {
                var value = Math.Min(int.Parse(remoteEndPointExtension.Properties["AckExpireTime"]),
                                     AckExpireTime.TotalMilliseconds);
                frame.Properties.Add("AckExpireTime", value.ToString());
            }

            return(frame);
        }
Пример #4
0
        public IAckSender CreateAckSender(IConnection connection, byte extensionId, HandshakeExtension extProperties)
        {
            var msgsPerAck = MessagesPerAck;

            if (extProperties.Properties.ContainsKey("MessagesPerAck"))
            {
                msgsPerAck = int.Parse(extProperties.Properties["MessagesPerAck"]);
            }

            var expire = AckExpireTime;

            if (extProperties.Properties.ContainsKey("AckExpireTime"))
            {
                expire = TimeSpan.FromMilliseconds(int.Parse(extProperties.Properties["AckExpireTime"]));
            }

            return(new AckSender(connection, extensionId)
            {
                Threshold = msgsPerAck,
                TimeoutBeforeSendingAck = expire
            });
        }
Пример #5
0
 public void Parse(HandshakeExtension info)
 {
 }
Пример #6
0
 public HandshakeExtension Negotiate(HandshakeExtension remoteEndPointExtension)
 {
     return(new HandshakeExtension(Name));
 }
Пример #7
0
        public IAckReceiver CreateAckReceiver(IConnection connection, byte extensionId,
                                              Action <MessageFrame> deliverMessageMethod, HandshakeExtension extProperties)
        {
            var msgsPerAck = MessagesPerAck;

            if (extProperties.Properties.ContainsKey("MessagesPerAck"))
            {
                msgsPerAck = int.Parse(extProperties.Properties["MessagesPerAck"]);
            }

            var expire = AckExpireTime;

            if (extProperties.Properties.ContainsKey("AckExpireTime"))
            {
                expire = TimeSpan.FromMilliseconds(int.Parse(extProperties.Properties["AckExpireTime"]));
            }

            return(new AckReceiver(connection, deliverMessageMethod, MessagesPerAck)
            {
                TimeoutBeforeResendingMessage = expire.Add(TimeSpan.FromMilliseconds(20)) //for network latency
            });
        }
Пример #8
0
 public IAckSender CreateAckSender(IConnection connection, byte extensionId, HandshakeExtension extProperties)
 {
     return(new SingleAckSender(connection));
 }
Пример #9
0
        public IAckReceiver CreateAckReceiver(IConnection connection, byte extensionId,
                                              Action <MessageFrame> deliverMessageMethod, HandshakeExtension extProperties)
        {
            var receiver = new SingleAckReceiver(connection, deliverMessageMethod);

            if (extProperties.Properties.ContainsKey("AckExpireTime"))
            {
                var value = Math.Min(int.Parse(extProperties.Properties["AckExpireTime"]),
                                     AckExpireTime.TotalMilliseconds);
                receiver.AckTimeout = TimeSpan.FromMilliseconds(value);
            }
            return(receiver);
        }
 public void ConfigureUsingHandshake(HandshakeExtension frame)
 {
 }