public static void UpdateUsername(Packet pPacket) { string username; pPacket.ReadString (out username); Log.WriteLine (ELogLevel.Info, "Username: {0}", username); }
public static void WelcomeMessage(Packet pPacket) { string message; pPacket.ReadString (out message); Log.WriteLine (ELogLevel.Info, "Welcome Message: {0}", message); Client.sServer.WelcomeMessage = message; }
public static void UsernameChange(Client pClient, Packet pPacket) { string username; pPacket.ReadString (out username); Log.WriteLine (ELogLevel.Info, "[Server] Username change request recevied: {0} -> {1}", pClient.Username, username); Server.UpdateUsername (pClient, username); }
public override void OnReceiveHandshakePacket(Packet pPacket) { ushort build; pPacket.ReadUShort (out build); if (build != Config.Instance.Build) { Log.WriteLine (ELogLevel.Warn, "[Client] Build version mismatch. Disconnecting from server"); Disconnect (); } }
public override void OnReceivePacket(Packet pPacket) { PacketHandlerAttribute handler = sHandlers.GetOrDefault (pPacket.Opcode, null); if (handler != null) Server.AddCallback (() => handler.Processor (this, pPacket)); else { Log.WriteLine (ELogLevel.Debug, "[{0}] Receiving 0x{1}, {2} Bytes", Host, ((ushort)pPacket.Opcode).ToString ("X4"), pPacket.Length); pPacket.Dump (); } }
public static void ChatMessage(Packet pPacket) { string senderName; string message; pPacket.ReadString (out senderName); pPacket.ReadString (out message); Log.WriteLine (ELogLevel.Info, "Chat Message: {0} - {1}", senderName, message); }
public static void WelcomeMessage(Packet pPacket) { string message; pPacket.ReadString (out message); Client.sServer.WelcomeMessage = message; Client.window.InvokeOnMainThread (() => { Client.window.AddLineToChatHistory (string.Format ("Welcome Message: {0}", message)); }); }
public static void ChatMessage(Client pClient, Packet pPacket) { string message; pPacket.ReadString (out message); Log.WriteLine (ELogLevel.Info, "[Server] Received Chat Message: {0}", message); Packet packet = new Packet(EOpcode.SMSG_CHAT_MESSAGE); packet.WriteString (pClient.Username); packet.WriteString(message); Server.SendPacketToAllExcept (packet, pClient); }
public static void ChatMessage(Packet pPacket) { string senderName; string message; pPacket.ReadString (out senderName); pPacket.ReadString (out message); Client.window.InvokeOnMainThread (() => { Client.window.AddLineToChatHistory (string.Format ("{0}: {1}", senderName, message)); }); }
public static void UpdateUsername(Packet pPacket) { bool success = false; string username; pPacket.ReadBool (out success); if (success) { pPacket.ReadString (out username); Client.sUsername = username; Client.window.InvokeOnMainThread (() => { Client.window.AddLineToChatHistory (string.Format ("Username: {0}", username)); }); } else { Client.window.InvokeOnMainThread (() => { Client.window.AddLineToChatHistory (string.Format ("Cannot update username")); }); } }
public virtual void OnReceivePacket(Packet pPacket) { }
public virtual void OnReceiveHandshakePacket(Packet pPacket) { }
private void EndReceive(SocketAsyncEventArgs pArguments) { if (mDisconnected != 0) return; if (pArguments.BytesTransferred <= 0) { if (pArguments.SocketError != SocketError.Success && pArguments.SocketError != SocketError.ConnectionReset) Log.WriteLine(ELogLevel.Error, "[{0}] Receive Error: {1}", Host, pArguments.SocketError); Disconnect(); return; } mReceiveLength += pArguments.BytesTransferred; while (mReceiveLength > 4) { if (mReceivingPacketLength == 0) { mReceivingPacketLength = GetHeaderLength(mReceiveBuffer, mReceiveStart); } if (mReceivingPacketLength > 0 && mReceiveLength >= mReceivingPacketLength + 4) { if (!mReceivedHandshakePacket && mReceiveStart == 0) { // Handshake packet mReceivedHandshakePacket = true; Packet packet = new Packet(mReceiveBuffer, mReceiveStart + 4, mReceivingPacketLength, false); OnReceiveHandshakePacket (packet); } else { Packet packet = new Packet(mReceiveBuffer, mReceiveStart + 4, mReceivingPacketLength); OnReceivePacket (packet); } mReceiveStart += mReceivingPacketLength + 4; mReceiveLength -= mReceivingPacketLength + 4; mReceivingPacketLength = 0; mReceiveLast = DateTime.Now; } } if (mReceiveLength == 0) mReceiveStart = 0; else if (mReceiveStart > 0 && (mReceiveStart + mReceiveLength) >= mReceiveBuffer.Length) { Buffer.BlockCopy(mReceiveBuffer, mReceiveStart, mReceiveBuffer, 0, mReceiveLength); mReceiveStart = 0; } if (mReceiveLength == mReceiveBuffer.Length) { Log.WriteLine(ELogLevel.Error, "[{0}] Receive Overflow", Host); Disconnect(); } else BeginReceive(); }
public void SendPacket(Packet pPacket) { if (mDisconnected != 0) return; byte[] buffer = new byte[pPacket.Length + 4]; GenerateHeader (buffer, pPacket.Length); Buffer.BlockCopy(pPacket.InnerBuffer, 0, buffer, 4, pPacket.Length); Send(buffer); }
private static void ConnectCallback(IAsyncResult ar) { try { sServerSocket.EndConnect (ar); Log.WriteLine(ELogLevel.Info, "[Client] Connected to Server"); sServer = new Server(sServerSocket); Packet p = new Packet(EOpcode.CMSG_CHAT_MESSAGE); p.WriteString("Hello"); sServer.SendPacket(p); } catch (Exception e) { sRetryCount++; Log.WriteLine(ELogLevel.Info, "[Client] Could not connect to server: {0}", e.Message); if (sRetryCount < 3) { Log.WriteLine (ELogLevel.Info, "[Client] Reattempting to connect to server"); Thread.Sleep (1000); sServerSocket.BeginConnect ("localhost", 8484, new AsyncCallback (ConnectCallback), null); } else { Log.WriteLine (ELogLevel.Error, "[Client] Cannot connect to server"); } } }
public static void SendMessage(string pMessage) { Packet packet = new Packet (EOpcode.CMSG_CHAT_MESSAGE); packet.WriteString (pMessage); sServer.SendPacket (packet); }
private void EndReceive(SocketAsyncEventArgs pArguments) { if (mDisconnected != 0) return; if (pArguments.BytesTransferred <= 0) { if (pArguments.SocketError != SocketError.Success && pArguments.SocketError != SocketError.ConnectionReset) Log.WriteLine(ELogLevel.Error, "[{0}] Receive Error: {1}", Host, pArguments.SocketError); Disconnect(); return; } mReceiveLength += pArguments.BytesTransferred; while (mReceiveLength > 4) { if (mReceivingPacketLength == 0) { mReceivingPacketLength = GetHeaderLength(mReceiveBuffer, mReceiveStart); } if (mReceivingPacketLength > 0 && mReceiveLength >= mReceivingPacketLength + 4) { if (!mReceivedHandshakePacket && mReceiveStart == 0) { // Handshake packet mReceivedHandshakePacket = true; Packet packet = new Packet(mReceiveBuffer, mReceiveStart + 4, mReceivingPacketLength, false); ushort build; packet.ReadUShort (out build); if (build != Config.Instance.Build) { Log.WriteLine (ELogLevel.Warn, "[Client] Build version mismatch. Disconnecting from server"); Disconnect (); } } else { Packet packet = new Packet(mReceiveBuffer, mReceiveStart + 4, mReceivingPacketLength); PacketHandlerAttribute handler = sHandlers.GetOrDefault (packet.Opcode, null); if (handler != null) Client.AddCallback (() => handler.Processor (packet)); else { Log.WriteLine (ELogLevel.Debug, "[{0}] Receiving 0x{1}, {2} Bytes", Host, ((ushort)packet.Opcode).ToString ("X4"), packet.Length); packet.Dump (); } } mReceiveStart += mReceivingPacketLength + 4; mReceiveLength -= mReceivingPacketLength + 4; mReceivingPacketLength = 0; mReceiveLast = DateTime.Now; } } if (mReceiveLength == 0) mReceiveStart = 0; else if (mReceiveStart > 0 && (mReceiveStart + mReceiveLength) >= mReceiveBuffer.Length) { Buffer.BlockCopy(mReceiveBuffer, mReceiveStart, mReceiveBuffer, 0, mReceiveLength); mReceiveStart = 0; } if (mReceiveLength == mReceiveBuffer.Length) { Log.WriteLine(ELogLevel.Error, "[{0}] Receive Overflow", Host); Disconnect(); } else BeginReceive(); }
internal static void updateUsername(string pUsername) { Packet packet = new Packet (EOpcode.CMSG_UPDATE_USERNAME); packet.WriteString (pUsername); sServer.SendPacket (packet); }
internal static void UpdateUsername(Client pClient, string pUsername) { bool success = true; if (sClients.Any (c => c.Username.Equals (pUsername, StringComparison.CurrentCulture))) { success = false; } Packet packet = new Packet(EOpcode.SMSG_UPDATE_USERNAME); packet.WriteBool (success); if (success) { packet.WriteString (pUsername); pClient.Username = pUsername; } Log.WriteLine (ELogLevel.Info, "Sending Uusername: {0}", pUsername); pClient.SendPacket (packet); }
internal static void SendPacketToAll(Packet pPacket) { sClients.ForEach(p => p.SendPacket(pPacket)); }
internal static void SendPacketToAllExcept(Packet pPacket, Client pExcept) { sClients.ForEach(p => { if (p != pExcept) p.SendPacket(pPacket); }); }
internal static void SendWelcomeMessage(Client pClient) { Packet packet = new Packet(EOpcode.SMSG_WELCOME_MESSAGE); packet.WriteString (Config.Instance.WelcomeMessage); pClient.SendPacket (packet); }