Beispiel #1
0
 void EventSource_OnPingReq(object sender, PingEventArgs e)
 {
     if (Client is RemoteClient)
     {
         Client.SendPingResp(e.Value);
     }
 }
Beispiel #2
0
 private static void Con_PingEvent(object sender, PingEventArgs e)
 {
     if (isConnected)
     {
         Console.WriteLine("Ping is " + e.PingReply.RoundtripTime + " ms");
     }
 }
Beispiel #3
0
 /// <summary>
 ///   A k-bucket is full!
 /// </summary>
 /// <remarks>
 ///  Currently this just removes the oldest contact from the list,
 ///  without acutally pinging the individual peers.
 ///
 ///  This is the same as go does, but should probably
 ///  be upgraded to actually ping the individual peers.
 /// </remarks>
 private void Peers_Ping(object sender, PingEventArgs <RoutingPeer> e)
 {
     if (_peers.Remove(e.Oldest.First()))
     {
         _peers.Add(e.Newest);
     }
 }
Beispiel #4
0
 internal void HandleOnPing(object sender, PingEventArgs e)
 {
     if (OnPing != null)
     {
         OnPing(this, e);
     }
 }
Beispiel #5
0
 void EventSource_OnPingResp(object sender, PingEventArgs e)
 {
     Dispatcher.BeginInvoke(new Action(() =>
     {
         txtPing.Text = string.Format("{0}ms", e.Value);
     }));
 }
Beispiel #6
0
        protected virtual void OnPingRequest(PingEventArgs e)
        {
            EventHandler <PingEventArgs> handler = PingRequest;

            if (handler != null)
            {
                handler(this, e);
            }
        }
 public static bool OnPing(object sender, PingEventArgs e)
 {
     _ping = true;
     ++_pingCount;
     return(true);
 }
Beispiel #8
0
 private void OnPing(object sender, PingEventArgs e)
 {
     Console.WriteLine("Responded to ping at {0}.",
                       DateTime.Now.ToShortTimeString());
 }
Beispiel #9
0
 private void FrameBuilder_OnPing(object sender, PingEventArgs e)
 {
     base.OnPing(e.Payload);
 }
 public bool WhatClubDoYouUsePingAhGood (object sender, PingEventArgs e) 
 {
     _ping = true;
     return true;
 }
 public void PluginsOnPing(object sender, PingEventArgs e)
 {
     OnPing(this, e);
 }
Beispiel #12
0
 /// <summary>
 /// Called when [pong].
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="args">The <see cref="T:PWebSocketServer.Common.Events.PingEventArgs" /> instance containing the event data.</param>
 public virtual void OnPong(IWebSocketConnection sender, PingEventArgs args)
 {
 }
 private bool OnPing (object sender, PingEventArgs e) 
 {
     _ping = true;
     ++_pingCount;
     return true;
 }
 private bool OnPing(object sender, PingEventArgs e)
 {
     _ping = true;
     ++_pingCount;
     return(true);
 }
Beispiel #15
0
 //Handlers chargé d'effectuer une action à chaque fois que twitch vérifie que nous sommes bien connectés
 void OnPing(object sender, PingEventArgs e)
 {
     SendAdminMessage("Responded to ping at {0}." + DateTime.Now.ToShortTimeString());
 }
 private void Handler_OnPing(object sender, PingEventArgs pingdata)
 {
     //m_Handler.P//throw new NotImplementedException();
 }
 void EventSource_OnPingReq(object sender, PingEventArgs e)
 {
     if (Client is RemoteClient)
         Client.SendPingResp(e.Value);
 }
