protected SimpleClientBase(StorageClientSettings settings, Resource<OrderedScheduler> schedulerResource, ManagedChannel managedChannel, boolean ownChannel) { this.settings = settings; this.managedChannel = managedChannel; this.ownChannel = ownChannel; this.channel = ClientInterceptors.intercept( managedChannel, new StorageContainerClientInterceptor(0L)); this.schedulerResource = schedulerResource; this.scheduler = SharedResourceManager.shared().get(schedulerResource); this.retryUtils = RetryUtils.create(settings.backoffPolicy(), scheduler); }
/** Sets all property values using the given {@code StorageClientSettings} as a template. */ public StorageClientSettings.Builder mergeFrom(StorageClientSettings value) { StorageClientSettings_Builder _defaults = StorageClientSettings.newBuilder(); if (!Objects.equals(value.numWorkerThreads(), _defaults.numWorkerThreads())) { numWorkerThreads(value.numWorkerThreads()); } if (_defaults._unsetProperties.contains(StorageClientSettings_Builder.Property.SERVICE_URI) || !Objects.equals(value.serviceUri(), _defaults.serviceUri())) { serviceUri(value.serviceUri()); } if (!Objects.equals(value.endpointResolver(), _defaults.endpointResolver())) { endpointResolver(value.endpointResolver()); } if (!Objects.equals(value.usePlaintext(), _defaults.usePlaintext())) { usePlaintext(value.usePlaintext()); } value.clientName().ifPresent(this::clientName); value.statsLogger().ifPresent(this::statsLogger); if (!Objects.equals(value.backoffPolicy(), _defaults.backoffPolicy())) { backoffPolicy(value.backoffPolicy()); } if (!Objects.equals(value.enableServerSideRouting(), _defaults.enableServerSideRouting())) { enableServerSideRouting(value.enableServerSideRouting()); } return (StorageClientSettings.Builder) this; }
public StorageServerClientManagerImpl(StorageClientSettings settings, Resource<OrderedScheduler> schedulerResource, Function<Endpoint, StorageServerChannel> channelFactory) { this.schedulerResource = schedulerResource; this.scheduler = SharedResourceManager.shared().get(schedulerResource); this.locationClient = new LocationClientImpl(settings, scheduler); this.channelManager = new StorageServerChannelManager(channelFactory); this.scChannelManager = new StorageContainerChannelManager( this.channelManager, this.locationClient, scheduler); this.rootRangeClient = new RootRangeClientImplWithRetries( new RootRangeClientImpl( scheduler, scChannelManager), settings.backoffPolicy(), scheduler ); this.streamMetadataCache = new StreamMetadataCache(rootRangeClient); this.metaRangeClients = Maps.newConcurrentMap(); }
private void openTableImpl(String namespaceName, String tableName, CompletableFuture<PTable<ByteBuf, ByteBuf>> future) { FutureUtils.proxyTo( getStreamProperties(namespaceName, tableName).thenComposeAsync(props -> { if (log.isInfoEnabled()) { log.info("Retrieved table properties for table {}/{} : {}", namespaceName, tableName, props); } if (StorageType.TABLE != props.getStreamConf().getStorageType()) { return FutureUtils.exception(new ApiException( "Can't open a non-table storage entity : " + props.getStreamConf().getStorageType()) ); } return new PByteBufTableImpl( tableName, props, serverManager, scheduler.chooseThread(props.getStreamId()), settings.backoffPolicy() ).initialize(); }), future ); }