/// <summary> /// Deserialized data into the provided packet and returns it. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="data"></param> /// <param name="packet"></param> /// <returns></returns> public static T Deserialize <T>(int offset, ArraySegment <byte> data, T packet) where T : struct, ISerializablePacket { using (PooledNetReader r = NetReaderPool.GetReader(data)) { r.Position = offset; packet.Deserialize(r); return(packet); } }
/// <summary> /// Writes content of the message into a packet /// </summary> /// <typeparam name="T"></typeparam> /// <param name="packetToBeFilled"></param> /// <returns></returns> public T Deserialize <T>(T packetToBeFilled) where T : struct, ISerializablePacket { using (PooledNetReader r = NetReaderPool.GetReader(Buffer)) { r.ReadInt16(); // This is the opcode that is still part of the data. packetToBeFilled.Deserialize(r); return(packetToBeFilled); } }
/// <summary> /// Constructs the message buffer into an incoming message. /// </summary> /// <param name="buffer"></param> /// <param name="sender"></param> /// <returns></returns> public static IncomingMessage FromBytes(ArraySegment <byte> buffer, Peer sender) { using (PooledNetReader r = NetReaderPool.GetReader(buffer)) { var opCode = r.ReadInt16(); var msg = new IncomingMessage(opCode, buffer, sender /*, responseID, completeResponse, status*/); return(msg); } }
public static PooledNetReader GetReader(ArraySegment <byte> segment) { if (pool.Count != 0) { PooledNetReader reader = pool.Pop(); // reset buffer SetBuffer(reader, segment); return(reader); } return(new PooledNetReader(segment)); }
public static PooledNetReader GetReader(byte[] bytes) { if (pool.Count != 0) { PooledNetReader reader = pool.Pop(); // reset buffer SetBuffer(reader, bytes); return(reader); } return(new PooledNetReader(bytes)); }
public static void Recycle(PooledNetReader reader) { pool.Push(reader); }