Beispiel #18
0
        public void StartPing(object argument)
        {
            if (IsOffline())
                return;

            IPAddress ip = (IPAddress)argument;

            //set options ttl=128 and no fragmentation
            PingOptions options = new PingOptions(128, true);

            //create a Ping object
            Ping ping = new Ping();

            //32 empty bytes buffer
            byte[] data = new byte[32];

            int received = 0;
            List<long> responseTimes = new List<long>();

            string resp = string.Empty;

            //ping 4 times
            for (int i = 0; i < 4; i++)
            {
                PingReply reply = ping.Send(ip, 1000, data, options);

                if (reply != null)
                {
                    switch (reply.Status)
                    {
                        case IPStatus.Success:
                            resp = "Reply from " + reply.Address + ": bytes=" + reply.Buffer.Length + " time=" + reply.RoundtripTime + "ms TTL=" + reply.Options.Ttl;
                            PingEventArgs pe = new PingEventArgs(resp);
                            Change(this, pe);
                            received++;
                            responseTimes.Add(reply.RoundtripTime);
                            break;
                        case IPStatus.TimedOut:
                            pe = new PingEventArgs("Request timed out.");
                            Change(this, pe);
                            break;
                        default:
                            pe = new PingEventArgs("Ping failed " + reply.Status.ToString());
                            Change(this, pe);
                            break;
                    }
                }
                else
                {
                    PingEventArgs pe = new PingEventArgs("Ping failed for an unknown reason");
                    Change(this, pe);
                }

                reply = null;
            }

            ping.Dispose();

            //statistics calculations
            long averageTime = -1;
            long minimumTime = 0;
            long maximumTime = 0;

            for (int i = 0; i < responseTimes.Count; i++)
            {
                if (i == 0)
                {
                    minimumTime = responseTimes[i];
                    maximumTime = responseTimes[i];
                }
                else
                {
                    if (responseTimes[i] > maximumTime)
                    {
                        maximumTime = responseTimes[i];
                    }
                    if (responseTimes[i] < minimumTime)
                    {
                        minimumTime = responseTimes[i];
                    }
                }
                averageTime += responseTimes[i];
            }

            StringBuilder statistics = new StringBuilder();
            statistics.AppendLine();
            statistics.AppendLine();
            statistics.AppendFormat("Ping statistics for {0}:", ip.ToString());
            statistics.AppendLine();
            statistics.AppendFormat("   Packets: Sent = 4, " +
                "Received = {0}, Lost = {1} <{2}% loss>,",
                received, 4 - received, Convert.ToInt32(((4 - received) * 100) / 4));
            statistics.AppendLine();
            statistics.AppendLine();

            //show only if loss is not 100%
            if (averageTime != -1)
            {
                statistics.Append("Approximate round trip times in milli-seconds:");
                statistics.AppendLine();
                statistics.AppendFormat("    Minimum = {0}ms, " +
                    "Maximum = {1}ms, Average = {2}ms",
                    minimumTime, maximumTime, (long)(averageTime / received));
            }

            PingEventArgs pes = new PingEventArgs(statistics.ToString());
            Change(this, pes);
        }
 public void OnPingUpdate(object sender, PingEventArgs latest)
 {
     RobotState.SetPingDistance(latest.Distance);
 }
