using System; using Mina.Core.Buffer; using FSO.Common.Serialization; using FSO.Server.Protocol.Gluon.Packets; namespace FSO.Server.Protocol.Gluon { public abstract class AbstractGluonPacket : IGluonPacket { public static IoBuffer Allocate(int size) { IoBuffer buffer = IoBuffer.Allocate(size); buffer.Order = ByteOrder.BigEndian; return buffer; } public abstract GluonPacketType GetPacketType(); public abstract void Deserialize(IoBuffer input, ISerializationContext context); public abstract void Serialize(IoBuffer output, ISerializationContext context); } public abstract class AbstractGluonCallPacket : AbstractGluonPacket, IGluonCall { public Guid CallId { get; set; } public override void Serialize(IoBuffer output, ISerializationContext context) { output.PutPascalString(CallId.ToString()); } public override void Deserialize(IoBuffer input, ISerializationContext context) { CallId = Guid.Parse(input.GetPascalString()); } } }