81 for (
const auto& kv : init)
Set(kv.first, kv.second);
85 void Set(std::string key, std::string val) {
87 if (it != m_items.end()) it->second = std::move(val);
88 else m_items.emplace_back(std::move(key), std::move(val));
91 const std::string*
Get(std::string_view key)
const {
93 return it == m_items.end() ? nullptr : &it->second;
96 std::string
GetOr(std::string_view key,
97 std::string_view fallback)
const {
99 return v ? *v : std::string(fallback);
103 return Find(key) != m_items.end();
108 if (it == m_items.end())
return false;
113 bool Empty()
const {
return m_items.empty(); }
114 std::size_t
Size()
const {
return m_items.size(); }
115 void Reserve(std::size_t n) { m_items.reserve(n); }
126 return std::find_if(m_items.begin(), m_items.end(),
128 return kv.first == key;
131 iterator Find(std::string_view key) {
132 return std::find_if(m_items.begin(), m_items.end(),
134 return kv.first == key;
154 : m_on_destruct(std::move(on_destruct)) {}
162 void Reset() { m_on_destruct =
nullptr; }
165 UnregisterCallback m_on_destruct;
179 : m_flag(std::move(flag)) {}
181 return m_flag && m_flag->load(std::memory_order_acquire);
184 std::shared_ptr<std::atomic_bool> m_flag;
190 : m_flag(std::make_shared<std::atomic_bool>(false)) {}
194 void Cancel() { m_flag->store(
true, std::memory_order_release); }
196 return m_flag->load(std::memory_order_acquire);
199 std::shared_ptr<std::atomic_bool> m_flag;
247 std::vector<std::uint8_t>,
249 std::vector<std::int32_t>,
250 std::vector<std::uint32_t>,
251 std::vector<std::int64_t>,
252 std::vector<std::uint64_t>,
255 std::vector<std::string>,
261 std::vector<std::int16_t>,
262 std::vector<std::uint16_t>,
263 std::vector<std::int8_t>>;
288 std::optional<std::chrono::system_clock::time_point>
timestamp;
317 std::optional<ConnectionInfo>
info;
511 std::vector<SubscribeItemResult>
items;
518 std::vector<UnsubscribeItemResult>
items;
569 [[nodiscard]]
virtual Result
void Cancel()
Definition iCommAdapter.hpp:194
CancellationToken Token() const
Definition iCommAdapter.hpp:191
CancellationSource()
Definition iCommAdapter.hpp:189
bool Cancelled() const
Definition iCommAdapter.hpp:195
Definition iCommAdapter.hpp:175
CancellationToken()=default
CancellationToken(std::shared_ptr< std::atomic_bool > flag)
Definition iCommAdapter.hpp:178
bool Cancelled() const
Definition iCommAdapter.hpp:180
Definition iCommAdapter.hpp:558
virtual Result UnsubscribeAll()=0
virtual Result Disconnect()=0
virtual UnsubscribeResult Unsubscribe(const std::vector< Address > &nodes)=0
virtual DiscoverResult Discover(const DiscoverRequest &request)=0
virtual Result Connect()=0
virtual bool IsConnected() const =0
virtual CallResult Call(const CallRequest &request)=0
virtual ReadResult Read(const ReadRequest &request)=0
virtual RegistrationToken SetConnectionStateHandler(ConnectionStateHandler handler)=0
virtual std::uint32_t GetContractVersion() const
Definition iCommAdapter.hpp:562
virtual Capabilities GetCapabilities() const =0
virtual SubscribeResult Subscribe(const std::vector< Address > &nodes, SubscriptionHandler handler, const SubscribeOpts &opts={})=0
virtual WriteResult Write(const WriteRequest &request)=0
virtual BrowseResult Browse(const BrowseRequest &request)=0
virtual Result Configure(const ConnectionOptions &options)=0
virtual ~ICommAdapter()=default
virtual ConnectionStatus GetConnectionStatus() const =0
Definition iCommAdapter.hpp:72
std::size_t Size() const
Definition iCommAdapter.hpp:114
std::pair< std::string, std::string > value_type
Definition iCommAdapter.hpp:74
iterator end()
Definition iCommAdapter.hpp:120
PropertyMap(std::initializer_list< value_type > init)
Definition iCommAdapter.hpp:80
storage::const_iterator const_iterator
Definition iCommAdapter.hpp:77
std::string GetOr(std::string_view key, std::string_view fallback) const
Definition iCommAdapter.hpp:96
iterator begin()
Definition iCommAdapter.hpp:119
void Set(std::string key, std::string val)
Definition iCommAdapter.hpp:85
std::vector< value_type > storage
Definition iCommAdapter.hpp:75
bool Contains(std::string_view key) const
Definition iCommAdapter.hpp:102
const_iterator end() const
Definition iCommAdapter.hpp:122
bool Empty() const
Definition iCommAdapter.hpp:113
bool Erase(std::string_view key)
Definition iCommAdapter.hpp:106
void Reserve(std::size_t n)
Definition iCommAdapter.hpp:115
storage::iterator iterator
Definition iCommAdapter.hpp:76
const_iterator begin() const
Definition iCommAdapter.hpp:121
const std::string * Get(std::string_view key) const
Definition iCommAdapter.hpp:91
Definition iCommAdapter.hpp:148
~RegistrationToken()
Definition iCommAdapter.hpp:155
RegistrationToken()=default
std::function< void()> UnregisterCallback
Definition iCommAdapter.hpp:150
RegistrationToken & operator=(const RegistrationToken &)=delete
RegistrationToken(const RegistrationToken &)=delete
RegistrationToken(RegistrationToken &&) noexcept=default
void Reset()
Definition iCommAdapter.hpp:162
RegistrationToken(UnregisterCallback on_destruct)
Definition iCommAdapter.hpp:153
Definition iCommAdapter.hpp:54
std::function< void(const ConnectionStateChange &)> ConnectionStateHandler
Definition iCommAdapter.hpp:331
constexpr std::uint32_t kCommAdapterContractVersion
Definition iCommAdapter.hpp:59
std::string RequestId
Definition iCommAdapter.hpp:62
ConnectionState
Definition iCommAdapter.hpp:298
@ Disconnecting
Definition iCommAdapter.hpp:302
@ Faulted
Definition iCommAdapter.hpp:303
@ Connected
Definition iCommAdapter.hpp:301
@ Connecting
Definition iCommAdapter.hpp:300
@ Disconnected
Definition iCommAdapter.hpp:299
std::variant< std::monostate, bool, std::int32_t, std::uint32_t, std::int64_t, std::uint64_t, float, double, std::string, std::vector< std::uint8_t >, std::vector< bool >, std::vector< std::int32_t >, std::vector< std::uint32_t >, std::vector< std::int64_t >, std::vector< std::uint64_t >, std::vector< float >, std::vector< double >, std::vector< std::string >, PropertyMap, std::int16_t, std::uint16_t, std::int8_t, std::uint8_t, std::vector< std::int16_t >, std::vector< std::uint16_t >, std::vector< std::int8_t > > Value
Definition iCommAdapter.hpp:237
std::string Address
Definition iCommAdapter.hpp:61
Status
Definition iCommAdapter.hpp:205
@ AlreadyConnected
Definition iCommAdapter.hpp:209
@ TypeMismatch
Definition iCommAdapter.hpp:214
@ NotFound
Definition iCommAdapter.hpp:212
@ NotConnected
Definition iCommAdapter.hpp:208
@ InternalError
Definition iCommAdapter.hpp:219
@ BadRequest
Definition iCommAdapter.hpp:211
@ Cancelled
Definition iCommAdapter.hpp:216
@ Ok
Definition iCommAdapter.hpp:206
@ TransportError
Definition iCommAdapter.hpp:218
@ Unsupported
Definition iCommAdapter.hpp:215
@ Timeout
Definition iCommAdapter.hpp:207
@ AccessDenied
Definition iCommAdapter.hpp:213
@ RemoteError
Definition iCommAdapter.hpp:217
@ InvalidState
Definition iCommAdapter.hpp:210
std::function< void(const Notification &)> SubscriptionHandler
Definition iCommAdapter.hpp:505
Definition iCommAdapter.hpp:366
std::optional< std::string > cursor
Definition iCommAdapter.hpp:370
RequestOptions options
Definition iCommAdapter.hpp:371
bool include_values
Definition iCommAdapter.hpp:369
bool recursive
Definition iCommAdapter.hpp:368
std::optional< Address > root
Definition iCommAdapter.hpp:367
Definition iCommAdapter.hpp:384
std::vector< NodeDescriptor > nodes
Definition iCommAdapter.hpp:385
bool has_more
Definition iCommAdapter.hpp:387
std::optional< std::string > cursor
Definition iCommAdapter.hpp:386
Definition iCommAdapter.hpp:446
std::string name
Definition iCommAdapter.hpp:447
DataValue data
Definition iCommAdapter.hpp:448
Definition iCommAdapter.hpp:437
Value value
Definition iCommAdapter.hpp:439
std::string name
Definition iCommAdapter.hpp:438
Definition iCommAdapter.hpp:441
std::vector< CallArgument > input_arguments
Definition iCommAdapter.hpp:443
RequestOptions options
Definition iCommAdapter.hpp:444
Address method
Definition iCommAdapter.hpp:442
Definition iCommAdapter.hpp:450
std::vector< CallArgumentResult > output_arguments
Definition iCommAdapter.hpp:451
Definition iCommAdapter.hpp:526
bool batch
Definition iCommAdapter.hpp:533
bool write
Definition iCommAdapter.hpp:530
bool browse
Definition iCommAdapter.hpp:528
bool cancellation
Definition iCommAdapter.hpp:534
PropertyMap properties
Definition iCommAdapter.hpp:536
bool discover
Definition iCommAdapter.hpp:527
bool call
Definition iCommAdapter.hpp:531
bool connection_state_events
Definition iCommAdapter.hpp:535
bool subscribe
Definition iCommAdapter.hpp:532
bool read
Definition iCommAdapter.hpp:529
Definition iCommAdapter.hpp:306
PropertyMap properties
Definition iCommAdapter.hpp:312
std::string protocol
Definition iCommAdapter.hpp:308
std::string adapter_name
Definition iCommAdapter.hpp:309
std::uint32_t contract_version
Definition iCommAdapter.hpp:311
std::string adapter_version
Definition iCommAdapter.hpp:310
std::string endpoint
Definition iCommAdapter.hpp:307
Definition iCommAdapter.hpp:292
std::string endpoint
Definition iCommAdapter.hpp:293
PropertyMap properties
Definition iCommAdapter.hpp:295
Definition iCommAdapter.hpp:325
ConnectionState current
Definition iCommAdapter.hpp:327
Status reason
Definition iCommAdapter.hpp:328
ConnectionState previous
Definition iCommAdapter.hpp:326
std::string message
Definition iCommAdapter.hpp:329
Definition iCommAdapter.hpp:315
ConnectionState state
Definition iCommAdapter.hpp:316
std::optional< ConnectionInfo > info
Definition iCommAdapter.hpp:317
Definition iCommAdapter.hpp:281
std::optional< std::chrono::system_clock::time_point > timestamp
Definition iCommAdapter.hpp:288
PropertyMap properties
Definition iCommAdapter.hpp:289
Value value
Definition iCommAdapter.hpp:282
std::string message
Definition iCommAdapter.hpp:284
Status status
Definition iCommAdapter.hpp:283
Definition iCommAdapter.hpp:339
std::optional< std::string > query
Definition iCommAdapter.hpp:340
RequestOptions options
Definition iCommAdapter.hpp:341
Definition iCommAdapter.hpp:349
std::vector< DiscoveredEndpoint > endpoints
Definition iCommAdapter.hpp:350
Definition iCommAdapter.hpp:343
PropertyMap properties
Definition iCommAdapter.hpp:347
std::string endpoint
Definition iCommAdapter.hpp:344
std::string protocol
Definition iCommAdapter.hpp:345
std::string name
Definition iCommAdapter.hpp:346
Definition iCommAdapter.hpp:373
std::optional< Address > parent
Definition iCommAdapter.hpp:376
std::optional< DataValue > value
Definition iCommAdapter.hpp:381
PropertyMap properties
Definition iCommAdapter.hpp:382
Address address
Definition iCommAdapter.hpp:374
std::string name
Definition iCommAdapter.hpp:375
bool has_children
Definition iCommAdapter.hpp:377
Definition iCommAdapter.hpp:501
Address address
Definition iCommAdapter.hpp:502
DataValue data
Definition iCommAdapter.hpp:503
Definition iCommAdapter.hpp:401
std::optional< DataValue > data
Definition iCommAdapter.hpp:403
Address address
Definition iCommAdapter.hpp:402
Definition iCommAdapter.hpp:393
PropertyMap properties
Definition iCommAdapter.hpp:395
Address address
Definition iCommAdapter.hpp:394
Definition iCommAdapter.hpp:397
std::vector< ReadItem > items
Definition iCommAdapter.hpp:398
RequestOptions options
Definition iCommAdapter.hpp:399
Definition iCommAdapter.hpp:405
std::vector< ReadItemResult > items
Definition iCommAdapter.hpp:406
Definition iCommAdapter.hpp:274
std::chrono::milliseconds timeout
Definition iCommAdapter.hpp:275
std::optional< RequestId > request_id
Definition iCommAdapter.hpp:276
PropertyMap properties
Definition iCommAdapter.hpp:278
std::optional< CancellationToken > cancellation
Definition iCommAdapter.hpp:277
Definition iCommAdapter.hpp:268
std::string message
Definition iCommAdapter.hpp:270
Status status
Definition iCommAdapter.hpp:269
Definition iCommAdapter.hpp:507
Address address
Definition iCommAdapter.hpp:508
Definition iCommAdapter.hpp:490
bool discard_oldest
Definition iCommAdapter.hpp:493
PropertyMap properties
Definition iCommAdapter.hpp:498
std::uint32_t queue_size
Definition iCommAdapter.hpp:492
Definition iCommAdapter.hpp:510
std::vector< SubscribeItemResult > items
Definition iCommAdapter.hpp:511
Definition iCommAdapter.hpp:514
Address address
Definition iCommAdapter.hpp:515
Definition iCommAdapter.hpp:517
std::vector< UnsubscribeItemResult > items
Definition iCommAdapter.hpp:518
Definition iCommAdapter.hpp:422
Address address
Definition iCommAdapter.hpp:423
Definition iCommAdapter.hpp:413
Address address
Definition iCommAdapter.hpp:414
Value value
Definition iCommAdapter.hpp:415
PropertyMap properties
Definition iCommAdapter.hpp:416
Definition iCommAdapter.hpp:418
std::vector< WriteItem > items
Definition iCommAdapter.hpp:419
RequestOptions options
Definition iCommAdapter.hpp:420
Definition iCommAdapter.hpp:425
std::vector< WriteItemResult > items
Definition iCommAdapter.hpp:426