Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
NetPacket.cs
Go to the documentation of this file.
1using System.IO;
3
4namespace Terraria.Net;
5
6public struct NetPacket
7{
8 private const int HEADER_SIZE = 5;
9
10 public readonly ushort Id;
11
12 public readonly CachedBuffer Buffer;
13
14 public int Length { get; private set; }
15
16 public BinaryWriter Writer => Buffer.Writer;
17
18 public BinaryReader Reader => Buffer.Reader;
19
20 public NetPacket(ushort id, int size)
21 {
22 this = default(NetPacket);
23 Id = id;
24 Buffer = BufferPool.Request(size + 5);
25 Length = size + 5;
26 Writer.Write((ushort)(size + 5));
27 Writer.Write((byte)82);
28 Writer.Write(id);
29 }
30
31 public void Recycle()
32 {
33 Buffer.Recycle();
34 }
35
36 public void ShrinkToFit()
37 {
38 if (Length != (int)Writer.BaseStream.Position)
39 {
40 Length = (int)Writer.BaseStream.Position;
41 Writer.Seek(0, SeekOrigin.Begin);
42 Writer.Write((ushort)Length);
43 Writer.Seek(Length, SeekOrigin.Begin);
44 }
45 }
46}
static CachedBuffer Request(int size)
Definition BufferPool.cs:22
NetPacket(ushort id, int size)
Definition NetPacket.cs:20
readonly CachedBuffer Buffer
Definition NetPacket.cs:12
readonly ushort Id
Definition NetPacket.cs:10
const int HEADER_SIZE
Definition NetPacket.cs:8