/** * Parses a byte array into a CoAP Message. * * @param msg the byte array to parse. * @return the message. * @throws MessageFormatException if the array cannot be parsed into a message. */ public final Message parseMessage(final byte[] msg) { String message = "illegal message code"; DatagramReader reader = new DatagramReader(msg); MessageHeader header = parseHeader(reader); try { if (CoAP.isRequest(header.getCode())) { return parseMessage(reader, header, new Request(CoAP.Code.valueOf(header.getCode()))); } else if (CoAP.isResponse(header.getCode())) { return parseMessage(reader, header, new Response(CoAP.ResponseCode.valueOf(header.getCode()))); } else if (CoAP.isEmptyMessage(header.getCode())) { return parseMessage(reader, header, new EmptyMessage(header.getType())); } } catch (MessageFormatException e) { /** use message to add CoAP message specific information */ message = e.getMessage(); } throw new CoAPMessageFormatException(message, header.getMID(), header.getCode(), CoAP.Type.CON == header.getType()); }