/// <param name="socket">A socket to the remote host. This <see cref="AWSocket"/> /// instance owns the socket and will dispose of it.</param> /// <param name="messageHandler">Delegate that handles received message data. /// If null then no data will be received. The delegate is called in a background thread.</param> protected AWSocket(Socket socket, MessageHandler messageHandler) { if (socket == null) throw new ArgumentNullException("socket", "Null socket argument"); Application.ApplicationExit += ApplicationExitCallback; _socket = socket; _sendCache = new Dictionary<IPEndPoint, Tuple<SocketAsyncEventArgs, NetworkBinaryWriter>>(); ConfigureSocket(_socket); _messageHandler = messageHandler; Errors = new ThreadSafeWrapper<Queue<string>>(new Queue<string>()); if (messageHandler != null) StartReceiving(); }
public WebData(AssaultWingCore game, int updateOrder) : base(game, updateOrder) { LoginErrors = new ThreadSafeWrapper<Queue<string>>(new Queue<string>()); }
public NetworkEngine(AssaultWing game, int updateOrder) : base(game, updateOrder) { _game = game; GameClientConnections = new List<GameClientConnection>(); _removedClientConnections = new List<GameClientConnection>(); _udpMessagesToHandle = new ThreadSafeWrapper<List<Tuple<Message, IPEndPoint>>>(new List<Tuple<Message, IPEndPoint>>()); _managementServerConnectionCheckTimer = new AWTimer(() => _game.GameTime.TotalRealTime, TimeSpan.FromSeconds(10)) { SkipPastIntervals = true }; MessageHandlers = new List<MessageHandlerBase>(); InitializeUDPSocket(); }