/*
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;
}
}
}