import org.apache.commons.lang.StringUtils; //导入方法依赖的package包/类
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 (options != null) {
List opts = options.asSortedList();
if (!opts.isEmpty()) {
Map> optMap = new HashMap<>();
for (Option opt : opts) {
String strOption = OptionNumberRegistry.toString(opt.getNumber());
List values = optMap.get(strOption);
if (values == null) {
values = new ArrayList<>();
optMap.put(strOption, values);
}
values.add(opt.toValueString());
}
StringBuilder builder = new StringBuilder();
for (Entry> e : optMap.entrySet()) {
if (builder.length() > 0) {
builder.append(" - ");
}
builder.append(e.getKey()).append(": ").append(StringUtils.join(e.getValue(), ", "));
}
this.options = builder.toString();
}
}
if (payload != null && payload.length > 0) {
String strPayload = new String(payload, StandardCharsets.UTF_8);
if (StringUtils.isAsciiPrintable(strPayload)) {
this.payload = strPayload;
} else {
this.payload = "Hex:" + Hex.encodeHexString(payload);
}
}
}