Lwm2m: Write Composite
This commit is contained in:
parent
2d9717f910
commit
31a86d0555
@ -61,9 +61,8 @@ import org.thingsboard.server.transport.lwm2m.server.LwM2mTransportContext;
|
||||
import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient;
|
||||
import org.thingsboard.server.transport.lwm2m.server.common.LwM2MExecutorAwareService;
|
||||
import org.thingsboard.server.transport.lwm2m.server.downlink.composite.TbLwM2MReadCompositeRequest;
|
||||
import org.thingsboard.server.transport.lwm2m.server.downlink.composite.TbLwM2MWriteResponseCompositeCallback;
|
||||
import org.thingsboard.server.transport.lwm2m.server.log.LwM2MTelemetryLogService;
|
||||
import org.thingsboard.server.transport.lwm2m.server.uplink.DefaultLwM2MUplinkMsgHandler;
|
||||
import org.thingsboard.server.transport.lwm2m.server.rpc.composite.RpcWriteCompositeRequest;
|
||||
import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
@ -73,7 +72,6 @@ import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
@ -136,19 +134,6 @@ public class DefaultLwM2mDownlinkMsgHandler extends LwM2MExecutorAwareService im
|
||||
sendCompositeRequest(client, downlink, this.config.getTimeout(), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendWriteCompositeRequest(LwM2mClient client, Map<String, Object> nodes, DefaultLwM2MUplinkMsgHandler handler) {
|
||||
// ResourceModel resourceModelWrite = client.getResourceModel(request.getVersionedId(), this.config.getModelProvider());
|
||||
TbLwM2MWriteResponseCompositeCallback callback = new TbLwM2MWriteResponseCompositeCallback(handler, logService, client, null);
|
||||
ContentFormat contentFormat = ContentFormat.SENML_JSON;
|
||||
try {
|
||||
WriteCompositeRequest downlink = new WriteCompositeRequest(contentFormat, nodes);
|
||||
sendWriteCompositeRequest(client, downlink, this.config.getTimeout(), callback);
|
||||
} catch (Exception e) {
|
||||
callback.onError(JacksonUtil.toString(nodes), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendObserveRequest(LwM2mClient client, TbLwM2MObserveRequest request, DownlinkRequestCallback<ObserveRequest, ObserveResponse> callback) {
|
||||
validateVersionedId(client, request);
|
||||
@ -258,6 +243,17 @@ public class DefaultLwM2mDownlinkMsgHandler extends LwM2MExecutorAwareService im
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendWriteCompositeRequest(LwM2mClient client, RpcWriteCompositeRequest rpcWriteCompositeRequest, DownlinkRequestCallback<WriteCompositeRequest, WriteCompositeResponse> callback) {
|
||||
ContentFormat contentFormat = ContentFormat.SENML_JSON;
|
||||
try {
|
||||
WriteCompositeRequest downlink = new WriteCompositeRequest(contentFormat, rpcWriteCompositeRequest.getNodes());
|
||||
sendWriteCompositeRequest(client, downlink, this.config.getTimeout(), callback);
|
||||
} catch (Exception e) {
|
||||
callback.onError(JacksonUtil.toString(rpcWriteCompositeRequest), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendWriteUpdateRequest(LwM2mClient client, TbLwM2MWriteUpdateRequest request, DownlinkRequestCallback<WriteRequest, WriteResponse> callback) {
|
||||
LwM2mPath resultIds = new LwM2mPath(request.getObjectId());
|
||||
@ -330,7 +326,12 @@ public class DefaultLwM2mDownlinkMsgHandler extends LwM2MExecutorAwareService im
|
||||
context.getServer().send(registration, request, timeoutInMs, response -> {
|
||||
executor.submit(() -> {
|
||||
try {
|
||||
callback.onSuccess(request, response);
|
||||
if (response.isSuccess()) {
|
||||
callback.onSuccess(request, response);
|
||||
}
|
||||
else {
|
||||
callback.onValidationError(request.getNodes().values().toString(), response.getErrorMessage());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("[{}] failed to process successful response [{}] ", registration.getEndpoint(), response, e);
|
||||
}
|
||||
|
||||
@ -23,6 +23,7 @@ import org.eclipse.leshan.core.request.ObserveRequest;
|
||||
import org.eclipse.leshan.core.request.ReadCompositeRequest;
|
||||
import org.eclipse.leshan.core.request.ReadRequest;
|
||||
import org.eclipse.leshan.core.request.WriteAttributesRequest;
|
||||
import org.eclipse.leshan.core.request.WriteCompositeRequest;
|
||||
import org.eclipse.leshan.core.request.WriteRequest;
|
||||
import org.eclipse.leshan.core.response.DeleteResponse;
|
||||
import org.eclipse.leshan.core.response.DiscoverResponse;
|
||||
@ -31,13 +32,13 @@ import org.eclipse.leshan.core.response.ObserveResponse;
|
||||
import org.eclipse.leshan.core.response.ReadCompositeResponse;
|
||||
import org.eclipse.leshan.core.response.ReadResponse;
|
||||
import org.eclipse.leshan.core.response.WriteAttributesResponse;
|
||||
import org.eclipse.leshan.core.response.WriteCompositeResponse;
|
||||
import org.eclipse.leshan.core.response.WriteResponse;
|
||||
import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient;
|
||||
import org.thingsboard.server.transport.lwm2m.server.downlink.composite.TbLwM2MReadCompositeRequest;
|
||||
import org.thingsboard.server.transport.lwm2m.server.uplink.DefaultLwM2MUplinkMsgHandler;
|
||||
import org.thingsboard.server.transport.lwm2m.server.rpc.composite.RpcWriteCompositeRequest;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public interface LwM2mDownlinkMsgHandler {
|
||||
@ -66,7 +67,7 @@ public interface LwM2mDownlinkMsgHandler {
|
||||
|
||||
void sendWriteReplaceRequest(LwM2mClient client, TbLwM2MWriteReplaceRequest request, DownlinkRequestCallback<WriteRequest, WriteResponse> callback);
|
||||
|
||||
void sendWriteCompositeRequest(LwM2mClient client, Map<String, Object> nodes, DefaultLwM2MUplinkMsgHandler handler);
|
||||
void sendWriteCompositeRequest(LwM2mClient client, RpcWriteCompositeRequest nodes, DownlinkRequestCallback<WriteCompositeRequest, WriteCompositeResponse> callback);
|
||||
|
||||
void sendWriteUpdateRequest(LwM2mClient client, TbLwM2MWriteUpdateRequest request, DownlinkRequestCallback<WriteRequest, WriteResponse> callback);
|
||||
|
||||
|
||||
@ -52,6 +52,7 @@ import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteRespon
|
||||
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteUpdateRequest;
|
||||
import org.thingsboard.server.transport.lwm2m.server.downlink.composite.TbLwM2MReadCompositeCallback;
|
||||
import org.thingsboard.server.transport.lwm2m.server.downlink.composite.TbLwM2MReadCompositeRequest;
|
||||
import org.thingsboard.server.transport.lwm2m.server.downlink.composite.TbLwM2MWriteResponseCompositeCallback;
|
||||
import org.thingsboard.server.transport.lwm2m.server.log.LwM2MTelemetryLogService;
|
||||
import org.thingsboard.server.transport.lwm2m.server.rpc.composite.RpcReadCompositeRequest;
|
||||
import org.thingsboard.server.transport.lwm2m.server.rpc.composite.RpcReadResponseCompositeCallback;
|
||||
@ -247,22 +248,18 @@ public class DefaultLwM2MRpcRequestHandler implements LwM2MRpcRequestHandler {
|
||||
}
|
||||
|
||||
/**
|
||||
* Map<String, Object> nodes = new HashMap<>();
|
||||
* nodes.put("/3/0/14", "+02");
|
||||
* nodes.put("/1/0/2", 100);
|
||||
* nodes.put("/5/0/1", "coap://localhost:5685");
|
||||
* // defaultLwM2MDownlinkMsgHandler.sendWriteCompositeRequest(lwM2MClient, nodes, this);
|
||||
* @param client
|
||||
* @param requestMsg
|
||||
* WriteComposite {"nodes":{"/3/0/14":"+04", "/1/0/2":100, "/5/0/1":"coap://localhost:5685"}}
|
||||
* {"result":"CHANGED"}
|
||||
* Map<String, Object> nodes = new HashMap<>();
|
||||
* nodes.put("/3/0/14", "+02");
|
||||
* nodes.put("/1/0/2", 100);
|
||||
* nodes.put("/5/0/1", "coap://localhost:5685");
|
||||
*/
|
||||
private void sendWriteCompositeRequest(LwM2mClient client, TransportProtos.ToDeviceRpcRequestMsg requestMsg) {
|
||||
RpcWriteCompositeRequest nodes = JacksonUtil.fromString(requestMsg.getParams(), RpcWriteCompositeRequest.class);
|
||||
// TbLwM2MWriteReplaceRequest request = TbLwM2MWriteReplaceRequest.builder().versionedId(versionedId)
|
||||
// .value(requestBody.getValue())
|
||||
// .timeout(this.config.getTimeout()).build();
|
||||
// var mainCallback = new TbLwM2MWriteResponseCallback(uplinkHandler, logService, client, versionedId);
|
||||
// var rpcCallback = new RpcEmptyResponseCallback<>(transportService, client, requestMsg, mainCallback);
|
||||
// downlinkHandler.sendWriteReplaceRequest(client, request, rpcCallback);
|
||||
RpcWriteCompositeRequest rpcWriteCompositeRequest = JacksonUtil.fromString(requestMsg.getParams(), RpcWriteCompositeRequest.class);
|
||||
var mainCallback = new TbLwM2MWriteResponseCompositeCallback(uplinkHandler, logService, client, null);
|
||||
var rpcCallback = new RpcEmptyResponseCallback<>(transportService, client, requestMsg, mainCallback);
|
||||
downlinkHandler.sendWriteCompositeRequest(client, rpcWriteCompositeRequest, rpcCallback);
|
||||
}
|
||||
|
||||
private void sendCancelObserveRequest(LwM2mClient client, TransportProtos.ToDeviceRpcRequestMsg requestMsg, String versionedId) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user