RuneHive-Game
Loading...
Searching...
No Matches
com.runehive.net.packet.PacketBuilder Class Reference

The implementation that functions as a dynamic buffer wrapper backed by a ByteBuf that is used for reading and writing data. More...

Inheritance diagram for com.runehive.net.packet.PacketBuilder:
Collaboration diagram for com.runehive.net.packet.PacketBuilder:

Public Member Functions

String getString ()
PacketBuilder initializeAccess (AccessType type)
GamePacket toPacket (int opcode)
GamePacket toPacket (int opcode, PacketType type)
PacketBuilder writeBit (boolean flag)
PacketBuilder writeBits (int amount, int value)
PacketBuilder writeBuffer (ByteBuf buffer)
PacketBuilder writeByte (int value)
PacketBuilder writeByte (int value, ByteModification type)
PacketBuilder writeByteArray (byte[] bytes)
PacketBuilder writeByteArray (byte[] bytes, int offset, int length)
PacketBuilder writeBytes (byte[] from, int size)
PacketBuilder writeBytes (ByteBuf from)
PacketBuilder writeBytesReverse (byte[] data)
PacketBuilder writeInt (int value)
PacketBuilder writeInt (int value, ByteModification type)
PacketBuilder writeInt (int value, ByteModification type, ByteOrder order)
PacketBuilder writeInt (int value, ByteOrder order)
PacketBuilder writeLong (long value)
PacketBuilder writeLong (long value, ByteModification type)
PacketBuilder writeLong (long value, ByteModification type, ByteOrder order)
PacketBuilder writeLong (long value, ByteOrder order)
PacketBuilder writeShort (int value)
PacketBuilder writeShort (int value, ByteModification type)
PacketBuilder writeShort (int value, ByteModification type, ByteOrder order)
PacketBuilder writeShort (int value, ByteOrder order)
PacketBuilder writeString (String string)

Static Public Member Functions

static PacketBuilder alloc ()
static PacketBuilder alloc (int capacity)
static PacketBuilder alloc (int initialCapacity, int maxCapacity)
static PacketBuilder wrap (ByteBuf buf)

Static Package Functions

 [static initializer]

Private Member Functions

 PacketBuilder (ByteBuf buffer)

Private Attributes

int bitPosition

Static Private Attributes

static final int[] BIT_MASK = new int[32]
static final int DEFAULT_CAPACITY = 128

Detailed Description

The implementation that functions as a dynamic buffer wrapper backed by a ByteBuf that is used for reading and writing data.

Author
lare96 http://github.com/lare96
blakeman8192

Definition at line 19 of file PacketBuilder.java.

Constructor & Destructor Documentation

◆ PacketBuilder()

com.runehive.net.packet.PacketBuilder.PacketBuilder ( ByteBuf buffer)
private

Definition at line 32 of file PacketBuilder.java.

32 {
33 super(buffer);
34 }

Referenced by alloc(), alloc(), alloc(), initializeAccess(), wrap(), writeBit(), writeBits(), writeBuffer(), writeByte(), writeByte(), writeByteArray(), writeByteArray(), writeBytes(), writeBytes(), writeBytesReverse(), writeInt(), writeInt(), writeInt(), writeInt(), writeLong(), writeLong(), writeLong(), writeLong(), writeShort(), writeShort(), writeShort(), writeShort(), and writeString().

Here is the caller graph for this function:

Member Function Documentation

◆ [static initializer]()

com.runehive.net.packet.PacketBuilder.[static initializer]
staticpackage

References BIT_MASK.

◆ alloc() [1/3]

PacketBuilder com.runehive.net.packet.PacketBuilder.alloc ( )
static

Definition at line 44 of file PacketBuilder.java.

44 {
45 return alloc(DEFAULT_CAPACITY);
46 }

References alloc(), DEFAULT_CAPACITY, and PacketBuilder().

Referenced by alloc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ alloc() [2/3]

PacketBuilder com.runehive.net.packet.PacketBuilder.alloc ( int capacity)
static

Definition at line 40 of file PacketBuilder.java.

40 {
41 return new PacketBuilder(PooledByteBufAllocator.DEFAULT.buffer(capacity));
42 }

References PacketBuilder().

Here is the call graph for this function:

◆ alloc() [3/3]

PacketBuilder com.runehive.net.packet.PacketBuilder.alloc ( int initialCapacity,
int maxCapacity )
static

Definition at line 36 of file PacketBuilder.java.

36 {
37 return new PacketBuilder(PooledByteBufAllocator.DEFAULT.buffer(initialCapacity, maxCapacity));
38 }

References PacketBuilder().

Referenced by com.runehive.net.packet.out.SendPlayerUpdate.appendAppearanceMask(), com.runehive.net.packet.out.SendNpcUpdate.encode(), com.runehive.net.packet.out.SendPlayerUpdate.encode(), com.runehive.net.packet.OutgoingPacket.OutgoingPacket(), and com.runehive.net.packet.OutgoingPacket.OutgoingPacket().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getString()

