internal void SendResponse() { if (!isDestroyed && Response != null && Response.Id > 0 && Session.GetConnection() != null) { //Logging.WriteLine("SENDED [" + Response.Id + "] => " + Response.ToString().Replace(Convert.ToChar(0).ToString(), "{char0}")); Session.GetConnection().SendData(Response.GetBytes()); } }
private void TestClientConnections() { try { DateTime startTaskTime; TimeSpan spentTime; startTaskTime = DateTime.Now; TimeSpan sinceLastTime = DateTime.Now - pingLastExecution; if (sinceLastTime.TotalMilliseconds >= pingInterval) { try { ServerMessage PingMessage = new ServerMessage(Outgoing.Ping); List<GameClient> ToPing = new List<GameClient>(); //List<GameClient> ToDisconnect = new List<GameClient>(); TimeSpan noise; TimeSpan sinceLastPing; foreach (GameClient client in clients.Values) { noise = DateTime.Now - pingLastExecution.AddMilliseconds(pingInterval); //For finding out if there is any lagg sinceLastPing = DateTime.Now - client.TimePingedReceived; if ((sinceLastPing.TotalMilliseconds - noise.TotalMilliseconds < pingInterval + 10000)) { ToPing.Add(client); } else { lock (timedOutConnections.SyncRoot) { timedOutConnections.Enqueue(client); } //ToDisconnect.Add(client); // pa ver los timeouts por si sale alguno mas por algun motivo Logging.WriteLine(client.ConnectionID + " => Connection timed out"); } } DateTime start = DateTime.Now; byte[] PingMessageBytes = PingMessage.GetBytes(); foreach (GameClient Client in ToPing) { try { Client.GetConnection().SendUnsafeData(PingMessageBytes); } catch { //Logging.LogCriticalException("Failed to send ping packet, possible fack up!"); //ToDisconnect.Add(Client); lock (timedOutConnections.SyncRoot) { timedOutConnections.Enqueue(Client); } } } TimeSpan spent = DateTime.Now - start; if (spent.TotalSeconds > 3) { Logging.WriteLine("Spent seconds on testing: " + (int)spent.TotalSeconds); } //start = DateTime.Now; //foreach (GameClient client in ToDisconnect) //{ // try // { // client.Disconnect(); // } // catch { } //} //spent = DateTime.Now - start; if (spent.TotalSeconds > 3) { Logging.WriteLine("Spent seconds on disconnecting: " + (int)spent.TotalSeconds); } //ToDisconnect.Clear(); //ToDisconnect = null; //ToPing.Clear(); //ToPing = null; } catch (Exception e) { Logging.LogThreadException(e.ToString(), "Connection checker task"); } pingLastExecution = DateTime.Now; } spentTime = DateTime.Now - startTaskTime; if (spentTime.TotalSeconds > 3) { Logging.WriteLine("GameClientManager.TestClientConnections spent: " + spentTime.TotalSeconds + " seconds in working."); } } catch (Exception e) { Logging.LogThreadException(e.ToString(), "GameClientManager.TestClientConnections Exception --> Not inclusive"); } }
internal void SendMessageToUsersWithRights(ServerMessage Message) { try { byte[] PacketData = Message.GetBytes(); foreach (RoomUnit unit in roomUserManager.UnitList.Values) { RoomUser user = unit as RoomUser; if (user == null) continue; GameClient UsersClient = user.GetClient(); if (UsersClient == null) continue; if (!CheckRights(UsersClient)) continue; try { UsersClient.GetConnection().SendData(PacketData); } catch (Exception e) { Logging.HandleException(e, "Room.SendMessageToUsersWithRights"); } //User.GetClient().SendMessage(Message); } } catch (Exception e) { Logging.HandleException(e, "Room.SendMessageToUsersWithRights"); } }
internal void SendMessage(ServerMessage Message) { try { if (Message == null) return; //Logging.WriteLine("Sended message to all people: " + FirewindEnvironment.GetDefaultEncoding().GetString(Message.GetBytes()).Replace(Convert.ToChar(0).ToString(), "{char0}")); byte[] PacketData = Message.GetBytes(); lock (roomServerMessages.SyncRoot) { roomServerMessages.Enqueue(PacketData); } } catch (InvalidOperationException e) { Logging.HandleException(e, "Room.SendMessage"); } }
internal void QueueRoomMessage(ServerMessage message) { lock (roomServerMessages.SyncRoot) { roomServerMessages.Enqueue(message.GetBytes()); } }
internal void UnsafeSendMessage(ServerMessage Message) { if (Message == null) return; if (GetConnection() == null) return; GetConnection().SendUnsafeData(Message.GetBytes()); }
internal void SendBanMessage(string Message) { ServerMessage BanMessage = new ServerMessage(Outgoing.DisconnectReason); //BanMessage.AppendStringWithBreak(LanguageLocale.GetValue("moderation.banmessage"), 13); //BanMessage.AppendString(Message); BanMessage.AppendInt32(10); GetConnection().SendData(BanMessage.GetBytes()); }
internal void appendResponse(ServerMessage message) { appendBytes(message.GetBytes()); }
internal void appendResponse(ServerMessage message) { appendBytes(message.GetBytes()); }