Search in sources :

Example 1 with DeregisterResponse

use of org.eclipse.leshan.core.response.DeregisterResponse in project leshan by eclipse.

the class RegistrationEngine method deregister.

private boolean deregister() throws InterruptedException {
    if (registrationID == null)
        return true;
    ServersInfo serversInfo = ServersInfoExtractor.getInfo(objectEnablers);
    DmServerInfo dmInfo = serversInfo.deviceMangements.values().iterator().next();
    if (dmInfo == null) {
        LOG.error("Trying to deregister device but there is no LWM2M server config.");
        return false;
    }
    // Send deregister request
    LOG.info("Trying to deregister to {} ...", dmInfo.getFullUri());
    DeregisterResponse response = sender.send(dmInfo.getAddress(), dmInfo.isSecure(), new DeregisterRequest(registrationID), DEREGISTRATION_TIMEOUT);
    if (response == null) {
        registrationID = null;
        LOG.error("Deregistration failed: Timeout.");
        if (observer != null) {
            observer.onDeregistrationTimeout(dmInfo);
        }
        return false;
    } else if (response.isSuccess() || response.getCode() == ResponseCode.NOT_FOUND) {
        registrationID = null;
        cancelUpdateTask(true);
        LOG.info("De-register response {} {}.", response.getCode(), response.getErrorMessage());
        if (observer != null) {
            if (response.isSuccess()) {
                observer.onDeregistrationSuccess(dmInfo, registrationID);
            } else {
                observer.onDeregistrationFailure(dmInfo, response.getCode(), response.getErrorMessage());
            }
        }
        return true;
    } else {
        LOG.error("Deregistration failed: {} {}.", response.getCode(), response.getErrorMessage());
        if (observer != null) {
            observer.onDeregistrationFailure(dmInfo, response.getCode(), response.getErrorMessage());
        }
        return false;
    }
}
Also used : DeregisterResponse(org.eclipse.leshan.core.response.DeregisterResponse) DeregisterRequest(org.eclipse.leshan.core.request.DeregisterRequest)

Example 2 with DeregisterResponse

use of org.eclipse.leshan.core.response.DeregisterResponse in project leshan by eclipse.

the class RegisterResource method handleDeregister.

private void handleDeregister(CoapExchange exchange, String registrationId) {
    // Get identity
    Identity sender = extractIdentity(exchange.advanced().getRequest().getSourceContext());
    // Create request
    DeregisterRequest deregisterRequest = new DeregisterRequest(registrationId);
    // Handle request
    final SendableResponse<DeregisterResponse> sendableResponse = registrationHandler.deregister(sender, deregisterRequest);
    DeregisterResponse deregisterResponse = sendableResponse.getResponse();
    // Create CoAP Response from LwM2m request
    if (deregisterResponse.getCode().isError()) {
        exchange.respond(toCoapResponseCode(deregisterResponse.getCode()), deregisterResponse.getErrorMessage());
    } else {
        exchange.respond(toCoapResponseCode(deregisterResponse.getCode()));
    }
    sendableResponse.sent();
}
Also used : DeregisterResponse(org.eclipse.leshan.core.response.DeregisterResponse) Identity(org.eclipse.leshan.core.request.Identity) EndpointContextUtil.extractIdentity(org.eclipse.leshan.core.californium.EndpointContextUtil.extractIdentity) DeregisterRequest(org.eclipse.leshan.core.request.DeregisterRequest)

Aggregations

DeregisterRequest (org.eclipse.leshan.core.request.DeregisterRequest)2 DeregisterResponse (org.eclipse.leshan.core.response.DeregisterResponse)2 EndpointContextUtil.extractIdentity (org.eclipse.leshan.core.californium.EndpointContextUtil.extractIdentity)1 Identity (org.eclipse.leshan.core.request.Identity)1