private CoapMessage(boolean incoming, Type type, int mId, String token, OptionSet options, byte[] payload) { this.incoming = incoming; this.timestamp = System.currentTimeMillis(); this.type = type.toString(); this.mId = mId; this.token = token;
if (!Type.CON.equals(request.getType())) { exchange.respond(ResponseCode.BAD_REQUEST); return;
if (!Type.CON.equals(request.getType())) { exchange.respond(ResponseCode.BAD_REQUEST); return;
jsonG.writeStringField("type", request.getType().name()); jsonG.writeStringField("code", request.getCode().name()); jsonG.writeNumberField("mid", request.getMID()); cborG.writeStringField("type", request.getType().name()); cborG.writeStringField("code", request.getCode().name()); cborG.writeNumberField("mid", request.getMID());
if (!Type.CON.equals(request.getType())) { exchange.respond(ResponseCode.BAD_REQUEST); return;
private void parseMessage(Message message) { message.setType(Type.valueOf(type)); message.setMID(mid);
if (!Type.CON.equals(request.getType())) { exchange.respond(ResponseCode.BAD_REQUEST); return;
/** * Formats a {@link Response} into a readable String representation. * * @param r the Response * @return the pretty print */ public static String prettyPrint(Response r) { StringBuilder sb = new StringBuilder(); sb.append("==[ CoAP Response ]============================================").append(System.lineSeparator()); sb.append(String.format("MID : %d", r.getMID())).append(System.lineSeparator()); sb.append(String.format("Token : %s", r.getTokenString())).append(System.lineSeparator()); sb.append(String.format("Type : %s", r.getType().toString())).append(System.lineSeparator()); sb.append(String.format("Status : %s", r.getCode().toString())).append(System.lineSeparator()); sb.append(String.format("Options: %s", r.getOptions().toString())).append(System.lineSeparator()); sb.append(String.format("Payload: %d Bytes", r.getPayloadSize())).append(System.lineSeparator()); if (r.getPayloadSize() > 0 && MediaTypeRegistry.isPrintable(r.getOptions().getContentFormat())) { sb.append("---------------------------------------------------------------").append(System.lineSeparator()); sb.append(r.getPayloadString()); sb.append(System.lineSeparator()); } sb.append("==============================================================="); return sb.toString(); } }
/** * Formats a {@link Request} into a readable String representation. * * @param r the Request * @return the pretty print */ public static String prettyPrint(Request r) { StringBuilder sb = new StringBuilder(); sb.append("==[ CoAP Request ]=============================================").append(System.lineSeparator()); sb.append(String.format("MID : %d", r.getMID())).append(System.lineSeparator()); sb.append(String.format("Token : %s", r.getTokenString())).append(System.lineSeparator()); sb.append(String.format("Type : %s", r.getType().toString())).append(System.lineSeparator()); sb.append(String.format("Method : %s", r.getCode().toString())).append(System.lineSeparator()); sb.append(String.format("Options: %s", r.getOptions().toString())).append(System.lineSeparator()); sb.append(String.format("Payload: %d Bytes", r.getPayloadSize())).append(System.lineSeparator()); if (r.getPayloadSize() > 0 && MediaTypeRegistry.isPrintable(r.getOptions().getContentFormat())) { sb.append("---------------------------------------------------------------").append(System.lineSeparator()); sb.append(r.getPayloadString()); sb.append(System.lineSeparator()); } sb.append("==============================================================="); return sb.toString(); }
/** * Formats a {@link Response} into a readable String representation. * * @param r the Response * @return the pretty print */ public static String prettyPrint(Response r) { StringBuilder sb = new StringBuilder(); sb.append("==[ CoAP Response ]============================================").append(System.lineSeparator()); sb.append(String.format("MID : %d", r.getMID())).append(System.lineSeparator()); sb.append(String.format("Token : %s", r.getTokenString())).append(System.lineSeparator()); sb.append(String.format("Type : %s", r.getType().toString())).append(System.lineSeparator()); sb.append(String.format("Status : %s", r.getCode().toString())).append(System.lineSeparator()); sb.append(String.format("Options: %s", r.getOptions().toString())).append(System.lineSeparator()); sb.append(String.format("Payload: %d Bytes", r.getPayloadSize())).append(System.lineSeparator()); if (r.getPayloadSize() > 0 && MediaTypeRegistry.isPrintable(r.getOptions().getContentFormat())) { sb.append("---------------------------------------------------------------").append(System.lineSeparator()); sb.append(r.getPayloadString()); sb.append(System.lineSeparator()); } sb.append("==============================================================="); return sb.toString(); }
/** * Formats a {@link Request} into a readable String representation. * * @param r the Request * @return the pretty print */ public static String prettyPrint(Request r) { StringBuilder sb = new StringBuilder(); sb.append("==[ CoAP Request ]=============================================").append(System.lineSeparator()); sb.append(String.format("MID : %d", r.getMID())).append(System.lineSeparator()); sb.append(String.format("Token : %s", r.getTokenString())).append(System.lineSeparator()); sb.append(String.format("Type : %s", r.getType().toString())).append(System.lineSeparator()); sb.append(String.format("Method : %s", r.getCode().toString())).append(System.lineSeparator()); sb.append(String.format("Options: %s", r.getOptions().toString())).append(System.lineSeparator()); sb.append(String.format("Payload: %d Bytes", r.getPayloadSize())).append(System.lineSeparator()); if (r.getPayloadSize() > 0 && MediaTypeRegistry.isPrintable(r.getOptions().getContentFormat())) { sb.append("---------------------------------------------------------------").append(System.lineSeparator()); sb.append(r.getPayloadString()); sb.append(System.lineSeparator()); } sb.append("==============================================================="); return sb.toString(); }
/** * Check type. * * @param expectedMessageType * the expected message type * @param actualMessageType * the actual message type * @return true, if successful */ protected boolean checkType(Type expectedMessageType, Type actualMessageType) { boolean success = expectedMessageType.equals(actualMessageType); if (!success) { System.out.printf("FAIL: Expected type %s, but was %s\n", expectedMessageType, actualMessageType); } else { System.out.printf("PASS: Correct type (%s)\n", actualMessageType.toString()); } return success; }
@Override public void handlePOST(CoapExchange exchange) { Request request = exchange.advanced().getRequest(); LOG.debug("POST received : {}", request); // The LWM2M spec (section 8.2) mandates the usage of confirmable messages if (!Type.CON.equals(request.getType())) { exchange.respond(ResponseCode.BAD_REQUEST); return; } List<String> uri = exchange.getRequestOptions().getUriPath(); if (uri == null || uri.size() == 0 || !RESOURCE_NAME.equals(uri.get(0))) { exchange.respond(ResponseCode.BAD_REQUEST); return; } if (uri.size() == 1) { handleRegister(exchange, request); return; } else if (uri.size() == 2) { handleUpdate(exchange, request, uri.get(1)); return; } else { exchange.respond(ResponseCode.BAD_REQUEST); return; } }
@Override public void handlePUT(CoapExchange exchange) { Request request = exchange.advanced().getRequest(); LOG.debug("UPDATE received : {}", request); if (!Type.CON.equals(request.getType())) { exchange.respond(ResponseCode.BAD_REQUEST); return; } List<String> uri = exchange.getRequestOptions().getUriPath(); if (uri == null || uri.size() != 2 || !RESOURCE_NAME.equals(uri.get(0))) { exchange.respond(ResponseCode.BAD_REQUEST); return; } LOG.debug( "Warning a client made a registration update using a CoAP PUT, a POST must be used since version V1_0-20150615-D of the specification. Request: {}", request); handleUpdate(exchange, request, uri.get(1)); }
public EmptyMessage parseEmptyMessage() { assert(!isRequest() && !isResponse()); EmptyMessage message = new EmptyMessage(Type.valueOf(type)); parseMessage(message); return message; }
@Override public String toString() { return "[Ver="+version+"|T="+CoAP.Type.valueOf(type)+"|TKL="+tokenlength+"|Code="+code+"|MID="+mid+"]"; }
@Override protected MessageHeader parseHeader(final DatagramReader reader) { int version = reader.read(VERSION_BITS); assertCorrectVersion(version); int type = reader.read(TYPE_BITS); int tokenLength = reader.read(TOKEN_LENGTH_BITS); assertValidTokenLength(tokenLength); int code = reader.read(CODE_BITS); int mid = reader.read(MESSAGE_ID_BITS); byte token[] = reader.readBytes(tokenLength); return new MessageHeader(version, CoAP.Type.valueOf(type), token, code, mid, 0); }