Esempio n. 1
0
  @Override
  public void stop() {
    if (context.needToCheckClientState()) {
      checkClientStateNot(State.CREATED, "Kaa client is not started");
      checkClientStateNot(State.STOPPED, "Kaa client is already stopped");
    }
    setClientState(State.STOPPED);

    getLifeCycleExecutor()
        .submit(
            new Runnable() {
              @Override
              public void run() {
                try {
                  logCollector.stop();
                  kaaClientState.persist();
                  channelManager.shutdown();
                  if (stateListener != null) {
                    stateListener.onStopped();
                  }
                } catch (Exception e) {
                  LOG.error("Stop failed", e);
                  if (stateListener != null) {
                    stateListener.onStopFailure(new KaaException(e));
                  }
                }
              }
            });
    context.getExecutorContext().stop();
  }
Esempio n. 2
0
 protected KaaInternalChannelManager buildChannelManager(
     BootstrapManager bootstrapManager,
     Map<TransportProtocolId, List<TransportConnectionInfo>> bootstrapServers) {
   KaaInternalChannelManager kaaInternalChannelManager =
       new DefaultChannelManager(
           bootstrapManager, bootstrapServers, context.getExecutorContext(), failureListener);
   kaaInternalChannelManager.setConnectivityChecker(context.createConnectivityChecker());
   return kaaInternalChannelManager;
 }
Esempio n. 3
0
 protected BootstrapManager buildBootstrapManager(
     KaaClientProperties properties,
     KaaClientState kaaClientState,
     TransportContext transportContext) {
   return new DefaultBootstrapManager(
       transportContext.getBootstrapTransport(), context.getExecutorContext(), failureListener);
 }
Esempio n. 4
0
 protected DefaultLogCollector buildLogCollector(TransportContext transportContext) {
   return new DefaultLogCollector(
       transportContext.getLogTransport(),
       context.getExecutorContext(),
       channelManager,
       failoverManager);
 }
Esempio n. 5
0
  @Override
  public void resume() {
    if (context.needToCheckClientState()) {
      checkClientState(State.PAUSED, "Kaa client isn't paused");
    }
    setClientState(State.STARTED);

    getLifeCycleExecutor()
        .submit(
            new Runnable() {
              @Override
              public void run() {
                try {
                  channelManager.resume();
                  if (stateListener != null) {
                    stateListener.onResume();
                  }
                } catch (Exception e) {
                  LOG.error("Resume failed", e);
                  if (stateListener != null) {
                    stateListener.onResumeFailure(new KaaException(e));
                  }
                }
              }
            });
  }
Esempio n. 6
0
  @Override
  public void pause() {
    if (context.needToCheckClientState()) {
      checkClientState(
          State.STARTED,
          "Kaa client is not started (" + clientState.toString().toLowerCase() + " now)");
    }
    setClientState(State.PAUSED);

    getLifeCycleExecutor()
        .submit(
            new Runnable() {
              @Override
              public void run() {
                try {
                  kaaClientState.persist();
                  channelManager.pause();
                  if (stateListener != null) {
                    stateListener.onPaused();
                  }
                } catch (Exception e) {
                  LOG.error("Pause failed", e);
                  if (stateListener != null) {
                    stateListener.onPauseFailure(new KaaException(e));
                  }
                }
              }
            });
  }
Esempio n. 7
0
 protected DefaultEndpointRegistrationManager buildRegistrationManager(
     KaaClientState kaaClientState, TransportContext transportContext) {
   return new DefaultEndpointRegistrationManager(
       kaaClientState,
       context.getExecutorContext(),
       transportContext.getUserTransport(),
       transportContext.getProfileTransport());
 }
Esempio n. 8
0
  @Override
  public void start() {
    if (context.needToCheckClientState()) {
      checkClientStateNot(State.STARTED, "Kaa client is already started");
      checkClientStateNot(State.PAUSED, "Kaa client is paused, need to be resumed");
    }
    setClientState(State.STARTED);

    checkReadiness();

    context.getExecutorContext().init();
    getLifeCycleExecutor()
        .submit(
            new Runnable() {
              @Override
              public void run() {
                LOG.debug("Client startup initiated");
                try {
                  // Load configuration
                  configurationManager.init();
                  bootstrapManager.receiveOperationsServerList();
                  if (stateListener != null) {
                    stateListener.onStarted();
                  }
                } catch (TransportException e) {
                  LOG.error("Start failed", e);
                  if (stateListener != null) {
                    stateListener.onStartFailure(new KaaClusterConnectionException(e));
                  }
                } catch (KaaRuntimeException e) {
                  LOG.error("Start failed", e);
                  if (stateListener != null) {
                    stateListener.onStartFailure(new KaaException(e));
                  }
                }
              }
            });
  }
