private void HandleSynchronizePacket(SynchronizePacket packet) { if (!packet.Synced) { // when peer doesn't have a channel this is needed if (!Identity.IsSet) { Identity.Guid = packet.Guid; } var syncPacketOut = new SynchronizePacket { Guid = Identity.Guid, Timestamp = _initSyncDelay = DateTime.Now, Synced = false }; SendData(syncPacketOut, null, null); } else { PingDelay = (packet.Timestamp - _initSyncDelay).TotalMilliseconds; var syncPacketOut = new SynchronizePacket { Guid = Identity.Guid, Synced = true }; SendData(syncPacketOut, null, null); OnPeerSynchronized.Raise(this, new PeerEventArgs(this)); } }
private void HandleSynchronizePacket(SynchronizePacket packet) { if (!packet.Synced) { Client.Identity.Guid = packet.Guid; var syncPacket = new SynchronizePacket { Guid = Client.Identity.Guid, Timestamp = DateTime.Now, Synced = true }; Send(syncPacket); } else { IsSynchronized = true; _synchronizeHandle.Set(); } }
private void ConnectCallback(IAsyncResult res) { try { ChannelSocket.EndConnect(res); } catch { _synchronizeHandle.Set(); return; } Receive(); var syncPacket = new SynchronizePacket() { Guid = Client.Identity.Guid }; Send(syncPacket); }