Beispiel #20
0
        private async void ReceiverLoop(object obj)
        {
            WebSocketReceiveResult r;
            var buffer        = new byte[ReceiveChunkSize];
            var bufferSegment = new ArraySegment <byte>(buffer);



            pingRequestDeadline = Environment.TickCount + (int)PingInterval.TotalMilliseconds;
            pongTimeoutDeadline = Environment.TickCount + (int)PingTimeout.TotalMilliseconds;
            Task <WebSocketReceiveResult> tReceive = null;
            Task tPing = null;

            while (_socket.State == WebSocketState.Open)
            {
                try
                {
                    if (tReceive == null)
                    {
                        tReceive = _socket.ReceiveAsync(bufferSegment, CancellationToken.None);
                    }
                }
                catch (ObjectDisposedException)
                {
                    break;
                }
                if (tPing == null)
                {
                    tPing = Task.Delay(Math.Max(0, Math.Min(pingRequestDeadline - Environment.TickCount, pongTimeoutDeadline - Environment.TickCount)));
                }

                var t = await Task.WhenAny(tReceive, tPing);

                if (t == tReceive)
                {
                    try
                    {
                        r        = await tReceive;
                        tReceive = null;
                    }
                    catch (WebSocketException)
                    {
                        // Disconnection?
                        break;
                    }

                    switch (r.MessageType)
                    {
                    case WebSocketMessageType.Text:
                        if (r.Count > 0)
                        {
                            // Defalut engine.io protocol
                            switch (buffer[0])
                            {
                            case (byte)'3':         // Server Pong
                                pongTimeoutDeadline = Environment.TickCount + (int)PingTimeout.TotalMilliseconds;
                                PingEventArgs pingArgs = new PingEventArgs(pingRequestAt, Environment.TickCount);
                                OnPing?.Invoke(pingArgs);
                                break;

                            case (byte)'4':         // Message
                                if (r.Count > 1)
                                {
                                    // Defalut socket.io protocol
                                    switch (buffer[1])
                                    {               // Ignore All of them. it's just for understanding !
                                    case (byte)'0': // Connect
                                    case (byte)'1': // Disconnect
                                        // Ignored
                                        break;

                                    case (byte)'2':             // Event
                                    case (byte)'3':             // Ack
                                    case (byte)'4':             // Error
                                    case (byte)'5':             // Binary_Event
                                    case (byte)'6':             // Binary_Ack
                                        // Ignored
                                        break;
                                    }
                                }

                                // Listen to message
                                var    builder = new StringBuilder();
                                string str     = Encoding.UTF8.GetString(buffer, 0, r.Count);
                                builder.Append(str);

                                while (!r.EndOfMessage)
                                {
                                    r = await _socket.ReceiveAsync(new ArraySegment <byte>(buffer), _tokenSource.Token);

                                    str = Encoding.UTF8.GetString(buffer, 0, r.Count);
                                    builder.Append(str);
                                }

                                var parser = new ResponseTextParser(_namespace, this)
                                {
                                    Text = builder.ToString()
                                };
                                await parser.ParseAsync();


                                break;
                            }
                        }

                        break;

                    case WebSocketMessageType.Binary:
                    case WebSocketMessageType.Close:
                    default:
                        // Nothing to handle
                        break;
                    }
                }
                else
                {
                    if (Environment.TickCount - pingRequestDeadline >= 0)
                    {
                        if (Interlocked.CompareExchange(ref pingRequest, 1, 0) == 0)
                        {
                            pingRequest = 1;
                            WakeSenderLoop();
                            pingRequestDeadline = Environment.TickCount + (int)PingInterval.TotalMilliseconds;
                            pongTimeoutDeadline = Environment.TickCount + (int)PingTimeout.TotalMilliseconds;
                        }
                    }
                    if (Environment.TickCount - pongTimeoutDeadline >= 0)
                    {
                        // Ping timeout
                        try
                        {
                            await _socket.CloseAsync(WebSocketCloseStatus.EndpointUnavailable, "Ping timeout", CancellationToken.None);
                        }
                        catch (WebSocketException) { }
                        catch (ObjectDisposedException) { }
                        break;
                    }
                }
            }

            serverCloseReason = ServerCloseReason.SocketAborted;
            await CloseAsync();
        }
 protected virtual void OnPing(PingEventArgs e)
 {
     CanPong = true;
 }
Beispiel #22
0
        private bool IsOffline()
        {
            ConnectionState flags = 0;
            InternetGetConnectedState(ref flags, 0);

            //bool isConnected = InternetGetConnectedState(ref flags, 0);
            //bool isConfigured = (flags & ConnectionState.INTERNET_CONNECTION_CONFIGURED) != 0;
            //bool isOffline = (flags & ConnectionState.INTERNET_CONNECTION_OFFLINE) != 0;
            //bool isConnectedUsingModem = (flags & ConnectionState.INTERNET_CONNECTION_MODEM) != 0;
            //bool isConnectedUsingLAN = (flags & ConnectionState.INTERNET_CONNECTION_LAN) != 0;
            //bool isProxyUsed = (flags & ConnectionState.INTERNET_CONNECTION_PROXY) != 0;
            //bool isRasEnabled = (flags & ConnectionState.INTERNET_RAS_INSTALLED) != 0;

            if (((int)ConnectionState.INTERNET_CONNECTION_OFFLINE & (int)flags) != 0)
            {
                PingEventArgs pes = new PingEventArgs("No internet connection detected.");
                Change(this, pes);
                return true;
            }

            return false;
        }
 void EventSource_OnPingResp(object sender, PingEventArgs e)
 {
     Dispatcher.BeginInvoke(new Action(() =>
     {
         txtPing.Text = string.Format("{0}ms", e.Value);
     }));
 }
