54 bool connect(
const std::string& addr );
55 bool connect(
const std::string& addr,
const std::string& user,
const std::string& pass );
56 void disconnect()
noexcept;
59 enum class VarType :
int
64 static VarType str2vtype( std::string_view s );
69 std::variant<int32_t, float> value = { 0 };
71 VarType type = { VarType::Int32 };
83 return std::get<VType>(value);
85 catch(
const std::bad_variant_access&) {}
91 using ErrorCode =
unsigned int;
93 ErrorCode read( std::vector<UA_ReadValueId>& attrs, std::vector<ResultVar>& result );
94 ErrorCode write32( std::vector<UA_WriteValue>& values );
95 ErrorCode write32(
const std::string& attr, int32_t value );
96 ErrorCode set(
const std::string& attr,
bool set );
97 ErrorCode write(
const UA_WriteValue& val );
98 static UA_WriteValue makeWriteValue32(
const std::string& name, int32_t val );
99 static UA_ReadValueId makeReadValue32(
const std::string& name );
101 void onSessionActivated(opcua::StateCallback callback)
103 auto& exceptionCatcher = opcua::detail::getContext(client).exceptionCatcher;
104 client.onSessionActivated(exceptionCatcher.wrapCallback(std::move(callback)));
107 void runIterate(uint16_t timeoutMilliseconds)
109 client.runIterate(timeoutMilliseconds);
112 opcua::Subscription<opcua::Client> createSubscription()
114 return client.createSubscription();
117 void rethrowException()
119 auto& exceptionCatcher = opcua::detail::getContext(client).exceptionCatcher;
120 exceptionCatcher.rethrow();
123 std::vector<opcua::MonitoredItem<opcua::Client>> subscribeDataChanges(
124 opcua::Subscription<opcua::Client>& sub,
125 std::vector<UA_ReadValueId>& attrs,
126 std::vector<uniset::DataChangeCallback>& callbacks,
127 std::vector<uniset::DeleteMonitoredItemCallback>& delete_callbacks,
130 inline size_t getSubscriptionSize()
132 return monitoredItems.size();
137 opcua::Client client;
138 UA_Variant* val = {
nullptr };
140 using SubMonId = std::pair<uint32_t, uint32_t>;
142 std::map<SubMonId, std::unique_ptr<uniset::MonitoredItem>> monitoredItems;