Class: LaunchDarkly::DataSystem::StreamingDataSourceBuilder

Inherits:
Object
  • Object
show all
Includes:
DataSourceBuilderCommon
Defined in:
lib/ldclient-rb/data_system/streaming_data_source_builder.rb

Overview

Builder for a streaming data source that uses Server-Sent Events (SSE) to receive real-time updates from LaunchDarkly's Flag Delivery services.

This builder can be used with ConfigBuilder#synchronizers to create custom data system configurations. Streaming provides the lowest latency for flag updates compared to polling.

== Example

streaming = LaunchDarkly::DataSystem.streaming_ds_builder .initial_reconnect_delay(2) .base_uri("https://custom-stream.example.com")

data_system = LaunchDarkly::DataSystem.custom .synchronizers([streaming])

Constant Summary collapse

DEFAULT_BASE_URI =

Returns The default base URI for streaming connections.

Returns:

  • (String)

    The default base URI for streaming connections

"https://stream.launchdarkly.com"
DEFAULT_INITIAL_RECONNECT_DELAY =

Returns The default initial reconnect delay in seconds.

Returns:

  • (Float)

    The default initial reconnect delay in seconds

1

Instance Method Summary collapse

Constructor Details

#initializeStreamingDataSourceBuilder

Returns a new instance of StreamingDataSourceBuilder.



35
36
37
# File 'lib/ldclient-rb/data_system/streaming_data_source_builder.rb', line 35

def initialize
  # No initialization needed - defaults applied in build via nil-check
end

Instance Method Details

#base_uri(uri) ⇒ self Originally defined in module DataSourceBuilderCommon

Sets the base URI for HTTP requests.

Use this to point the SDK at a Relay Proxy instance or any other URI that implements the corresponding LaunchDarkly API.

Parameters:

Returns:

  • (self)

    the builder, for chaining

#build(sdk_key, config) ⇒ LaunchDarkly::Impl::DataSystem::StreamingDataSource

Builds the streaming data source with the configured parameters.

This method is called internally by the SDK. You do not need to call it directly; instead, pass the builder to ConfigBuilder#synchronizers.

Parameters:

Returns:

  • (LaunchDarkly::Impl::DataSystem::StreamingDataSource)


63
64
65
66
67
68
69
70
# File 'lib/ldclient-rb/data_system/streaming_data_source_builder.rb', line 63

def build(sdk_key, config)
  http_opts = build_http_config
  LaunchDarkly::Impl::DataSystem::StreamingDataSource.new(
    sdk_key, http_opts,
    @initial_reconnect_delay || DEFAULT_INITIAL_RECONNECT_DELAY,
    config
  )
end

#connect_timeout(timeout) ⇒ self Originally defined in module DataSourceBuilderCommon

Sets the connect timeout for HTTP connections.

Parameters:

  • timeout (Float)

    Timeout in seconds

Returns:

  • (self)

    the builder, for chaining

#initial_reconnect_delay(delay) ⇒ StreamingDataSourceBuilder

Sets the initial delay before reconnecting after a stream connection error.

The SDK uses an exponential backoff strategy starting from this delay. The default is DEFAULT_INITIAL_RECONNECT_DELAY second.

Parameters:

  • delay (Float)

    Delay in seconds

Returns:



48
49
50
51
# File 'lib/ldclient-rb/data_system/streaming_data_source_builder.rb', line 48

def initial_reconnect_delay(delay)
  @initial_reconnect_delay = delay
  self
end

#read_timeout(timeout) ⇒ self Originally defined in module DataSourceBuilderCommon

Sets the read timeout for HTTP connections.

Parameters:

  • timeout (Float)

    Timeout in seconds

Returns:

  • (self)

    the builder, for chaining

#socket_factory(factory) ⇒ self Originally defined in module DataSourceBuilderCommon

Sets a custom socket factory for HTTP connections.

Parameters:

  • factory (#open)

    A socket factory that responds to +open+

Returns:

  • (self)

    the builder, for chaining