Skip to content

Complete S7CommPlus data subscriptions with notification receive and lifecycle handling #838

Description

@gijzelaerr

Problem

The sync and async clients expose create_subscription(), and its documentation directs users to receive_notification(), but no such method exists. There is no notification dispatcher, decoding path, credit replenishment or reconnect lifecycle.

The public API therefore advertises a feature that cannot be consumed.

Alarm subscriptions remain tracked separately in #794.

Scope

  • Build on the response/notification dispatcher rather than reading directly from the request path.
  • Decode data-change notifications and associate them with the correct subscription object/reference IDs.
  • Expose a bounded sync iterator/callback API and async iterator/queue API.
  • Handle finite credit replenishment.
  • Buffer a notification that arrives before the CreateObject response registers its subscription ID.
  • Delete subscriptions cleanly and prevent stale notifications from being delivered after ID reuse.
  • Define behavior on disconnect and optional resubscription after reconnect.

Acceptance criteria

  • A created subscription can deliver decoded values through a documented public API.
  • Notifications cannot satisfy ordinary requests.
  • Initial, burst and out-of-order lifecycle cases are covered by deterministic tests.
  • Queues are bounded and expose overflow/missed-update diagnostics.
  • Delete/disconnect releases PLC objects and local receiver resources.
  • Documentation no longer references a nonexistent method.

Dependencies

  • Response correlation and unsolicited-frame routing
  • Typed symbolic tag descriptors for name-based subscriptions

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions