opcua-session-manager · v4.3.x
Docs · Reference

ManagedClient API

Every method on ManagedClient, grouped by concern. The OPC UA operations mirror OpcUaClientInterface; the daemon-only methods (connectForceNew, wasSessionReused, getSessionId) are flagged.

PhpOpcua\SessionManager\Client\ManagedClient implements OpcUaClientInterface plus three daemon-specific methods. This page lists the full surface; per-method semantics are in the linked topic pages.

For OPC UA operations (read, write, browse, subscribe, …), the operational documentation is in opcua-client — same interface, same semantics, same examples. The cards below are the signatures; click the links for the prose.

Construction

method · public
returns ManagedClient
new ManagedClient(string \$socketPath = '/tmp/opcua-session-manager.sock', float \$timeout = 30.0, ?string \$authToken = null)

See ManagedClient · Overview.

Session lifecycle (daemon-specific)

method · public
returns void
connect(string \$endpointUrl): void
method · public
returns void
connectForceNew(string \$endpointUrl): void
method · public
returns void
disconnect(): void
method · public
returns void
reconnect(): void
method · public
returns bool
isConnected(): bool
method · public
returns ConnectionState
getConnectionState(): ConnectionState
method · public
returns bool
wasSessionReused(): bool
method · public
returns ?string
getSessionId(): ?string

connectForceNew(), wasSessionReused(), and getSessionId() are not on OpcUaClientInterface — they exist only on ManagedClient. See ManagedClient · Opening and closing.

Configuration (builder-style)

Set before connect(); setters return $this for chaining.

method · public
returns self
setTimeout(float \$timeout): self
method · public
returns self
setAutoRetry(int \$maxRetries): self
method · public
returns self
setBatchSize(int \$batchSize): self
method · public
returns self
setDefaultBrowseMaxDepth(int \$maxDepth): self
method · public
returns self
setAutoDetectWriteType(bool \$enabled): self
method · public
returns self
setReadMetadataCache(bool \$enabled): self
method · public
returns self
setCache(?CacheInterface \$cache): self

Security (builder-style)

method · public
returns self
setSecurityPolicy(SecurityPolicy \$policy): self
method · public
returns self
setSecurityMode(SecurityMode \$mode): self
method · public
returns self
setClientCertificate(string \$certPath, string \$keyPath, ?string \$caCertPath = null): self
method · public
returns self
setUserCredentials(string \$username, string \$password): self
method · public
returns self
setUserCertificate(string \$certPath, string \$keyPath): self
method · public
returns self
setTrustStorePath(string \$trustStorePath): self
method · public
returns self
setTrustPolicy(?TrustPolicy \$policy): self
method · public
returns self
autoAccept(bool \$enabled = true, bool \$force = false): self

Certificate paths must sit under the daemon's --allowed-cert-dirs when that flag is set — see Daemon · Security hardening.

Trust store runtime

method · public
returns void
trustCertificate(string \$certDer): void
method · public
returns void
untrustCertificate(string \$fingerprint): void
method · public
returns ?TrustStoreInterface
getTrustStore(): ?TrustStoreInterface
method · public
returns ?TrustPolicy
getTrustPolicy(): ?TrustPolicy

Logging and events

method · public
returns self
setLogger(LoggerInterface \$logger): self
method · public
returns LoggerInterface
getLogger(): LoggerInterface
method · public
returns self
setEventDispatcher(EventDispatcherInterface \$dispatcher): self
method · public
returns EventDispatcherInterface
getEventDispatcher(): EventDispatcherInterface
method · public
returns ExtensionObjectRepository
getExtensionObjectRepository(): ExtensionObjectRepository

These are client-side loggers and dispatchers. Events fired by the OPC UA stack land in the daemon's dispatcher, not here. See ManagedClient · Differences from the direct client.

Introspection (v4.2.0+)

First call costs one IPC round-trip; subsequent calls are answered from a per-session cache.

method · public
returns bool
hasMethod(string \$name): bool
method · public
returns bool
hasModule(string \$moduleClass): bool
method · public
returns string[]
getRegisteredMethods(): string[]
method · public
returns class-string[]
getLoadedModules(): class-string[]

Reading

method · public
returns DataValue
read(NodeId|string \$nodeId, int \$attributeId = 13, bool \$refresh = false): DataValue
method · public
returns DataValue[] or builder
readMulti(?array \$readItems = null): array|ReadMultiBuilder

Writing

method · public
returns int (StatusCode)
write(NodeId|string \$nodeId, mixed \$value, ?BuiltinType \$type = null): int
method · public
returns int[] or builder
writeMulti(?array \$writeItems = null): array|WriteMultiBuilder

Browsing