Esempio n. 9
0
 public AbstractHttpClient createHttpClient(
     String url, PrivateKey privateKey, PublicKey publicKey, PublicKey remotePublicKey) {
   return context.createHttpClient(url, privateKey, publicKey, remotePublicKey);
 }
Esempio n. 10
0
 protected DefaultNotificationManager buildNotificationManager(
     KaaClientState kaaClientState, TransportContext transportContext) {
   return new DefaultNotificationManager(
       kaaClientState, context.getExecutorContext(), transportContext.getNotificationTransport());
 }
Esempio n. 11
0
 protected DefaultEventManager buildEventManager(
     KaaClientState kaaClientState, TransportContext transportContext) {
   return new DefaultEventManager(
       kaaClientState, context.getExecutorContext(), transportContext.getEventTransport());
 }
Esempio n. 12
0
 protected FailoverManager buildFailoverManager(KaaChannelManager channelManager) {
   return new DefaultFailoverManager(channelManager, context.getExecutorContext());
 }
Esempio n. 13
0
 private ExecutorService getLifeCycleExecutor() {
   return context.getExecutorContext().getLifeCycleExecutor();
 }
Esempio n. 14
0
  AbstractKaaClient(
      KaaClientPlatformContext context,
      KaaClientStateListener listener,
      boolean isAutogeneratedKeys)
      throws IOException, GeneralSecurityException {

    this.context = context;
    this.stateListener = listener;

    if (context.getProperties() != null) {
      this.properties = context.getProperties();
    } else {
      this.properties = new KaaClientProperties();
    }
    this.properties.setBase64(context.getBase64());

    Map<TransportProtocolId, List<TransportConnectionInfo>> bootstrapServers =
        this.properties.getBootstrapServers();
    if (bootstrapServers == null || bootstrapServers.isEmpty()) {
      throw new RuntimeException("Unable to obtain list of bootstrap services."); // NOSONAR
    }

    for (Map.Entry<TransportProtocolId, List<TransportConnectionInfo>> cursor :
        bootstrapServers.entrySet()) {
      Collections.shuffle(cursor.getValue());
    }

    kaaClientState =
        new KaaClientPropertiesState(
            context.createPersistentStorage(),
            context.getBase64(),
            properties,
            isAutogeneratedKeys);

    TransportContext transportContext = buildTransportContext(properties, kaaClientState);

    bootstrapManager = buildBootstrapManager(properties, kaaClientState, transportContext);

    channelManager = buildChannelManager(bootstrapManager, bootstrapServers);
    failoverManager = buildFailoverManager(channelManager);
    channelManager.setFailoverManager(failoverManager);

    initializeChannels(channelManager, transportContext);

    bootstrapManager.setChannelManager(channelManager);
    bootstrapManager.setFailoverManager(failoverManager);

    profileManager = buildProfileManager(transportContext);
    notificationManager = buildNotificationManager(kaaClientState, transportContext);
    eventManager = buildEventManager(kaaClientState, transportContext);
    endpointRegistrationManager = buildRegistrationManager(kaaClientState, transportContext);
    logCollector = buildLogCollector(transportContext);
    configurationManager =
        buildConfigurationManager(properties, kaaClientState, context.getExecutorContext());

    transportContext.getRedirectionTransport().setBootstrapManager(bootstrapManager);
    transportContext.getBootstrapTransport().setBootstrapManager(bootstrapManager);
    transportContext.getProfileTransport().setProfileManager(profileManager);
    transportContext.getEventTransport().setEventManager(eventManager);
    transportContext.getNotificationTransport().setNotificationProcessor(notificationManager);
    transportContext
        .getConfigurationTransport()
        .setConfigurationHashContainer(configurationManager.getConfigurationHashContainer());
    transportContext
        .getConfigurationTransport()
        .setConfigurationProcessor(configurationManager.getConfigurationProcessor());
    transportContext
        .getUserTransport()
        .setEndpointRegistrationProcessor(endpointRegistrationManager);
    transportContext.getLogTransport().setLogProcessor(logCollector);
    transportContext.initTransports(this.channelManager, this.kaaClientState);

    eventFamilyFactory = new EventFamilyFactory(eventManager, context.getExecutorContext());
  }