Search in sources :

Example 1 with HeadersPayload

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);
}
Also used : JSONObject(org.json.JSONObject) HeadersPayload(neo.model.network.HeadersPayload) Test(org.junit.Test)

Example 2 with HeadersPayload

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);
}
Also used : Header(neo.model.core.Header) HeadersPayload(neo.model.network.HeadersPayload)

Aggregations

HeadersPayload (neo.model.network.HeadersPayload)2 Header (neo.model.core.Header)1 JSONObject (org.json.JSONObject)1 Test (org.junit.Test)1