Class TableDataServiceFactory

java.lang.Object
io.deephaven.enterprise.tabledataservice.TableDataServiceFactory
All Implemented Interfaces:
io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.endpoint.DynamicResolverMixin, io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.endpoint.EndpointResolver

public class TableDataServiceFactory extends Object implements io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.endpoint.DynamicResolverMixin
The standard factory for creating TableDataService instances using a DataRoutingService instance
  • Nested Class Summary

    Nested classes/interfaces inherited from interface io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.endpoint.DynamicResolverMixin

    io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.endpoint.DynamicResolverMixin.DeferredDISEndpointServiceRegistryImpl, io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.endpoint.DynamicResolverMixin.DeferredEndpointServiceRegistryImpl, io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.endpoint.DynamicResolverMixin.DeferredLASEndpointServiceRegistryImpl
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final long
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    TableDataServiceFactory(@NotNull io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.DataRoutingService routingService, @NotNull io.deephaven.shadow.enterprise.com.illumon.iris.db.schema.SchemaService schemaService, @NotNull ProtocolDriverFactory driverFactory)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    getOrCreateTableDataService(@NotNull io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.TableDataServiceConfig tableDataServiceConfig, boolean forProducer, boolean allowIOMessageFlush)
    Create the TableDataService starting with an actual TableDataServiceConfig instance
    getOrCreateTableDataService(@NotNull String tdsName, boolean allowIOMessageFlush, boolean forProducer)
    Get a TableDataService based on the routing instructions provided by the DataRoutingService provided at construction time.
    makeRemoteTableDataService(@NotNull String serviceName, io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.DataRoutingService.PropertyProvider properties, boolean allowIOMessageFlush)
    Create a new RemoteTableDataService, allowing for subclass overrides for testing.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.endpoint.DynamicResolverMixin

    resolveLogAggregatorEndpoint, resolveTableDataEndpoint, resolveTailerEndpoint
  • Field Details

    • DEFAULT_TABLE_DATA_SERVICE_REQUEST_TIMEOUT_MILLIS

      public static final long DEFAULT_TABLE_DATA_SERVICE_REQUEST_TIMEOUT_MILLIS
      See Also:
  • Constructor Details

    • TableDataServiceFactory

      public TableDataServiceFactory(@NotNull @NotNull io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.DataRoutingService routingService, @NotNull @NotNull io.deephaven.shadow.enterprise.com.illumon.iris.db.schema.SchemaService schemaService, @NotNull @NotNull ProtocolDriverFactory driverFactory)
  • Method Details

    • getOrCreateTableDataService

      public TableDataService getOrCreateTableDataService(@NotNull @NotNull String tdsName, boolean allowIOMessageFlush, boolean forProducer) throws IOException
      Get a TableDataService based on the routing instructions provided by the DataRoutingService provided at construction time. The returned service may be new, or it may be a cached, previously created one.
      Parameters:
      tdsName - the name of the table data service to create
      allowIOMessageFlush - if I/O messages should be flushed
      forProducer - if the resultant TableDataService is for a producer such as a TDCP
      Returns:
      a TableDataService which may or may not be a complex composition of other services.
      Throws:
      IOException
    • getOrCreateTableDataService

      @NotNull public @NotNull TableDataService getOrCreateTableDataService(@NotNull @NotNull io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.TableDataServiceConfig tableDataServiceConfig, boolean forProducer, boolean allowIOMessageFlush) throws IOException
      Create the TableDataService starting with an actual TableDataServiceConfig instance
      Parameters:
      tableDataServiceConfig - the TableDataServiceConfig instance (from the map)
      forProducer - the caller is a producer if true, else consumer. Consumers just connect to the config, producers connect to the embedded services and provide a remote TDS endpoint.
      allowIOMessageFlush - boolean to be passed to Remote TDS. Should be false for queries. This is needed because this method is called recursively.
      Returns:
      a TableDataService as configured
      Throws:
      io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.DataRoutingConfigurationException - if the configuration is invalid
      IOException
    • makeRemoteTableDataService

      protected RemoteTableDataService makeRemoteTableDataService(@NotNull @NotNull String serviceName, @NotNull io.deephaven.shadow.enterprise.com.illumon.iris.db.v2.routing.DataRoutingService.PropertyProvider properties, boolean allowIOMessageFlush)
      Create a new RemoteTableDataService, allowing for subclass overrides for testing. This override assumes some of the parameters needed to construct a RemoteTableDataService.
      Parameters:
      serviceName - The name to give the remote service
      Returns:
      a new RemoteTableDataService, ready to be connected