aboutsummaryrefslogtreecommitdiff
path: root/Tools/Hazel-Networking/Hazel/MessageWriter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/Hazel-Networking/Hazel/MessageWriter.cs')
-rw-r--r--Tools/Hazel-Networking/Hazel/MessageWriter.cs22
1 files changed, 15 insertions, 7 deletions
diff --git a/Tools/Hazel-Networking/Hazel/MessageWriter.cs b/Tools/Hazel-Networking/Hazel/MessageWriter.cs
index cbae11c..68280cd 100644
--- a/Tools/Hazel-Networking/Hazel/MessageWriter.cs
+++ b/Tools/Hazel-Networking/Hazel/MessageWriter.cs
@@ -6,12 +6,15 @@ using System.Text;
namespace Hazel
{
/// <summary>
- /// 嵌套结构的Message
+ /// 单向写入的Message,嵌套结构的Message,如果有嵌套,也只有一个header,子协议没有header
+ /// 整个结构都会被socket发送,参见UdpConnection.cs
/// 结构:
- /// ------------------------------------
- /// 2bytes (ushort) 包长度
- /// 1bytes (tag) 协议ID,在AmongUS里是tags.cs里定义的tag和subtag
- /// ------------------------------------
+ /// -------------header-----------------
+ /// 1bytes SendOption 是否是可靠传输
+ /// (2bytes) (可靠传输用到的)
+ /// --------------数据------------------
+ /// 2bytes 包长度(不含这2bytes和下面的tag 1byte)
+ /// 1bytes 协议ID,在AmongUS里是tags.cs里定义的tag和subtag
/// 数据 包括嵌套的子协议
/// ------------------------------------
/// </summary>
@@ -20,8 +23,8 @@ namespace Hazel
public static int BufferSize = 64000;
public static readonly ObjectPool<MessageWriter> WriterPool = new ObjectPool<MessageWriter>(() => new MessageWriter(BufferSize));
- public byte[] Buffer;
- public int Length; // 总长度
+ public byte[] Buffer; // 缓冲区,保存了整个包体,包括头部和内容
+ public int Length; // 有效数据在buffer中的长度,可能包含多个嵌套子协议。Length>=Position
public int Position; // 写入游标
public SendOption SendOption { get; private set; }
@@ -86,6 +89,11 @@ namespace Hazel
return output;
}
+ /// <summary>
+ /// expected没有header
+ /// </summary>
+ /// <param name="expected"></param>
+ /// <returns></returns>
public bool HasBytes(int expected)
{
if (this.SendOption == SendOption.None)