public static Packet Deserialize(Session session, MemoryStream source, out object customErrorData) { customErrorData = null; long begin = source.Position; byte[] buffer = new byte[4]; source.Read(buffer, 0, sizeof(int)); int id = ConverterUtility.GetInt32(buffer); Packet packet = ProtoRegister.GetPacket(id); packet.DeSerialize(source); return(packet); }