private static void SendPacket(StarNetPacket packet, IPEndPoint endPoint, EventHandler confirmation, Action timedOut) { var network = new InterNodeNetwork(new CryptoProvider(ServerKey)); network.Start(); var reset = new ManualResetEvent(false); DateTime sent = default(DateTime); packet.ConfirmationReceived += (sender, e) => { if (confirmation != null) { confirmation(sender, e); } reset.Set(); }; sent = DateTime.Now; network.Send(packet, endPoint); if (confirmation == null) { return; } if (!reset.WaitOne(10000)) { if (timedOut != null) { timedOut(); } } }
public StarNetNode(SharedDatabase database, LocalSettings settings, CryptoProvider crypto, IPEndPoint endpoint) { Settings = settings; Database = database; Listener = new TcpListener(endpoint); Clients = new List <StarboundClient>(); CryptoProvider = crypto; Network = new InterNodeNetwork(this, crypto); RegisterHandlers(); NextClientId = 0; HeartbeatTimer = new Timer(DoHeartbeats); }