/* Sog 游戏基础库 2016 by zouwei */ using System; using System.Collections.Generic; namespace Sog { /// /// Request message package /// public class RequestPacket { /// /// init /// public RequestPacket(int msgId, long objectId, uint serverId) { MsgID = msgId; ObjectID = objectId; ServerID = serverId; ReceiveTime = DateTime.Now; } public int MsgID { get; protected set; } public long ObjectID { get; protected set; } public uint ServerID { get; protected set; } public object Message { get; set; } public DateTime ReceiveTime { get; protected set; } } public class StructPacket { public MessageHeader Header; public ProtoCSStruct.IStructMessageParser Parser; public int MsgID { get { return Header.Type; } } public long ObjectID { get { return Header.ObjectID; } } public uint ServerID { get { return Header.ServerID; } } public override string ToString() { return Parser.GetMessageString(); } public string MessageName() { return Parser.GetMessageName(); } //得到结构体的引用,用的时候千万别忘了加ref, 否则 会进行整个结构体拷贝,效率很低 public ref T GetMessage() where T : struct , ProtoCSStruct.IStructMessage { return ref ((ProtoCSStruct.StructMessageParser)Parser).GetMessage(); } public StructPacket Clone() { var clonePacket = new StructPacket(); clonePacket.Header = this.Header; clonePacket.Parser = Parser.Clone(); return clonePacket; } } }