method · public
returns ReferenceDescription[]
browse(NodeId|string \$nodeId, BrowseDirection \$direction = BrowseDirection::Forward, ?NodeId \$referenceTypeId = null, bool \$includeSubtypes = true, array \$nodeClasses = [], bool \$useCache = true): ReferenceDescription[]
method · public
returns ReferenceDescription[]
browseAll(NodeId|string \$nodeId, BrowseDirection \$direction = BrowseDirection::Forward, ?NodeId \$referenceTypeId = null, bool \$includeSubtypes = true, array \$nodeClasses = [], bool \$useCache = true): ReferenceDescription[]
method · public
returns BrowseNode[]
browseRecursive(NodeId|string \$nodeId, BrowseDirection \$direction = BrowseDirection::Forward, ?int \$maxDepth = null, ?NodeId \$referenceTypeId = null, bool \$includeSubtypes = true, array \$nodeClasses = []): BrowseNode[]
method · public
returns BrowseResultSet
browseWithContinuation(NodeId|string \$nodeId, ...): BrowseResultSet
method · public
returns BrowseResultSet
browseNext(string \$continuationPoint): BrowseResultSet
method · public
returns BrowsePathResult[] or builder
translateBrowsePaths(?array \$browsePaths = null): array|BrowsePathsBuilder
method · public
returns NodeId
resolveNodeId(string \$path, NodeId|string|null \$startingNodeId = null, bool \$useCache = true): NodeId

Method calls

method · public
returns CallResult
call(NodeId|string \$objectId, NodeId|string \$methodId, array \$inputArguments = []): CallResult

Subscriptions and monitored items

method · public
returns SubscriptionResult
createSubscription(float \$publishingInterval = 500.0, int \$lifetimeCount = 2400, int \$maxKeepAliveCount = 10, int \$maxNotificationsPerPublish = 0, bool \$publishingEnabled = true, int \$priority = 0): SubscriptionResult
method · public
returns MonitoredItemResult[] or builder
createMonitoredItems(int \$subscriptionId, ?array \$monitoredItems = null): MonitoredItemResult[]|MonitoredItemsBuilder
method · public
returns MonitoredItemResult
createEventMonitoredItem(int \$subscriptionId, NodeId|string \$nodeId, array \$selectFields = ['EventId','EventType','SourceName','Time','Message','Severity'], int \$clientHandle = 1): MonitoredItemResult
method · public
returns MonitoredItemModifyResult[]
modifyMonitoredItems(int \$subscriptionId, array \$itemsToModify): MonitoredItemModifyResult[]
method · public
returns int[]
deleteMonitoredItems(int \$subscriptionId, array \$monitoredItemIds): int[]
method · public
returns SetTriggeringResult
setTriggering(int \$subscriptionId, int \$triggeringItemId, array \$linksToAdd = [], array \$linksToRemove = []): SetTriggeringResult
method · public
returns int (StatusCode)
deleteSubscription(int \$subscriptionId): int
method · public
returns PublishResult
publish(array \$acknowledgements = []): PublishResult
method · public
returns TransferResult[]
transferSubscriptions(array \$subscriptionIds, bool \$sendInitialValues = false): TransferResult[]
method · public
returns array
republish(int \$subscriptionId, int \$retransmitSequenceNumber): array

History reads

method · public
returns DataValue[]
historyReadRaw(NodeId|string \$nodeId, ?DateTimeImmutable \$startTime = null, ?DateTimeImmutable \$endTime = null, int \$numValuesPerNode = 0, bool \$returnBounds = false): DataValue[]
method · public
returns DataValue[]
historyReadProcessed(NodeId|string \$nodeId, DateTimeImmutable \$startTime, DateTimeImmutable \$endTime, float \$processingInterval, NodeId \$aggregateType): DataValue[]
method · public
returns DataValue[]
historyReadAtTime(NodeId|string \$nodeId, array \$timestamps): DataValue[]

Node management

method · public
returns AddNodesResult[]
addNodes(array \$nodesToAdd): AddNodesResult[]
method · public
returns int[]
deleteNodes(array \$nodesToDelete): int[]
method · public
returns int[]
addReferences(array \$referencesToAdd): int[]
method · public
returns int[]
deleteReferences(array \$referencesToDelete): int[]

NodeManagement is optional in the OPC UA spec — servers may respond with ServiceUnsupportedException. See opcua-client — managing nodes.

Discovery and server info

method · public
returns EndpointDescription[]
getEndpoints(string \$endpointUrl, bool \$useCache = true): EndpointDescription[]
method · public
returns int
discoverDataTypes(?int \$namespaceIndex = null, bool \$useCache = true): int
method · public
returns ?string
getServerProductName(): ?string
method · public
returns ?string
getServerManufacturerName(): ?string
method · public
returns ?string
getServerSoftwareVersion(): ?string
method · public
returns ?string
getServerBuildNumber(): ?string
method · public
returns ?DateTimeImmutable
getServerBuildDate(): ?DateTimeImmutable
method · public
returns BuildInfo
getServerBuildInfo(): BuildInfo

Cache (runtime)

method · public
returns ?CacheInterface
getCache(): ?CacheInterface
method · public
returns void
invalidateCache(NodeId|string \$nodeId): void
method · public
returns void
flushCache(): void

invalidateCache() and flushCache() act on the daemon-side cache via IPC — the only cache that exists in this architecture. See Daemon · Logging and cache.

Configuration accessors

method · public
returns float
getTimeout(): float
method · public
returns int
getAutoRetry(): int
method · public
returns ?int
getBatchSize(): ?int
method · public
returns ?int
getServerMaxNodesPerRead(): ?int
method · public
returns ?int
getServerMaxNodesPerWrite(): ?int
method · public
returns int
getDefaultBrowseMaxDepth(): int

Each accessor that reaches the daemon costs one IPC round-trip. The local-only ones (getLogger, getEventDispatcher, getExtensionObjectRepository, getTrustStore, getTrustPolicy) do not.