Beispiel #24
0
        private void WebsocketPacketHandler_SocketMessageReceived(List <Packet> packets)
        {
            // Server may send more than one packet.
            // -------------------------------------
            foreach (var packet in packets)
            {
                if (packet.Header == ConnectionAcceptedPacket.ToString())
                {
                    if (packet.Data == null)
                    {
                        throw new Exception("Invalid packet received, packet data is null.");
                    }

                    SendPacket(new ClientInfoPacket(false, UserAgent, packet.Data["hash"].ToString(), 0, false));
                    SendPacket(new OpenAcknowledgedPacket());

                    var eventArgs = new ConnectionAcceptedEventArgs(packet.Data["conn_id"].ToString(), packet.Data["hash"].ToString());
                    ConnectionAccepted?.Invoke(this, eventArgs);
                    continue;
                }

                if (packet.Header == ConversationEndedPacket.ToString())
                {
                    // Unusual behavior, server sends "convended" without any data
                    // if "flag stranger" packet is sent and no conversation have
                    // been started before.
                    //
                    // Hence, we have to handle it like this.
                    // -----------------------------------------------------------
                    IsStrangerConnected = false;
                    if (packet.Data != null)
                    {
                        var di        = new DisconnectInfo(true, int.Parse(packet.Data.ToString()));
                        var eventArgs = new ConversationEndedEventArgs(di);

                        ConversationEnded?.Invoke(this, eventArgs);
                    }
                    else
                    {
                        var di        = new DisconnectInfo(true, -1);
                        var eventArgs = new ConversationEndedEventArgs(di);

                        ConversationEnded?.Invoke(this, eventArgs);
                    }
                    continue;
                }

                if (packet.Header == StrangerDisconnectedPacket.ToString())
                {
                    if (CurrentCID != packet.Data.ToString() && EncounteredClientIDs.Contains(packet.Data.ToString()))
                    {
                        EncounteredClientIDs.Remove(packet.Data.ToString());
                        continue;
                    }

                    IsStrangerConnected = false;

                    if (packet.Data == null)
                    {
                        throw new Exception("Invalid packet received, packet data is null.");
                    }

                    var di        = new DisconnectInfo(false, int.Parse(packet.Data.ToString()));
                    var eventArgs = new ConversationEndedEventArgs(di);

                    ConversationEnded?.Invoke(this, eventArgs);
                    continue;
                }

                if (packet.Header == MessageReceivedPacket.ToString())
                {
                    if (packet.Data == null)
                    {
                        throw new Exception("Invalid packet received, packet data is null.");
                    }

                    int postId = -1;
                    if (packet.AdditionalFields.ContainsKey("post_id"))
                    {
                        postId = int.Parse(packet.AdditionalFields["post_id"].ToString());
                    }

                    var message = new Message(
                        packet.Data["msg"].ToString(),
                        int.Parse(packet.Data["cid"].ToString()),
                        postId,
                        MessageType.Chat
                        );
                    var eventArgs = new MessageEventArgs(message);
                    MessageReceived?.Invoke(this, eventArgs);
                    continue;
                }

                if (packet.Header == OnlinePeopleCountPacket.ToString())
                {
                    if (packet.Data == null)
                    {
                        throw new Exception("Invalid packet received, packet data is null.");
                    }

                    int number;
                    if (!int.TryParse(packet.Data.ToString(), out number))
                    {
                        number = -1;
                    }

                    var eventArgs = new OnlineCountEventArgs(number);
                    OnlinePeopleCountChanged?.Invoke(this, eventArgs);
                    continue;
                }

                if (packet.Header == PingPacket.ToString())
                {
                    if (KeepAlive)
                    {
                        PongResponse();
                    }

                    var eventArgs = new PingEventArgs(DateTime.Now);
                    PingReceived?.Invoke(this, eventArgs);
                    continue;
                }

                if (packet.Header == RandomTopicReceivedPacket.ToString())
                {
                    if (packet.Data == null)
                    {
                        throw new Exception("Invalid packet received, packet data is null.");
                    }

                    var message = new Message(
                        packet.Data["topic"].ToString(),
                        int.Parse(packet.Data["cid"].ToString()),
                        int.Parse(packet.AdditionalFields["post_id"].ToString()),
                        MessageType.Topic
                        );
                    var eventArgs = new MessageEventArgs(message);
                    MessageReceived?.Invoke(this, eventArgs);
                    continue;
                }

                if (packet.Header == ServiceMessageReceivedPacket.ToString())
                {
                    if (packet.Data == null)
                    {
                        throw new Exception("Invalid packet received, packet data is null.");
                    }

                    var message   = new Message(packet.Data.ToString(), -1, -1, MessageType.Service);
                    var eventArgs = new MessageEventArgs(message);
                    MessageReceived?.Invoke(this, eventArgs);
                    continue;
                }

                if (packet.Header == StrangerChatstatePacket.ToString())
                {
                    if (packet.Data == null)
                    {
                        throw new Exception("Invalid packet received, packet data is null.");
                    }

                    bool writing;
                    if (!bool.TryParse(packet.Data.ToString(), out writing))
                    {
                        writing = false;
                    }

                    var chatState = writing ? ChatState.Writing : ChatState.Idle;
                    var eventArgs = new ChatstateEventArgs(chatState);

                    StrangerChatstateChanged?.Invoke(this, eventArgs);
                    continue;
                }

                if (packet.Header == StrangerFoundPacket.ToString())
                {
                    if (packet.Data == null)
                    {
                        throw new Exception("Invalid packet received, packet data is null.");
                    }

                    CurrentContactUID = packet.Data["ckey"].ToString();

                    SendPacket(new ConversationStartAcknowledged(CurrentContactUID));
                    ActionID++;

                    EncounteredClientIDs.Add(packet.Data["cid"].ToString());

                    IsSearchingForStranger = false;
                    IsStrangerConnected    = true;

                    var si = new StrangerInfo(
                        int.Parse(packet.Data["cid"].ToString()),
                        packet.Data["ckey"].ToString(),
                        bool.Parse(packet.Data["flaged"].ToString()),
                        packet.Data["info"]
                        );

                    var eventArgs = new StrangerFoundEventArgs(si);
                    StrangerFound?.Invoke(this, eventArgs);
                }
            }
        }
 public bool WhatClubDoYouUsePingAhGood(object sender, PingEventArgs e)
 {
     _ping = true;
     return(true);
 }
Beispiel #26
0
        private void ping_ChangeTimer(object sender, PingEventArgs pa)
        {
            //if (this.IsHandleCreated)
            //{
                BeginInvoke(new MethodInvoker(delegate()
                {
                    if (pa.Message().Contains("Approximate round trip times in milli-seconds"))
                    {
                        string[] ltimes = pa.Message().Split(new Char[] { '=' });
                        int enrs = ltimes.Length;

                        string lval = ltimes[enrs - 1].Trim();
                        label12.Text = "Latency: " + lval;

                        try
                        {
                            if (lval.Contains("ms"))
                            {
                                string valg = lval.Substring(0, lval.Length - 2);
                                double dvalg = Convert.ToDouble(valg, CultureInfo.CurrentCulture);

                                dataChart3.UpdateChart(dvalg);
                            }
                        }
                        catch { ; }
                    }
                }));
            //}
        }
 public static bool OnPing (object sender, PingEventArgs e) {
     _ping = true;
     ++_pingCount;
     return true;
 }
Beispiel #28
0
 private void ping_Change(object sender, PingEventArgs pa)
 {
     BeginInvoke(new MethodInvoker(delegate()
     {
         rtBox1.Text += "\n" + pa.Message();
     }));
 }