private void pingCompleted(object sender, PingCompletedEventArgs e) { if (!Global.IPAddresses.isCompleted) { lock (_lockObject) { Global.IPAddresses.Increment(); Ping ping = (Ping)sender; ping.SendPingAsync(Global.IPAddresses.Current, Timeout); } } else { OnComplete?.Invoke(); (sender as Ping).Dispose(); } if (e.Reply.Status == IPStatus.Success) { Insert(e.Reply); lock (_lockObject) { Global.IPAddresses.RepliedCount++; } OnPingReply?.Invoke(e.Reply, Global.IPAddresses.RepliedCount); } OnProgress?.Invoke(Global.IPAddresses.Current, Global.IPAddresses.PingedCount); }
private void HandleMessageUnsafe(NetworkMessage message, MessageEnvelope envelope) { // Logger.LogTrace($"Processing network message {message.MessageCase}"); if (envelope.PublicKey is null) { throw new InvalidOperationException(); } switch (message.MessageCase) { case NetworkMessage.MessageOneofCase.PingReply: OnPingReply?.Invoke(this, (message.PingReply, envelope.PublicKey)); break; case NetworkMessage.MessageOneofCase.SyncBlocksRequest: OnSyncBlocksRequest?.Invoke(this, (message.SyncBlocksRequest, SendTo(envelope.RemotePeer))); break; case NetworkMessage.MessageOneofCase.SyncBlocksReply: OnSyncBlocksReply?.Invoke(this, (message.SyncBlocksReply, envelope.PublicKey)); break; case NetworkMessage.MessageOneofCase.SyncPoolRequest: OnSyncPoolRequest?.Invoke(this, (message.SyncPoolRequest, SendTo(envelope.RemotePeer))); break; case NetworkMessage.MessageOneofCase.SyncPoolReply: OnSyncPoolReply?.Invoke(this, (message.SyncPoolReply, envelope.PublicKey)); break; case NetworkMessage.MessageOneofCase.Ack: break; case NetworkMessage.MessageOneofCase.ConsensusMessage: OnConsensusMessage?.Invoke(this, (message.ConsensusMessage, envelope.PublicKey)); break; default: throw new ArgumentOutOfRangeException(nameof(message), "Unable to resolve message type (" + message.MessageCase + ") from protobuf structure"); } }