@flux-control/effect-modbus-rs
    Preparing search index...

    Class TcpTransportService

    Scoped Effect service wrapping the modbus-rs AsyncTcpTransport for TCP/IP Modbus communication.

    The transport connection is opened lazily on the first call to withClient(unitId) and automatically closed when the consuming Effect.Scope | Scope finalizes.

    Clients are created per unitId via AsyncTcpTransport.createClient and cached, so repeated requests for the same unit ID reuse the same client.

    • AsyncTcpTransport — Upstream modbus-rs TCP transport.
    • TcpTransportOpenOptions — Configuration for the TCP connection.
    • makeTransportScoped — Generic lifecycle logic from shared-transport.

    Hierarchy

    • {
          clearRequestTimeout: (
              ...args: [],
          ) => Effect<undefined, ModbusNotConnectedError, never>;
          close: (...args: []) => Effect<void, ModbusError, Scope>;
          connectionState: SubscriptionRef<
              {}
              | {}
              | { attempt: number }
              | { cause: ModbusError },
          >;
          hasPendingRequests: () => boolean;
          reconnect: (...args: []) => Effect<undefined, ModbusError, never>;
          setRequestTimeout: (
              ...args: [timeoutMs: number],
          ) => Effect<undefined, ModbusNotConnectedError, never>;
          withClient: (
              ...args: [
                  unitId: number,
                  clientOptions?: { retry?: ModbusRetryPolicy },
              ],
          ) => Effect<EffectModbusClient, ModbusError, never>;
      } & {}
      • TcpTransportService
    Index
    • Parameters

      • _: {
            clearRequestTimeout: (
                ...args: [],
            ) => Effect<undefined, ModbusNotConnectedError, never>;
            close: (...args: []) => Effect<void, ModbusError, Scope>;
            connectionState: SubscriptionRef<
                {}
                | {}
                | { attempt: number }
                | { cause: ModbusError },
            >;
            hasPendingRequests: () => boolean;
            reconnect: (...args: []) => Effect<undefined, ModbusError, never>;
            setRequestTimeout: (
                ...args: [timeoutMs: number],
            ) => Effect<undefined, ModbusNotConnectedError, never>;
            withClient: (
                ...args: [
                    unitId: number,
                    clientOptions?: { retry?: ModbusRetryPolicy },
                ],
            ) => Effect<EffectModbusClient, ModbusError, never>;
        }

      Returns TcpTransportService

    clearRequestTimeout: (
        ...args: [],
    ) => Effect<undefined, ModbusNotConnectedError, never> = ...
    close: (...args: []) => Effect<void, ModbusError, Scope> = ...
    connectionState: SubscriptionRef<
        {}
        | {}
        | { attempt: number }
        | { cause: ModbusError },
    >
    hasPendingRequests: () => boolean = ...
    reconnect: (...args: []) => Effect<undefined, ModbusError, never> = ...
    setRequestTimeout: (
        ...args: [timeoutMs: number],
    ) => Effect<undefined, ModbusNotConnectedError, never> = ...
    withClient: (
        ...args: [unitId: number, clientOptions?: { retry?: ModbusRetryPolicy }],
    ) => Effect<EffectModbusClient, ModbusError, never> = ...
    • Creates a Layer providing an in-memory mock TcpTransportService for testing or development.

      Accepts an array of SlaveDeviceDefinition describing the simulated Modbus slaves and their register/coil maps.

      Parameters

      • devices: readonly {
            coils: readonly { address: number; default: boolean }[];
            discreteInputs: readonly { address: number; default: boolean }[];
            holdingRegisters: readonly { address: number; default: number }[];
            inputRegisters: readonly { address: number; default: number }[];
            unitId: number;
        }[]

        Slave device definitions for the mock.

      Returns (
          options: TcpTransportOpenOptions & TransportResilienceOptions & MockFaultOptions,
      ) => Layer<TcpTransportService, never, never>

      A function that takes TcpTransportOpenOptions and returns a scoped Layer providing the mock service.

      makeMockTransport — The underlying mock factory.