Some additions to rc5 trunk in order to polish up the overall API. Make it a bit more user friendly. The new API will be released in rc6.
- Added JPayloadAccessor interface which contains all the accessor methods for payload
- Implemented JPayloadAccessor interface and its getPayload, transferPayloadTo and peerPayloadTo methods in JHeader class
This should make it much easier for people to access any payload portion of the packet from the stand point of any header found in the packet.
Here is a jUnit test case showing its usage:
public void testJPayloadAccessorGetPayload() {
JPacket packet = TestUtils.getPcapPacket(HTTP, 5);
JPayloadAccessor ip = packet.getHeader(new Ip4());
assertNotNull(ip);
byte[] buffer = ip.getPayload();
assertEquals(0x00, buffer[0]);
assertEquals(0x50, buffer[1]);
assertEquals(0x0d, buffer[487 - 34]);
assertEquals(0x0a, buffer[488 - 34]);
assertEquals(489 - 34, buffer.length);
}
And a second jUnit test case:
public void testJPayloadAccessorPeerPayloadToJBuffer() {
JPacket packet = TestUtils.getPcapPacket(HTTP, 5);
JPayloadAccessor ip = packet.getHeader(new Ip4());
assertNotNull(ip);
JBuffer buffer = ip.peerPayloadTo(new JBuffer(JMemory.Type.POINTER));
assertEquals(0x00, buffer.getUByte(0));
assertEquals(0x50, buffer.getUByte(1));
assertEquals(0x0d, buffer.getUByte(487 - 34));
assertEquals(0x0a, buffer.getUByte(488 - 34));
assertEquals(489 - 34, buffer.size());
}