private LwM2mObjectInstance convertToServerInstance(int instanceId, ServerConfig serverConfig) { Collection<LwM2mResource> resources = new ArrayList<>(); resources.add(LwM2mSingleResource.newIntegerResource(0, serverConfig.shortId)); resources.add(LwM2mSingleResource.newIntegerResource(1, serverConfig.lifetime)); if (serverConfig.defaultMinPeriod != null) resources.add(LwM2mSingleResource.newIntegerResource(2, serverConfig.defaultMinPeriod)); if (serverConfig.defaultMaxPeriod != null) resources.add(LwM2mSingleResource.newIntegerResource(3, serverConfig.defaultMaxPeriod)); if (serverConfig.disableTimeout != null) resources.add(LwM2mSingleResource.newIntegerResource(5, serverConfig.disableTimeout)); resources.add(LwM2mSingleResource.newBooleanResource(6, serverConfig.notifIfDisabled)); if (serverConfig.binding != null) resources.add(LwM2mSingleResource.newStringResource(7, serverConfig.binding.name())); return new LwM2mObjectInstance(instanceId, resources); } }
@Override public JsonElement serialize(Registration src, Type typeOfSrc, JsonSerializationContext context) { JsonObject element = new JsonObject(); element.addProperty("endpoint", src.getEndpoint()); element.addProperty("registrationId", src.getId()); element.add("registrationDate", context.serialize(src.getRegistrationDate())); element.add("lastUpdate", context.serialize(src.getLastUpdate())); element.addProperty("address", src.getAddress().getHostAddress() + ":" + src.getPort()); element.addProperty("smsNumber", src.getSmsNumber()); element.addProperty("lwM2mVersion", src.getLwM2mVersion()); element.addProperty("lifetime", src.getLifeTimeInSec()); element.addProperty("bindingMode", src.getBindingMode().toString()); element.add("rootPath", context.serialize(src.getRootPath())); element.add("objectLinks", context.serialize(src.getSortedObjectLinks())); element.add("secure", context.serialize(src.getIdentity().isSecure())); element.add("additionalRegistrationAttributes", context.serialize(src.getAdditionalRegistrationAttributes())); if (src.usesQueueMode()) { element.add("sleeping", context.serialize(!presenceService.isClientAwake(src))); } return element; } }
lwVersion = param.substring(6); } else if (param.startsWith(QUERY_PARAM_BINDING_MODE)) { binding = BindingMode.valueOf(param.substring(2)); } else { String[] tokens = param.split("\\=");
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((bindingMode == null) ? 0 : bindingMode.hashCode()); result = prime * result + ((identity == null) ? 0 : identity.hashCode()); result = prime * result + ((lifeTimeInSec == null) ? 0 : lifeTimeInSec.hashCode()); result = prime * result + Arrays.hashCode(objectLinks); result = prime * result + ((registrationId == null) ? 0 : registrationId.hashCode()); result = prime * result + ((smsNumber == null) ? 0 : smsNumber.hashCode()); return result; }
smsNumber = param.substring(4); } else if (param.startsWith(QUERY_PARAM_BINDING_MODE)) { binding = BindingMode.valueOf(param.substring(2));
smsNumber = param.substring(4); } else if (param.startsWith(QUERY_PARAM_BINDING_MODE)) { binding = BindingMode.valueOf(param.substring(2)); } else { String[] tokens = param.split("\\=");
private Tlv[] tlvEncode(ServerConfig value) { List<Tlv> resources = new ArrayList<Tlv>(); resources.add(new Tlv(TlvType.RESOURCE_VALUE, null, TlvEncoder.encodeInteger(value.shortId), 0)); resources.add(new Tlv(TlvType.RESOURCE_VALUE, null, TlvEncoder.encodeInteger(value.lifetime), 1)); resources.add(new Tlv(TlvType.RESOURCE_VALUE, null, TlvEncoder.encodeInteger(value.defaultMinPeriod), 2)); if (value.defaultMaxPeriod != null) { resources.add(new Tlv(TlvType.RESOURCE_VALUE, null, TlvEncoder.encodeInteger(value.defaultMaxPeriod), 3)); } if (value.disableTimeout != null) { resources.add(new Tlv(TlvType.RESOURCE_VALUE, null, TlvEncoder.encodeInteger(value.disableTimeout), 5)); } resources.add(new Tlv(TlvType.RESOURCE_VALUE, null, TlvEncoder.encodeBoolean(value.notifIfDisabled), 6)); resources.add(new Tlv(TlvType.RESOURCE_VALUE, null, TlvEncoder.encodeString(value.binding.name()), 7)); return resources.toArray(new Tlv[] {}); } }
@Override public void visit(RegisterRequest request) { coapRequest = Request.newPost(); buildRequestSettings(); coapRequest.getOptions().setContentFormat(ContentFormat.LINK.getCode()); coapRequest.getOptions().addUriPath("rd"); HashMap<String, String> attributes = new HashMap<>(); attributes.putAll(request.getAdditionalAttributes()); attributes.put("ep", request.getEndpointName()); Long lifetime = request.getLifetime(); if (lifetime != null) attributes.put("lt", lifetime.toString()); String smsNumber = request.getSmsNumber(); if (smsNumber != null) attributes.put("sms", smsNumber); String lwVersion = request.getLwVersion(); if (lwVersion != null) attributes.put("lwm2m", lwVersion); BindingMode bindingMode = request.getBindingMode(); if (bindingMode != null) attributes.put("b", bindingMode.toString()); for (Entry<String, String> attr : attributes.entrySet()) { coapRequest.getOptions().addUriQuery(attr.getKey() + "=" + attr.getValue()); } Link[] objectLinks = request.getObjectLinks(); if (objectLinks != null) coapRequest.setPayload(Link.serialize(objectLinks)); }
b = BindingMode.valueOf(v.getString("bnd", null));
o.add("sms", u.getSmsNumber()); if (u.getBindingMode() != null) o.add("bnd", u.getBindingMode().name()); if (u.getObjectLinks() != null) { JsonArray links = new JsonArray();
@Override public ReadResponse read(int resourceid) { switch (resourceid) { case 0: // short server ID return ReadResponse.success(resourceid, shortServerId); case 1: // lifetime return ReadResponse.success(resourceid, lifetime); case 2: // default min period if (null == defaultMinPeriod) return ReadResponse.notFound(); return ReadResponse.success(resourceid, defaultMinPeriod); case 3: // default max period if (null == defaultMaxPeriod) return ReadResponse.notFound(); return ReadResponse.success(resourceid, defaultMaxPeriod); case 6: // notification storing when disable or offline return ReadResponse.success(resourceid, notifyWhenDisable); case 7: // binding return ReadResponse.success(resourceid, binding.toString()); default: return super.read(resourceid); } }
lwVersion = param.substring(6); } else if (param.startsWith(QUERY_PARAM_BINDING_MODE)) { binding = BindingMode.valueOf(param.substring(2));
o.add("bnd", r.getBindingMode().name()); o.add("ep", r.getEndpoint()); o.add("regId", r.getId());
@Override public void visit(UpdateRequest request) { coapRequest = Request.newPost(); buildRequestSettings(); coapRequest.getOptions().setUriPath(request.getRegistrationId()); Long lifetime = request.getLifeTimeInSec(); if (lifetime != null) coapRequest.getOptions().addUriQuery("lt=" + lifetime); String smsNumber = request.getSmsNumber(); if (smsNumber != null) coapRequest.getOptions().addUriQuery("sms=" + smsNumber); BindingMode bindingMode = request.getBindingMode(); if (bindingMode != null) coapRequest.getOptions().addUriQuery("b=" + bindingMode.toString()); Link[] linkObjects = request.getObjectLinks(); if (linkObjects != null) { coapRequest.getOptions().setContentFormat(ContentFormat.LINK.getCode()); coapRequest.setPayload(Link.serialize(linkObjects)); } }
b = BindingMode.valueOf(v.getString("bnd", null));
o.add("bnd", r.getBindingMode().name()); o.add("ep", r.getEndpoint()); o.add("regId", r.getId());
IdentitySerDes.deserialize(jObj.get("identity").asObject()), new InetSocketAddress(jObj.getString("regAddr", null), jObj.getInt("regPort", 0))); b.bindingMode(BindingMode.valueOf(jObj.getString("bnd", null))); b.lastUpdate(new Date(jObj.getLong("lastUp", 0))); b.lifeTimeInSec(jObj.getLong("lt", 0));
o.add("sms", u.getSmsNumber()); if (u.getBindingMode() != null) o.add("bnd", u.getBindingMode().name()); if (u.getObjectLinks() != null) { JsonArray links = new JsonArray();
IdentitySerDes.deserialize(jObj.get("identity").asObject()), new InetSocketAddress(jObj.getString("regAddr", null), jObj.getInt("regPort", 0))); b.bindingMode(BindingMode.valueOf(jObj.getString("bnd", null))); b.lastUpdate(new Date(jObj.getLong("lastUp", 0))); b.lifeTimeInSec(jObj.getLong("lt", 0));