mirror of
https://github.com/collinsmith/riiablo.git
synced 2025-07-04 23:38:28 +07:00
Implemented headerSize and fragmentSize fields
This commit is contained in:
@ -189,6 +189,9 @@ public abstract class Packet {
|
|||||||
public int fragmentId;
|
public int fragmentId;
|
||||||
public int numFragments;
|
public int numFragments;
|
||||||
|
|
||||||
|
int headerSize;
|
||||||
|
int fragmentSize;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new ToStringBuilder(this)
|
return new ToStringBuilder(this)
|
||||||
@ -208,6 +211,8 @@ public abstract class Packet {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int startIndex = bb.readerIndex();
|
||||||
|
|
||||||
if (bb.readableBytes() < FRAGMENT_HEADER_SIZE) {
|
if (bb.readableBytes() < FRAGMENT_HEADER_SIZE) {
|
||||||
logError("buffer too small for fragment header");
|
logError("buffer too small for fragment header");
|
||||||
return -1;
|
return -1;
|
||||||
@ -244,16 +249,24 @@ public abstract class Packet {
|
|||||||
}
|
}
|
||||||
ack = packetHeader.ack;
|
ack = packetHeader.ack;
|
||||||
ackBits = packetHeader.ackBits;
|
ackBits = packetHeader.ackBits;
|
||||||
|
fragmentSize = bb.readableBytes();
|
||||||
} else {
|
} else {
|
||||||
ack = 0;
|
ack = 0;
|
||||||
ackBits = 0;
|
ackBits = 0;
|
||||||
|
fragmentSize = bb.readableBytes();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: validate fragmentBytes <= fragmentSize
|
if (fragmentSize > config.fragmentSize) {
|
||||||
// TODO: validate size of fragmentId == fragmentSize
|
logError("fragment bytes %d > fragment size %d", fragmentSize, config.fragmentSize);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: implement support
|
if (fragmentId != numFragments - 1 && fragmentSize != config.fragmentSize) {
|
||||||
int headerSize = 0;
|
logError("fragment %d is %d bytes, which is not the expected fragment size %d bytes", fragmentId, fragmentSize, config.fragmentSize);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
headerSize = bb.readerIndex() - startIndex + 1; // include prefixByte
|
||||||
return headerSize;
|
return headerSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user