Skip to content

Commit

Permalink
Experiments some LwM2mEndpoint abstraction.
Browse files Browse the repository at this point in the history
  • Loading branch information
sbernard31 committed Mar 11, 2022
1 parent 21bf6b9 commit a165032
Show file tree
Hide file tree
Showing 36 changed files with 2,874 additions and 204 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
package org.eclipse.leshan.server.californium;

import java.net.InetSocketAddress;
import java.util.Collection;

import org.eclipse.californium.core.CoapResource;
import org.eclipse.californium.core.CoapServer;
Expand All @@ -37,7 +36,6 @@
import org.eclipse.leshan.core.node.codec.CodecException;
import org.eclipse.leshan.core.node.codec.LwM2mDecoder;
import org.eclipse.leshan.core.node.codec.LwM2mEncoder;
import org.eclipse.leshan.core.observation.Observation;
import org.eclipse.leshan.core.request.DownlinkRequest;
import org.eclipse.leshan.core.request.SendRequest;
import org.eclipse.leshan.core.request.exception.ClientSleepingException;
Expand All @@ -52,11 +50,7 @@
import org.eclipse.leshan.core.util.Validate;
import org.eclipse.leshan.server.californium.observation.ObservationServiceImpl;
import org.eclipse.leshan.server.californium.registration.CaliforniumRegistrationStore;
import org.eclipse.leshan.server.californium.registration.RegisterResource;
import org.eclipse.leshan.server.californium.request.CaliforniumLwM2mRequestSender;
import org.eclipse.leshan.server.californium.request.CaliforniumQueueModeRequestSender;
import org.eclipse.leshan.server.californium.request.CoapRequestSender;
import org.eclipse.leshan.server.californium.send.SendResource;
import org.eclipse.leshan.server.model.LwM2mModelProvider;
import org.eclipse.leshan.server.observation.ObservationService;
import org.eclipse.leshan.server.queue.ClientAwakeTimeProvider;
Expand All @@ -65,13 +59,10 @@
import org.eclipse.leshan.server.queue.PresenceServiceImpl;
import org.eclipse.leshan.server.queue.PresenceStateListener;
import org.eclipse.leshan.server.registration.Registration;
import org.eclipse.leshan.server.registration.RegistrationHandler;
import org.eclipse.leshan.server.registration.RegistrationIdProvider;
import org.eclipse.leshan.server.registration.RegistrationListener;
import org.eclipse.leshan.server.registration.RegistrationService;
import org.eclipse.leshan.server.registration.RegistrationServiceImpl;
import org.eclipse.leshan.server.registration.RegistrationStore;
import org.eclipse.leshan.server.registration.RegistrationUpdate;
import org.eclipse.leshan.server.request.LowerLayerConfig;
import org.eclipse.leshan.server.request.LwM2mRequestSender;
import org.eclipse.leshan.server.security.Authorizer;
Expand Down Expand Up @@ -283,8 +274,9 @@ protected PresenceServiceImpl createPresenceService(RegistrationService registra

protected CoapResource createRegisterResource(RegistrationServiceImpl registrationService, Authorizer authorizer,
RegistrationIdProvider registrationIdProvider) {
return new RegisterResource(new RegistrationHandler(registrationService, authorizer, registrationIdProvider),
linkParser);
// return new RegisterResource(new RegistrationHandler(registrationService, authorizer, registrationIdProvider),
// linkParser);
return null;
}

protected SendHandler createSendHandler() {
Expand All @@ -293,7 +285,8 @@ protected SendHandler createSendHandler() {

protected CoapResource createSendResource(SendHandler sendHandler, LwM2mModelProvider modelProvider,
LwM2mDecoder decoder, CaliforniumRegistrationStore registrationStore) {
return new SendResource(sendHandler, modelProvider, decoder, registrationStore);
// return new SendResource(sendHandler, modelProvider, decoder, registrationStore);
return null;
}

protected LwM2mRequestSender createRequestSender(Endpoint securedEndpoint, Endpoint unsecuredEndpoint,
Expand All @@ -302,39 +295,40 @@ protected LwM2mRequestSender createRequestSender(Endpoint securedEndpoint, Endpo
PresenceServiceImpl presenceService) {

// if no queue mode, create a "simple" sender
final LwM2mRequestSender requestSender;
if (presenceService == null)
requestSender = new CaliforniumLwM2mRequestSender(securedEndpoint, unsecuredEndpoint, observationService,
modelProvider, encoder, decoder, linkParser);
else
requestSender = new CaliforniumQueueModeRequestSender(presenceService,
new CaliforniumLwM2mRequestSender(securedEndpoint, unsecuredEndpoint, observationService,
modelProvider, encoder, decoder, linkParser));

// Cancel observations on client unregistering
registrationService.addListener(new RegistrationListener() {

@Override
public void updated(RegistrationUpdate update, Registration updatedRegistration, Registration previousReg) {
if (!update.getAddress().equals(previousReg.getAddress())
|| update.getPort() != previousReg.getPort()) {
requestSender.cancelOngoingRequests(previousReg);
}
}

@Override
public void unregistered(Registration registration, Collection<Observation> observations, boolean expired,
Registration newReg) {
requestSender.cancelOngoingRequests(registration);
}

@Override
public void registered(Registration registration, Registration previousReg,
Collection<Observation> previousObsersations) {
}
});

return requestSender;
// final LwM2mRequestSender requestSender;
// if (presenceService == null)
// requestSender = new CaliforniumLwM2mRequestSender(securedEndpoint, unsecuredEndpoint, observationService,
// modelProvider, encoder, decoder, linkParser);
// else
// requestSender = new CaliforniumQueueModeRequestSender(presenceService,
// new CaliforniumLwM2mRequestSender(securedEndpoint, unsecuredEndpoint, observationService,
// modelProvider, encoder, decoder, linkParser));
//
// // Cancel observations on client unregistering
// registrationService.addListener(new RegistrationListener() {
//
// @Override
// public void updated(RegistrationUpdate update, Registration updatedRegistration, Registration previousReg) {
// if (!update.getAddress().equals(previousReg.getAddress())
// || update.getPort() != previousReg.getPort()) {
// requestSender.cancelOngoingRequests(previousReg);
// }
// }
//
// @Override
// public void unregistered(Registration registration, Collection<Observation> observations, boolean expired,
// Registration newReg) {
// requestSender.cancelOngoingRequests(registration);
// }
//
// @Override
// public void registered(Registration registration, Registration previousReg,
// Collection<Observation> previousObsersations) {
// }
// });
//
// return requestSender;
return null;
}

protected void createConnectionCleaner(SecurityStore securityStore, CoapEndpoint securedEndpoint) {
Expand Down
Loading

0 comments on commit a165032

Please sign in to comment.