public CompositeServiceBuilder( ServiceName<Void> name, ServiceContainer container, ServiceName<?>... additionalDependencies) { this.compositeServiceName = name; this.container = (ServiceContainerImpl) container; final ServiceBuilder<Void> installServiceBuilder = container.createService(compositeServiceName, new CompositeService()); for (ServiceName<?> serviceName : additionalDependencies) { installServiceBuilder.dependency(serviceName); } installFutures.put(compositeServiceName, (ActorFuture) installServiceBuilder.install()); }
public ServiceController( ServiceBuilder<?> builder, ServiceContainerImpl serviceContainer, CompletableActorFuture startFuture) { this.container = serviceContainer; this.startFuture = startFuture; this.service = builder.getService(); this.name = builder.getName(); this.groupName = builder.getGroupName(); this.injectors = builder.getInjectedDependencies(); this.dependencies = builder.getDependencies(); this.injectedReferences = builder.getInjectedReferences(); }
@Override @SuppressWarnings("unchecked") public <S> ServiceBuilder<S> createService(ServiceName<S> name, Service<S> service) { validCheck(); dependentServices.add(name); return new ServiceBuilder<>(name, service, container).dependency(ServiceController.this.name); }
@Override public void init(final SystemContext context) { final ServiceContainer serviceContainer = context.getServiceContainer(); final SubscriptionApiCommandMessageHandlerService messageHandlerService = new SubscriptionApiCommandMessageHandlerService(); serviceContainer .createService(SUBSCRIPTION_API_MESSAGE_HANDLER_SERVICE_NAME, messageHandlerService) .dependency( bufferingServerTransport(SUBSCRIPTION_API_SERVER_NAME), messageHandlerService.getServerTransportInjector()) .groupReference( LEADER_PARTITION_GROUP_NAME, messageHandlerService.getLeaderParitionsGroupReference()) .install(); } }
private void installFollowerPartition(final Raft raft) { final Partition partition = new Partition(partitionInfo, RaftState.FOLLOWER); final ServiceName<Partition> partitionServiceName = followerPartitionServiceName(raft.getName()); if (!startContext.hasService(partitionServiceName)) { LOG.debug("Installing follower partition service for {}", partitionInfo); startContext .createService(partitionServiceName, partition) .dependency(logStreamServiceName, partition.getLogStreamInjector()) .dependency(stateStorageFactoryServiceName, partition.getStateStorageFactoryInjector()) .group(FOLLOWER_PARTITION_GROUP_NAME) .install(); } }
@Override public ActorFuture<S> install() { final ActorFuture<S> installFuture = super.install(); installFutures.put(serviceName, (ActorFuture) installFuture); return (ActorFuture) installFuture; } }
public <T> ServiceBuilder<S> dependency( ServiceName<? extends T> serviceName, Injector<T> injector) { Collection<Injector<?>> injectors = injectedDependencies.get(serviceName); if (injectors == null) { injectors = new ArrayList<>(); } injectors.add(injector); injectedDependencies.put(serviceName, injectors); return dependency(serviceName); }
public <T> void installService( Function<ServiceContainer, ServiceBuilder<T>> serviceBuilderFactory) { final ServiceContainer serviceContainer = broker.getBrokerContext().getServiceContainer(); final ServiceBuilder<T> serviceBuilder = serviceBuilderFactory.apply(serviceContainer); try { serviceBuilder.install().get(10, TimeUnit.SECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { throw new RuntimeException("Could not install service: " + serviceBuilder.getName(), e); } }
final ServiceName<?> serviceName = serviceBuilder.getName(); if (state == ContainerState.OPEN) { final ServiceController serviceController =
@Override public <S> ServiceBuilder<S> createService(ServiceName<S> name, Service<S> service) { return new ServiceBuilder<>(name, service, this); }
@Override public void init(final SystemContext context) { final ServiceContainer serviceContainer = context.getServiceContainer(); final SubscriptionApiCommandMessageHandlerService messageHandlerService = new SubscriptionApiCommandMessageHandlerService(); serviceContainer .createService(SUBSCRIPTION_API_MESSAGE_HANDLER_SERVICE_NAME, messageHandlerService) .dependency( bufferingServerTransport(SUBSCRIPTION_API_SERVER_NAME), messageHandlerService.getServerTransportInjector()) .groupReference( LEADER_PARTITION_GROUP_NAME, messageHandlerService.getLeaderParitionsGroupReference()) .install(); } }
private void installFollowerPartition(final Raft raft) { final Partition partition = new Partition(partitionInfo, RaftState.FOLLOWER); final ServiceName<Partition> partitionServiceName = followerPartitionServiceName(raft.getName()); if (!startContext.hasService(partitionServiceName)) { LOG.debug("Installing follower partition service for {}", partitionInfo); startContext .createService(partitionServiceName, partition) .dependency(logStreamServiceName, partition.getLogStreamInjector()) .dependency(stateStorageFactoryServiceName, partition.getStateStorageFactoryInjector()) .group(FOLLOWER_PARTITION_GROUP_NAME) .install(); } }
@Override public ActorFuture<S> install() { final ActorFuture<S> installFuture = super.install(); installFutures.put(serviceName, (ActorFuture) installFuture); return (ActorFuture) installFuture; } }
public <T> ServiceBuilder<S> dependency( ServiceName<? extends T> serviceName, Injector<T> injector) { Collection<Injector<?>> injectors = injectedDependencies.get(serviceName); if (injectors == null) { injectors = new ArrayList<>(); } injectors.add(injector); injectedDependencies.put(serviceName, injectors); return dependency(serviceName); }
public <T> void installService( Function<ServiceContainer, ServiceBuilder<T>> serviceBuilderFactory) { final ServiceContainer serviceContainer = broker.getBrokerContext().getServiceContainer(); final ServiceBuilder<T> serviceBuilder = serviceBuilderFactory.apply(serviceContainer); try { serviceBuilder.install().get(10, TimeUnit.SECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { throw new RuntimeException("Could not install service: " + serviceBuilder.getName(), e); } }
final ServiceName<?> serviceName = serviceBuilder.getName(); if (state == ContainerState.OPEN) { final ServiceController serviceController =
@Override public <S> ServiceBuilder<S> createService(ServiceName<S> name, Service<S> service) { return new ServiceBuilder<>(name, service, this); }
public CompositeServiceBuilder( ServiceName<Void> name, ServiceContainer container, ServiceName<?>... additionalDependencies) { this.compositeServiceName = name; this.container = (ServiceContainerImpl) container; final ServiceBuilder<Void> installServiceBuilder = container.createService(compositeServiceName, new CompositeService()); for (ServiceName<?> serviceName : additionalDependencies) { installServiceBuilder.dependency(serviceName); } installFutures.put(compositeServiceName, (ActorFuture) installServiceBuilder.install()); }
@Override public void init(SystemContext context) { final ServiceContainer serviceContainer = context.getServiceContainer(); final List<ExporterCfg> exporters = context.getBrokerConfiguration().getExporters(); if (!exporters.isEmpty()) { final ExporterManagerService exporterManagerService = new ExporterManagerService(exporters); serviceContainer .createService(EXPORTER_MANAGER, exporterManagerService) .dependency( STREAM_PROCESSOR_SERVICE_FACTORY, exporterManagerService.getStreamProcessorServiceFactoryInjector()) .groupReference( LEADER_PARTITION_GROUP_NAME, exporterManagerService.getPartitionsGroupReference()) .install(); } } }
private void installLeaderPartition(final Raft raft) { final ServiceName<Partition> partitionServiceName = leaderPartitionServiceName(raft.getName()); final int raftMemberSize = raft.getMemberSize() + 1; // raft does not count itself as member final int replicationFactor = partitionInfo.getReplicationFactor(); if (!startContext.hasService(partitionServiceName)) { if (raftMemberSize >= replicationFactor) { LOG.debug( "Installing partition service for {}. Replication factor reached, got {}/{}.", partitionInfo, raftMemberSize, replicationFactor); final Partition partition = new Partition(partitionInfo, RaftState.LEADER); startContext .createService(partitionServiceName, partition) .dependency(leaderInitialEventCommittedServiceName(raft.getName(), raft.getTerm())) .dependency(logStreamServiceName, partition.getLogStreamInjector()) .dependency(stateStorageFactoryServiceName, partition.getStateStorageFactoryInjector()) .group(LEADER_PARTITION_GROUP_NAME) .install(); } else { LOG.debug( "Not installing partition service for {}. Replication factor not reached, got {}/{}.", partitionInfo, raftMemberSize, replicationFactor); } } }