String com.runehive.net.packet.PacketBuilder.getString ( )

Definition at line 288 of file PacketBuilder.java.

288 {
289 byte temp;
290 StringBuilder builder = new StringBuilder();
291 while (content().isReadable() && (temp = content().readByte()) != 10) {
292 builder.append((char) temp);
293 }
294 return builder.toString();
295 }

◆ initializeAccess()

PacketBuilder com.runehive.net.packet.PacketBuilder.initializeAccess ( AccessType type)

Definition at line 51 of file PacketBuilder.java.

51 {
52 switch (type) {
53 case BIT:
54 bitPosition = content().writerIndex() * 8;
55 break;
56 case BYTE:
57 content().writerIndex((bitPosition + 7) / 8);
58 bitPosition = -1;
59 break;
60 }
61 return this;
62 }

References bitPosition, and PacketBuilder().

Here is the call graph for this function:

◆ toPacket() [1/2]

GamePacket com.runehive.net.packet.PacketBuilder.toPacket ( int opcode)

Definition at line 280 of file PacketBuilder.java.

280 {
281 return new GamePacket(opcode, PacketType.FIXED, content());
282 }

References com.runehive.net.packet.PacketType.FIXED.

◆ toPacket() [2/2]

GamePacket com.runehive.net.packet.PacketBuilder.toPacket ( int opcode,
PacketType type )

Definition at line 284 of file PacketBuilder.java.

284 {
285 return new GamePacket(opcode, type, content());
286 }

◆ wrap()

PacketBuilder com.runehive.net.packet.PacketBuilder.wrap ( ByteBuf buf)
static

Definition at line 47 of file PacketBuilder.java.

47 {
48 return new PacketBuilder(buf);
49 }

References PacketBuilder().

Here is the call graph for this function:

◆ writeBit()

PacketBuilder com.runehive.net.packet.PacketBuilder.writeBit ( boolean flag)

Definition at line 87 of file PacketBuilder.java.

87 {
88 writeBits(1, flag ? 1 : 0);
89 return this;
90 }

References PacketBuilder(), and writeBits().

Referenced by com.runehive.net.packet.out.SendPlayerUpdate.addNewPlayer(), and com.runehive.net.packet.out.SendPlayerUpdate.updateMovement().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeBits()

PacketBuilder com.runehive.net.packet.PacketBuilder.writeBits ( int amount,
int value )

Definition at line 92 of file PacketBuilder.java.

92 {
93 checkState(amount >= 1 && amount <= 32, "Number of bits must be between 1 and 32 inclusive.");
94
95 int bytePos = bitPosition >> 3;
96 int bitOffset = 8 - (bitPosition & 7);
97 bitPosition = bitPosition + amount;
98 int requiredSpace = bytePos - content().writerIndex() + 1;
99 requiredSpace += (amount + 7) / 8;
100 if (content().writableBytes() < requiredSpace) {
101 content().capacity(content().capacity() + requiredSpace);
102 }
103 for (; amount > bitOffset; bitOffset = 8) {
104 byte tmp = content().getByte(bytePos);
105 tmp &= ~BIT_MASK[bitOffset];
106 tmp |= (value >> (amount - bitOffset)) & BIT_MASK[bitOffset];
107 content().setByte(bytePos++, tmp);
108 amount -= bitOffset;
109 }
110 if (amount == bitOffset) {
111 byte tmp = content().getByte(bytePos);
112 tmp &= ~BIT_MASK[bitOffset];
113 tmp |= value & BIT_MASK[bitOffset];
114 content().setByte(bytePos, tmp);
115 } else {
116 byte tmp = content().getByte(bytePos);
117 tmp &= ~(BIT_MASK[amount] << (bitOffset - amount));
118 tmp |= (value & BIT_MASK[amount]) << (bitOffset - amount);
119 content().setByte(bytePos, tmp);
120 }
121 return this;
122 }

References BIT_MASK, bitPosition, and PacketBuilder().

Referenced by com.runehive.net.packet.out.SendPlayerUpdate.addNewPlayer(), com.runehive.net.packet.out.SendPlayerUpdate.updateMovement(), and writeBit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeBuffer()

PacketBuilder com.runehive.net.packet.PacketBuilder.writeBuffer ( ByteBuf buffer)

Definition at line 297 of file PacketBuilder.java.

297 {
298 this.content().writeBytes(buffer);
299 return this;
300 }

References PacketBuilder().

Here is the call graph for this function:

◆ writeByte() [1/2]

◆ writeByte() [2/2]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeByte ( int value,
ByteModification type )

Definition at line 69 of file PacketBuilder.java.

