public String format(LogRecord record) { String message = formatMessage(record); return String.format("%s\t%s%s", dateFormat.format(new Date()), message, System.lineSeparator()); } };
ep.addInterceptor(new MessageTracer()); ep.addInterceptor(new OriginTracer());
private void reject(Message message) { EmptyMessage rst = EmptyMessage.newRST(message); // sending directly through connector, not stack, thus set token rst.setToken(new byte[0]); for (MessageInterceptor interceptor:interceptors) interceptor.sendEmptyMessage(rst); // MessageInterceptor might have canceled if (!rst.isCanceled()) connector.send(serializer.serialize(rst)); }
EndpointManager.getEndpointManager().getDefaultEndpoint().addInterceptor(new MessageTracer());
rst.setDestinationPort(raw.getPort()); for (MessageInterceptor interceptor:interceptors) interceptor.sendEmptyMessage(rst); connector.send(serializer.serialize(rst)); log.append(" and reset"); interceptor.receiveRequest(request); interceptor.receiveResponse(response); interceptor.receiveEmptyMessage(message);
@Override public void sendResponse(Exchange exchange, Response response) { if (response.getDestination() == null) throw new NullPointerException("Response has no destination address"); if (response.getDestinationPort() == 0) throw new NullPointerException("Response has no destination port"); matcher.sendResponse(exchange, response); /* * Logging here causes significant performance loss. * If necessary, add an interceptor that logs the messages, * e.g., the MessageTracer. */ for (MessageInterceptor interceptor:interceptors) interceptor.sendResponse(response); // MessageInterceptor might have canceled if (response.isCanceled()) { if (null != exchange) { exchange.setComplete(); } } else { connector.send(serializer.serialize(response)); } }
interceptor.sendRequest(request);
private void receiveEmptyMessage(final EmptyMessage message, final RawData raw) { /* * Logging here causes significant performance loss. * If necessary, add an interceptor that logs the messages, * e.g., the MessageTracer. */ for (MessageInterceptor interceptor:interceptors) { interceptor.receiveEmptyMessage(message); } // MessageInterceptor might have canceled if (!message.isCanceled()) { // CoAP Ping if (message.getType() == Type.CON || message.getType() == Type.NON) { LOGGER.log(Level.FINER, "responding to ping from {0}", raw.getInetSocketAddress()); reject(message); } else { Exchange exchange = matcher.receiveEmptyMessage(message); if (exchange != null) { exchange.setEndpoint(CoapEndpoint.this); coapstack.receiveEmptyMessage(exchange, message); } } } } }
private void receiveResponse(final Response response, final RawData raw) { /* * Logging here causes significant performance loss. * If necessary, add an interceptor that logs the messages, * e.g., the MessageTracer. */ for (MessageInterceptor interceptor:interceptors) { interceptor.receiveResponse(response); } // MessageInterceptor might have canceled if (!response.isCanceled()) { Exchange exchange = matcher.receiveResponse(response, raw.getCorrelationContext()); if (exchange != null) { exchange.setEndpoint(CoapEndpoint.this); response.setRTT(System.currentTimeMillis() - exchange.getTimestamp()); coapstack.receiveResponse(exchange, response); } else if (response.getType() != Type.ACK) { LOGGER.log(Level.FINE, "Rejecting unmatchable response from {0}", raw.getInetSocketAddress()); reject(response); } } }
private void receiveRequest(final Request request, final RawData raw) { // set request attributes from raw data request.setScheme(raw.isSecure() ? CoAP.COAP_SECURE_URI_SCHEME : CoAP.COAP_URI_SCHEME); request.setSenderIdentity(raw.getSenderIdentity()); /* * Logging here causes significant performance loss. * If necessary, add an interceptor that logs the messages, * e.g., the MessageTracer. */ for (MessageInterceptor interceptor:interceptors) { interceptor.receiveRequest(request); } // MessageInterceptor might have canceled if (!request.isCanceled()) { Exchange exchange = matcher.receiveRequest(request); if (exchange != null) { exchange.setEndpoint(CoapEndpoint.this); coapstack.receiveRequest(exchange, request); } } }
@Before public void setupEndpoints() throws Exception { //exchangeStore = new InMemoryMessageExchangeStore(CONFIG, new InMemoryRandomTokenProvider(CONFIG)); // bind to loopback address using an ephemeral port // CoapEndpoint udpEndpoint = new CoapEndpoint(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0), CONFIG, exchangeStore); client = new CoapEndpoint(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0), CONFIG); client.addInterceptor(clientInterceptor); client.addInterceptor(new MessageTracer()); client.start(); System.out.println("Client binds to port " + client.getAddress().getPort()); server = createLockstepEndpoint(client.getAddress()); }
@Override public void sendEmptyMessage(Exchange exchange, EmptyMessage message) { if (message.getDestination() == null) throw new NullPointerException("Message has no destination address"); if (message.getDestinationPort() == 0) throw new NullPointerException("Message has no destination port"); matcher.sendEmptyMessage(exchange, message); /* * Logging here causes significant performance loss. * If necessary, add an interceptor that logs the messages, * e.g., the MessageTracer. */ for (MessageInterceptor interceptor:interceptors) interceptor.sendEmptyMessage(message); // MessageInterceptor might have canceled if (message.isCanceled()) { if (null != exchange) { exchange.setComplete(); } } else { connector.send(serializer.serialize(message)); } } }
public String format(LogRecord record) { String message = formatMessage(record); return String.format("%s\t%s%s", dateFormat.format(new Date()), message, System.lineSeparator()); } };
@Override public void sendResponse(Exchange exchange, Response response) { assertMessageHasDestinationAddress(response); matcher.sendResponse(exchange, response); /* * Logging here causes significant performance loss. * If necessary, add an interceptor that logs the messages, * e.g., the MessageTracer. */ for (MessageInterceptor interceptor:interceptors) { interceptor.sendResponse(response); } // MessageInterceptor might have canceled if (response.isCanceled()) { if (null != exchange) { exchange.setComplete(); } } else { connector.send(serializer.serializeResponse(response)); } }
messageInterceptor.sendRequest(request);
ep.addInterceptor(new MessageTracer());
@Override public void sendEmptyMessage(Exchange exchange, EmptyMessage message) { assertMessageHasDestinationAddress(message); matcher.sendEmptyMessage(exchange, message); /* * Logging here causes significant performance loss. * If necessary, add an interceptor that logs the messages, * e.g., the MessageTracer. */ for (MessageInterceptor interceptor:interceptors) { interceptor.sendEmptyMessage(message); } // MessageInterceptor might have canceled if (message.isCanceled()) { if (null != exchange) { exchange.setComplete(); } } else { connector.send(serializer.serializeEmptyMessage(message)); } }
@Before public void setupServer() throws Exception { System.out.println(System.lineSeparator() + "Start " + getClass().getSimpleName()); NetworkConfig config = network.createTestConfig() .setInt(NetworkConfig.Keys.MAX_MESSAGE_SIZE, 128) .setInt(NetworkConfig.Keys.PREFERRED_BLOCK_SIZE, 128) .setInt(NetworkConfig.Keys.ACK_TIMEOUT, 200) // client retransmits after 200 ms .setInt(NetworkConfig.Keys.ACK_RANDOM_FACTOR, 1); client = new CoapEndpoint(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0), config); client.addInterceptor(new MessageTracer()); client.start(); clientPort = client.getAddress().getPort(); server = createLockstepEndpoint(client.getAddress()); System.out.println("Client binds to port " + clientPort); }
@BeforeClass public static void setupServer() throws Exception { NetworkConfig config = network.getStandardTestConfig(); config.setString(NetworkConfig.Keys.DEDUPLICATOR, NetworkConfig.Keys.DEDUPLICATOR_MARK_AND_SWEEP); config.setInt(NetworkConfig.Keys.MARK_AND_SWEEP_INTERVAL, DEDUPLICATOR_SWEEP_INTERVAL); Endpoint ep = new CoapEndpoint(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0), config); ep.addInterceptor(new MessageTracer()); server = new CoapServer(); server.addEndpoint(ep); server.add(new CoapResource(resourceName) { @Override public void handleGET(CoapExchange exchange) { exchange.respond(payload); } }); server.start(); serverAddress = ep.getAddress(); }
private static void createServerAndClientEndpoints() throws Exception { NetworkConfig config = network.getStandardTestConfig() // We make sure that the sweep deduplicator is used .setString(NetworkConfig.Keys.DEDUPLICATOR, NetworkConfig.Keys.DEDUPLICATOR_MARK_AND_SWEEP) .setInt(NetworkConfig.Keys.MARK_AND_SWEEP_INTERVAL, TEST_SWEEP_DEDUPLICATOR_INTERVAL) .setLong(NetworkConfig.Keys.EXCHANGE_LIFETIME, TEST_EXCHANGE_LIFETIME) // set ACK timeout to 500ms .setInt(NetworkConfig.Keys.ACK_TIMEOUT, ACK_TIMEOUT) .setInt(NetworkConfig.Keys.MAX_RETRANSMIT, 1) // We set the block size to 16 bytes .setInt(NetworkConfig.Keys.MAX_MESSAGE_SIZE, TEST_BLOCK_SIZE) .setInt(NetworkConfig.Keys.PREFERRED_BLOCK_SIZE, TEST_BLOCK_SIZE); // Create the endpoint for the server and create surveillant serverExchangeStore = new InMemoryMessageExchangeStore(config); serverEndpoint = new CoapEndpoint(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0), config, serverExchangeStore); serverEndpoint.addInterceptor(new MessageTracer()); clientExchangeStore = new InMemoryMessageExchangeStore(config); clientEndpoint = new CoapEndpoint(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0), config, clientExchangeStore); clientEndpoint.start(); // Create a server with two resources: one that sends piggy-backed // responses and one that sends separate responses server = new CoapServer(config); server.addEndpoint(serverEndpoint); resource = new TestResource(timer); server.add(resource); server.start(); serverPort = serverEndpoint.getAddress().getPort(); }