uatools 1.0.0
 
Loading...
Searching...
No Matches
ualib.cpp File Reference

Implementation of eso::uatools::Client over open62541. More...

#include <eso/uatools/ualib/client.hpp>
#include <algorithm>
#include <atomic>
#include <cctype>
#include <chrono>
#include <condition_variable>
#include <cstdint>
#include <cstdio>
#include <deque>
#include <limits>
#include <map>
#include <memory>
#include <mutex>
#include <set>
#include <string>
#include <thread>
#include <vector>
#include <ifw/fnd/defs/base.hpp>
#include <open62541/client_subscriptions.h>
#include <open62541/client_config_default.h>
#include <open62541/client_highlevel.h>
#include <open62541/plugin/log.h>
#include <open62541/types.h>

Classes

struct  eso::uatools::SdkLogContext
 
class  eso::uatools::TicketMutex
 A FIFO (ticket) mutex. More...
 
struct  eso::uatools::ReconnectPolicy
 Reconnect-policy parsed from ConnectionOptions::properties. More...
 
struct  eso::uatools::MonitorEntry
 Per-monitored-item state. More...
 
struct  eso::uatools::StateObserver
 Per-Client observer registration. More...
 
struct  eso::uatools::OpcuaConnection
 Shared OPC UA session (one per endpoint+username). More...
 
class  eso::uatools::OpcuaConnectionRegistry
 Process-wide map of shared connections. More...
 
struct  eso::uatools::Client::Impl
 Per-Client state. More...
 

Namespaces

namespace  eso
 
namespace  eso::uatools
 

Detailed Description

Implementation of eso::uatools::Client over open62541.

PIMPL strategy: this file is the ONLY place that includes <open62541/...>. Public header sees only the opaque struct Impl pointer.

Scope of this v1 implementation:

  • Configure / Connect / Disconnect / IsConnected — implemented.
  • Read / Write (single and batch) — implemented with variant conversion between ifw::fnd::defs::Value and UA_Variant.
  • GetCapabilities / GetConnectionStatus — implemented.
  • UnsubscribeAll — trivially Ok when no subscriptions are active.
  • Discover / Browse / Call / Subscribe / Unsubscribe — return Status::Unsupported for now. Additive: fill them in later without breaking the API.

User authentication: supported via ConnectionOptions::properties with keys "username" and "password". Anonymous if username is empty.