69 {
70 switch (type) {
71 case ADD:
72 value += 128;
73 break;
74 case NEG:
75 value = -value;
76 break;
77 case SUB:
78 value = 128 - value;
79 break;
80 case NONE:
81 break;
82 }
83 content().writeByte((byte) value);
84 return this;
85 }

References PacketBuilder().

Here is the call graph for this function:

◆ writeByteArray() [1/2]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeByteArray ( byte[] bytes)

Definition at line 302 of file PacketBuilder.java.

302 {
303 content().writeBytes(bytes);
304 return this;
305 }

References PacketBuilder().

Here is the call graph for this function:

◆ writeByteArray() [2/2]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeByteArray ( byte[] bytes,
int offset,
int length )

Definition at line 307 of file PacketBuilder.java.

307 {
308 content().writeBytes(bytes, offset, length);
309 return this;
310 }

References PacketBuilder().

Here is the call graph for this function:

◆ writeBytes() [1/2]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeBytes ( byte[] from,
int size )

Definition at line 124 of file PacketBuilder.java.

124 {
125 content().writeBytes(from, 0, size);
126 return this;
127 }

References PacketBuilder().

Referenced by com.runehive.net.packet.out.SendPlayerUpdate.appendAppearanceMask().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeBytes() [2/2]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeBytes ( ByteBuf from)

Definition at line 129 of file PacketBuilder.java.

129 {
130 for (int i = 0; i < from.writerIndex(); i++) {
131 writeByte(from.getByte(i));
132 }
133 return this;
134 }

References PacketBuilder(), and writeByte().

Here is the call graph for this function:

◆ writeBytesReverse()

PacketBuilder com.runehive.net.packet.PacketBuilder.writeBytesReverse ( byte[] data)

Definition at line 136 of file PacketBuilder.java.

136 {
137 for (int i = data.length - 1; i >= 0; i--) {
138 writeByte(data[i]);
139 }
140 return this;
141 }

References PacketBuilder(), and writeByte().

Referenced by com.runehive.net.packet.out.SendPlayerUpdate.appendChatMask().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeInt() [1/4]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeInt ( int value)

Definition at line 143 of file PacketBuilder.java.

143 {
144 writeInt(value, ByteModification.NONE, ByteOrder.BE);
145 return this;
146 }

References com.runehive.net.codec.ByteOrder.BE, com.runehive.net.codec.ByteModification.NONE, PacketBuilder(), and writeInt().

Referenced by com.runehive.net.packet.out.SendPlayerUpdate.appendAppearanceMask(), com.runehive.net.packet.out.SendNpcUpdate.appendGfxMask(), com.runehive.net.packet.out.SendPlayerUpdate.appendGraphicMask(), writeInt(), writeInt(), and writeInt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeInt() [2/4]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeInt ( int value,
ByteModification type )

Definition at line 153 of file PacketBuilder.java.

153 {
154 writeInt(value, type, ByteOrder.BE);
155 return this;
156 }

References com.runehive.net.codec.ByteOrder.BE, PacketBuilder(), and writeInt().

Here is the call graph for this function:

◆ writeInt() [3/4]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeInt ( int value,
ByteModification type,
ByteOrder order )

Definition at line 158 of file PacketBuilder.java.

158 {
159 switch (order) {
160 case BE:
161 writeByte(value >> 24);
162 writeByte(value >> 16);
163 writeByte(value >> 8);
164 writeByte(value, type);
165 break;
166 case ME:
167 writeByte(value >> 8);
168 writeByte(value, type);
169 writeByte(value >> 24);
170 writeByte(value >> 16);
171 break;
172 case IME:
173 writeByte(value >> 16);
174 writeByte(value >> 24);
175 writeByte(value, type);
176 writeByte(value >> 8);
177 break;
178 case LE:
179 writeByte(value, type);
180 writeByte(value >> 8);
181 writeByte(value >> 16);
182 writeByte(value >> 24);
183 break;
184 }
185 return this;
186 }

References PacketBuilder(), and writeByte().

Here is the call graph for this function:

◆ writeInt() [4/4]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeInt ( int value,
ByteOrder order )

Definition at line 148 of file PacketBuilder.java.

148 {
149 writeInt(value, ByteModification.NONE, order);
150 return this;
151 }

References com.runehive.net.codec.ByteModification.NONE, PacketBuilder(), and writeInt().

Here is the call graph for this function:

◆ writeLong() [1/4]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeLong ( long value)

Definition at line 188 of file PacketBuilder.java.

188 {
189 writeLong(value, ByteModification.NONE, ByteOrder.BE);
190 return this;
191 }

References com.runehive.net.codec.ByteOrder.BE, com.runehive.net.codec.ByteModification.NONE, PacketBuilder(), and writeLong().

