public CBuffer Clone() { CBuffer buf = CBuffer.Create(BufSize); buf.Fill(this); return(buf); }
public bool FillPack(byte[] buffer, ref int offset, ref int count) { if (!this.HeaderBuffer.IsFull) { int fillSize = HeaderBuffer.Fill(buffer, offset, count, true); offset += fillSize; count -= fillSize; if (HeaderBuffer.IsFull) { _ParseHeader();//解析头以后才知道body的长度 BodyBuffer = CBuffer.Create((int)this.Length); } else { //头部数据没接收完成,继续解析 return(false); } } if (!this.BodyBuffer.IsFull) { int fillSize = BodyBuffer.Fill(buffer, offset, count, true); offset += fillSize; count -= fillSize; } return(this.BodyBuffer.IsFull); }
public CBuffer Assembly() { CBuffer buf = CBuffer.Create(HeaderLength + BodyBuffer.Length); buf.Fill(HeaderBuffer); buf.Fill(BodyBuffer); return(buf); }
public KcpNetPack(ushort msgID, ushort msgLen) { HeadID = msgID; Length = msgLen; HeaderBuffer = CBuffer.Create(HeaderLength); _AssemblyHeader(); }
//public T Deserialize<T>() //{ // using (var ms = new MemoryStream(this.BodyBuffer.Bytes, 0, this.BodyBuffer.BufSize)) // return ProtoBuf.Serializer.Deserialize<T>(ms); //} //void Send<T>(Protocol type, T content) where T : Google.Protobuf.IMessage //{ // GameMessage message = new GameMessage(); // message.Type = type; // message.Data = ByteString.CopyFrom(content.ToByteArray()); // _UnityUdpSocket.Send(message.ToByteArray()); //} public static KcpNetPack SerializeToPack <T>(T content, ushort msg_id) where T : Google.Protobuf.IMessage { int size = content.CalculateSize();//注意检查长度不能超过 65,535-HeaderLength KcpNetPack pack = new KcpNetPack(msg_id, (ushort)size); pack.BodyBuffer = CBuffer.Create(size); pack.BodyBuffer.Fill(content.ToByteArray(), size); return(pack); }
public NetPack(uint msgID, uint cmd, uint msgLen) { HeadID = msgID; CMD = cmd; Length = msgLen; HeaderBuffer = CBuffer.Create(HeaderLength); _AssemblyHeader(); }
//public T Deserialize<T>() //{ // using (var ms = new MemoryStream(this.BodyBuffer.Bytes, 0, this.BodyBuffer.BufSize)) // return ProtoBuf.Serializer.Deserialize<T>(ms); //} //void Send<T>(Protocol type, T content) where T : Google.Protobuf.IMessage //{ // GameMessage message = new GameMessage(); // message.Type = type; // message.Data = ByteString.CopyFrom(content.ToByteArray()); // _UnityUdpSocket.Send(message.ToByteArray()); //} public static NetPack SerializeToPack <T>(T content, uint msg_id, uint cmd) where T : Google.Protobuf.IMessage { int size = content.CalculateSize(); NetPack pack = new NetPack(msg_id, cmd, (uint)size); pack.BodyBuffer = CBuffer.Create(size); pack.BodyBuffer.Fill(content.ToByteArray(), size); return(pack); }
public KcpNetPack() { HeaderBuffer = CBuffer.Create(HeaderLength); }