use of neo.model.network.HeadersPayload in project neo-java by coranos.
the class TestPayload method test002HeadersPayload.
/**
* tests the HeadersPayload.
*/
@Test
public void test002HeadersPayload() {
final String payloadJsonStrRaw = TestUtil.getJsonTestResourceAsString(TEST_PACKAGE, getClass().getSimpleName(), "test002HeadersPayloadHex");
final String payloadJsonStr = TestUtil.fromHexJsonObject(new JSONObject(payloadJsonStrRaw));
final byte[] payloadBa = ModelUtil.decodeHex(payloadJsonStr);
final HeadersPayload payload = new HeadersPayload(ByteBuffer.wrap(payloadBa));
Assert.assertNotNull("HeadersPayload should not be null", payload);
Assert.assertEquals("HeadersPayload size", 2, payload.getHeaderList().size());
final String expectedStr = new JSONObject(TestUtil.getJsonTestResourceAsString(TEST_PACKAGE, getClass().getSimpleName(), "test002HeadersPayload")).toString();
final String actualStr = payload.toString();
Assert.assertEquals(TestUtil.RESPONSES_MUST_MATCH, expectedStr, actualStr);
final String expectedHexStr = new JSONObject(payloadJsonStrRaw).toString(2);
final String actualHexStr = TestUtil.toHexJsonObject(ModelUtil.toHexString(payload.toByteArray())).toString(2);
Assert.assertEquals(TestUtil.RESPONSES_MUST_MATCH, expectedHexStr, actualHexStr);
}
use of neo.model.network.HeadersPayload in project neo-java by coranos.
the class LocalControllerNode method onHeaders.
/**
* does something on a "headers" message.
*
* @param peer
* the peer that sent the message.
* @param message
* the message.
*/
private void onHeaders(final RemoteNodeControllerRunnable peer, final Message message) {
if (stopped) {
return;
}
final HeadersPayload headersPayload = message.getPayload(HeadersPayload.class);
LOG.debug("STARTED onHeaders size:{}", headersPayload.getHeaderList().size());
boolean headerChanged = false;
for (final Header header : headersPayload.getHeaderList()) {
final boolean headerNew = LocalNodeDataSynchronizedUtil.addHeaderIfNew(localNodeData, header);
if (headerNew) {
headerChanged = true;
}
if (!headerNew) {
MapUtil.increment(LocalNodeData.API_CALL_MAP, DUPLICATE_IN_HEADER);
}
}
LOG.debug("INTERIM onHeaders headerChanged:{}", headerChanged);
if (headerChanged) {
LocalNodeDataSynchronizedUtil.verifyUnverifiedHeaders(localNodeData);
notifyNodeDataChangeListeners();
} else {
MapUtil.increment(LocalNodeData.API_CALL_MAP, IN_HEADERS_ALL_DUPLICATES);
LOG.debug("header message received with {} headers, but all were duplicates.", headersPayload.getHeaderList().size());
}
LOG.debug("SUCCESS onHeaders headerChanged:{}", headerChanged);
}
Aggregations