Referenced by com.runehive.net.packet.out.SendPlayerUpdate.appendAppearanceMask(), writeLong(), writeLong(), and writeLong().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeLong() [2/4]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeLong ( long value,
ByteModification type )

Definition at line 198 of file PacketBuilder.java.

198 {
199 writeLong(value, type, ByteOrder.BE);
200 return this;
201 }

References com.runehive.net.codec.ByteOrder.BE, PacketBuilder(), and writeLong().

Here is the call graph for this function:

◆ writeLong() [3/4]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeLong ( long value,
ByteModification type,
ByteOrder order )

Definition at line 203 of file PacketBuilder.java.

203 {
204 switch (order) {
205 case BE:
206 writeByte((int) (value >> 56));
207 writeByte((int) (value >> 48));
208 writeByte((int) (value >> 40));
209 writeByte((int) (value >> 32));
210 writeByte((int) (value >> 24));
211 writeByte((int) (value >> 16));
212 writeByte((int) (value >> 8));
213 writeByte((int) value, type);
214 break;
215
216 case ME:
217 throw new UnsupportedOperationException("Middle-endian long " + "is not implemented!");
218
219 case IME:
220 throw new UnsupportedOperationException("Inverse-middle-endian long is not implemented!");
221
222 case LE:
223 writeByte((int) value, type);
224 writeByte((int) (value >> 8));
225 writeByte((int) (value >> 16));
226 writeByte((int) (value >> 24));
227 writeByte((int) (value >> 32));
228 writeByte((int) (value >> 40));
229 writeByte((int) (value >> 48));
230 writeByte((int) (value >> 56));
231 break;
232
233 }
234 return this;
235 }

References PacketBuilder(), and writeByte().

Here is the call graph for this function:

◆ writeLong() [4/4]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeLong ( long value,
ByteOrder order )

Definition at line 193 of file PacketBuilder.java.

193 {
194 writeLong(value, ByteModification.NONE, order);
195 return this;
196 }

References com.runehive.net.codec.ByteModification.NONE, PacketBuilder(), and writeLong().

Here is the call graph for this function:

◆ writeShort() [1/4]

◆ writeShort() [2/4]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeShort ( int value,
ByteModification type )

Definition at line 247 of file PacketBuilder.java.

247 {
248 writeShort(value, type, ByteOrder.BE);
249 return this;
250 }

References com.runehive.net.codec.ByteOrder.BE, PacketBuilder(), and writeShort().

Here is the call graph for this function:

◆ writeShort() [3/4]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeShort ( int value,
ByteModification type,
ByteOrder order )

Definition at line 252 of file PacketBuilder.java.

252 {
253 switch (order) {
254 case BE:
255 writeByte(value >> 8);
256 writeByte(value, type);
257 break;
258 case ME:
259 throw new IllegalArgumentException("Middle-endian short is " + "impossible!");
260 case IME:
261 throw new IllegalArgumentException("Inverse-middle-endian " + "short is impossible!");
262 case LE:
263 writeByte(value, type);
264 writeByte(value >> 8);
265 break;
266 default:
267 break;
268 }
269 return this;
270 }

References PacketBuilder(), and writeByte().

Here is the call graph for this function:

◆ writeShort() [4/4]

PacketBuilder com.runehive.net.packet.PacketBuilder.writeShort ( int value,
ByteOrder order )

Definition at line 242 of file PacketBuilder.java.

242 {
243 writeShort(value, ByteModification.NONE, order);
244 return this;
245 }

References com.runehive.net.codec.ByteModification.NONE, PacketBuilder(), and writeShort().

Here is the call graph for this function:

◆ writeString()

PacketBuilder com.runehive.net.packet.PacketBuilder.writeString ( String string)

Definition at line 272 of file PacketBuilder.java.

272 {
273 for (final byte value : string.getBytes()) {
274 writeByte(value);
275 }
276 writeByte(10);
277 return this;
278 }

References PacketBuilder(), and writeByte().

Referenced by com.runehive.net.packet.out.SendPlayerUpdate.appendAppearanceMask(), com.runehive.net.packet.out.SendNpcUpdate.appendForceChatMask(), and com.runehive.net.packet.out.SendPlayerUpdate.appendForceChatMask().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ BIT_MASK

final int [] com.runehive.net.packet.PacketBuilder.BIT_MASK = new int[32]
staticprivate

Definition at line 21 of file PacketBuilder.java.

Referenced by [static initializer](), and writeBits().

◆ bitPosition

int com.runehive.net.packet.PacketBuilder.bitPosition
private

Definition at line 30 of file PacketBuilder.java.

Referenced by initializeAccess(), and writeBits().

◆ DEFAULT_CAPACITY

final int com.runehive.net.packet.PacketBuilder.DEFAULT_CAPACITY = 128
staticprivate

Definition at line 29 of file PacketBuilder.java.

Referenced by alloc().


The documentation for this class was generated from the following file: