Exemple #1
0
        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();
                }
            }
        }
Exemple #2
0
 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);
 }