public void SendAll(APacket packet) { foreach (ServerClient client in _clients) { client.Send(packet); } }
public async Task SendAllAsync(APacket packet) { List <Task> taskList = new List <Task>(_clients.Count); foreach (ServerClient client in _clients) { taskList.Add(client.SendAsync(packet)); } await Task.WhenAll(taskList); }
public void BroadCast(APacket packet, Client except = null) { foreach (Client c in Clients) { if (except == c) { continue; } c.AddResponse(packet.Clone() as APacket); } }
public byte[] Serialize(APacket packet, string key, bool isCommand) { try { return(packet.Serialize(key, isCommand)); } catch (Exception e) { DebugUtil.LogError <PacketDeserializer>(DebugLocation.Internal, "Serialize", e.Message); return(null); } }
public void AddResponse(APacket packet, bool immediate = true) { packet.Destination = this; PacketWriterWorker worker = PacketWriterWorker.Instance; if (immediate == true) { worker.Packets.Add(packet); } else { _packetQueue.Add(packet); } }
public virtual void Add(APacket packet) { Memory <byte> packetMem = new Memory <byte>(new byte[packet.Length + _size]); int length = packet.Length; for (int i = 0; i < _size; ++i) { packetMem.Span[packet.Length + _size - i - 1] = (byte)(length & 255); length >>= 8; } if (length != 0) { throw new Exception($"{nameof(Add)}: packet was too big to add!"); } packet.Read().CopyTo(packetMem); Write(packetMem); }
public void ReadPacket(Client client, byte[] buffer, int lengthRead) { try { ByteBuffer byteBuffer = new ByteBuffer(); byteBuffer.Write(buffer, 0, lengthRead); byteBuffer.Position = 0; while (byteBuffer.Position < lengthRead) { int len = byteBuffer.ReadVarInt(); int id = byteBuffer.ReadVarInt(); object tmp = client.State.Peek()._ReceiptPackets[id]; if (tmp != null) { APacket packet = tmp as APacket; packet = packet.Clone() as APacket; if (packet == null) { throw new NullReferenceException("The server does not handle packet " + id); } packet.Read(client, byteBuffer); } else { Console.WriteLine("Unhandled packet - ID : " + id + " - Length : " + len); } } } catch (Exception e) { Console.WriteLine("ERROR : " + e.Message); } }
public async Task ReceiveAsync(APacket packet) { await packet.ReceiveAsync(Stream); }
public void Receive(APacket packet) { packet.Receive(Stream); }
public async Task SendAsync(APacket packet) { await packet.SendAsync(Stream); }
public void Send(APacket packet) { packet.Send(Stream); }
protected void AddSendPacket(int index, APacket packet) { _SendPackets[index] = packet; }
protected void AddReceiptPacket(int index, APacket packet) { _ReceiptPackets[index] = packet; }
public void AddBroadCast(APacket packet, Client except = null) { TheWorld.BroadCast(packet, except); }