67 for (
const auto& kv : init)
set(kv.first, kv.second);
71 void set(std::string key, std::string val) {
73 if (it != items_.end()) it->second = std::move(val);
74 else items_.emplace_back(std::move(key), std::move(val));
77 const std::string*
get(std::string_view key)
const {
79 return it == items_.end() ? nullptr : &it->second;
82 std::string
get_or(std::string_view key, std::string_view fallback)
const {
84 return v ? *v : std::string(fallback);
87 bool contains(std::string_view key)
const {
return find(key) != items_.end(); }
89 bool erase(std::string_view key) {
91 if (it == items_.end())
return false;
96 bool empty()
const {
return items_.empty(); }
97 std::size_t
size()
const {
return items_.size(); }
98 void reserve(std::size_t n) { items_.reserve(n); }
107 return std::find_if(items_.begin(), items_.end(),
108 [&](
const value_type& kv) { return kv.first == key; });
110 iterator find(std::string_view key) {
111 return std::find_if(items_.begin(), items_.end(),
112 [&](
const value_type& kv) { return kv.first == key; });
127 : on_destruct_(std::move(on_destruct)) {}
135 void Reset() { on_destruct_ =
nullptr; }
138 UnregisterCallback on_destruct_;
149 : flag_(std::move(flag)) {}
151 return flag_ && flag_->load(std::memory_order_acquire);
154 std::shared_ptr<std::atomic_bool> flag_;
161 void cancel() { flag_->store(
true, std::memory_order_release); }
162 bool cancelled()
const {
return flag_->load(std::memory_order_acquire); }
164 std::shared_ptr<std::atomic_bool> flag_;
203 std::vector<std::uint8_t>,
205 std::vector<std::int32_t>,
206 std::vector<std::uint32_t>,
207 std::vector<std::int64_t>,
208 std::vector<std::uint64_t>,
211 std::vector<std::string>,
235 std::optional<std::chrono::system_clock::time_point>
timestamp;
263 std::optional<ConnectionInfo>
info;
412 std::vector<SubscribeItemResult>
items;
516 const std::vector<Address>& addresses) = 0;
CancellationSource()
Definition icomm_adapter_generic_v1.hpp:159
void cancel()
Definition icomm_adapter_generic_v1.hpp:161
bool cancelled() const
Definition icomm_adapter_generic_v1.hpp:162
CancellationToken token() const
Definition icomm_adapter_generic_v1.hpp:160
Definition icomm_adapter_generic_v1.hpp:145
CancellationToken(std::shared_ptr< std::atomic_bool > flag)
Definition icomm_adapter_generic_v1.hpp:148
bool cancelled() const
Definition icomm_adapter_generic_v1.hpp:150
CancellationToken()=default
Definition icomm_adapter_generic_v1.hpp:474
virtual ConnectionStatus GetConnectionStatus() const =0
virtual ~ICommAdapter()=default
virtual void BrowseAsync(const BrowseRequest &request, BrowseCallback cb)=0
virtual Capabilities GetCapabilities() const =0
virtual UnsubscribeResult Unsubscribe(const SubscriptionId &id)=0
virtual SubscribeResult Subscribe(const SubscribeRequest &request, SubscriptionHandler handler)=0
virtual void WriteAsync(const WriteRequest &request, WriteCallback cb)=0
virtual RegistrationToken SetConnectionStateHandler(ConnectionStateHandler handler)=0
virtual void DiscoverAsync(const DiscoverRequest &request, DiscoverCallback cb)=0
virtual UnsubscribeResult UnsubscribeItems(const SubscriptionId &id, const std::vector< Address > &addresses)=0
virtual Result Configure(const ConnectionOptions &options)=0
virtual BrowseResult Browse(const BrowseRequest &request)=0
virtual DiscoverResult Discover(const DiscoverRequest &request)=0
virtual Result Connect()=0
virtual Result UnsubscribeAll()=0
virtual WriteResult Write(const WriteRequest &request)=0
virtual Result Disconnect()=0
virtual ReadResult Read(const ReadRequest &request)=0
virtual void ReadAsync(const ReadRequest &request, ReadCallback cb)=0
virtual InvokeResult Invoke(const InvokeRequest &request)=0
virtual AdapterDiagnostics GetDiagnostics() const =0
virtual std::uint32_t GetContractVersion() const
Definition icomm_adapter_generic_v1.hpp:478
virtual bool IsConnected() const =0
virtual void InvokeAsync(const InvokeRequest &request, InvokeCallback cb)=0
Definition icomm_adapter_generic_v1.hpp:58
bool empty() const
Definition icomm_adapter_generic_v1.hpp:96
std::size_t size() const
Definition icomm_adapter_generic_v1.hpp:97
const_iterator begin() const
Definition icomm_adapter_generic_v1.hpp:102
bool contains(std::string_view key) const
Definition icomm_adapter_generic_v1.hpp:87
std::string get_or(std::string_view key, std::string_view fallback) const
Definition icomm_adapter_generic_v1.hpp:82
iterator begin()
Definition icomm_adapter_generic_v1.hpp:100
std::pair< std::string, std::string > value_type
Definition icomm_adapter_generic_v1.hpp:60
PropertyMap(std::initializer_list< value_type > init)
Definition icomm_adapter_generic_v1.hpp:66
std::vector< value_type > storage
Definition icomm_adapter_generic_v1.hpp:61
iterator end()
Definition icomm_adapter_generic_v1.hpp:101
const_iterator end() const
Definition icomm_adapter_generic_v1.hpp:103
void reserve(std::size_t n)
Definition icomm_adapter_generic_v1.hpp:98
const std::string * get(std::string_view key) const
Definition icomm_adapter_generic_v1.hpp:77
storage::iterator iterator
Definition icomm_adapter_generic_v1.hpp:62
storage::const_iterator const_iterator
Definition icomm_adapter_generic_v1.hpp:63
bool erase(std::string_view key)
Definition icomm_adapter_generic_v1.hpp:89
void set(std::string key, std::string val)
Definition icomm_adapter_generic_v1.hpp:71
Definition icomm_adapter_generic_v1.hpp:121
std::function< void()> UnregisterCallback
Definition icomm_adapter_generic_v1.hpp:123
RegistrationToken()=default
RegistrationToken(UnregisterCallback on_destruct)
Definition icomm_adapter_generic_v1.hpp:126
~RegistrationToken()
Definition icomm_adapter_generic_v1.hpp:128
RegistrationToken & operator=(const RegistrationToken &)=delete
void Reset()
Definition icomm_adapter_generic_v1.hpp:135
RegistrationToken(RegistrationToken &&) noexcept=default
RegistrationToken(const RegistrationToken &)=delete
Definition icomm_adapter_generic_v1.hpp:41
std::function< void(const Notification &)> SubscriptionHandler
Definition icomm_adapter_generic_v1.hpp:406
std::function< void(ReadResult result)> ReadCallback
Definition icomm_adapter_generic_v1.hpp:458
Status
Definition icomm_adapter_generic_v1.hpp:167
@ AlreadyConnected
Definition icomm_adapter_generic_v1.hpp:171
@ TypeMismatch
Definition icomm_adapter_generic_v1.hpp:176
@ NotFound
Definition icomm_adapter_generic_v1.hpp:174
@ NotConnected
Definition icomm_adapter_generic_v1.hpp:170
@ InternalError
Definition icomm_adapter_generic_v1.hpp:181
@ BadRequest
Definition icomm_adapter_generic_v1.hpp:173
@ Cancelled
Definition icomm_adapter_generic_v1.hpp:178
@ Ok
Definition icomm_adapter_generic_v1.hpp:168
@ TransportError
Definition icomm_adapter_generic_v1.hpp:180
@ Unsupported
Definition icomm_adapter_generic_v1.hpp:177
@ Timeout
Definition icomm_adapter_generic_v1.hpp:169
@ AccessDenied
Definition icomm_adapter_generic_v1.hpp:175
@ RemoteError
Definition icomm_adapter_generic_v1.hpp:179
@ InvalidState
Definition icomm_adapter_generic_v1.hpp:172
std::string SubscriptionId
Definition icomm_adapter_generic_v1.hpp:50
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 > Value
Definition icomm_adapter_generic_v1.hpp:193
std::function< void(DiscoverResult result)> DiscoverCallback
Definition icomm_adapter_generic_v1.hpp:456
constexpr std::uint32_t kContractVersion
Definition icomm_adapter_generic_v1.hpp:46
std::function< void(InvokeResult result)> InvokeCallback
Definition icomm_adapter_generic_v1.hpp:460
std::string Address
Definition icomm_adapter_generic_v1.hpp:48
std::string RequestId
Definition icomm_adapter_generic_v1.hpp:49
std::function< void(WriteResult result)> WriteCallback
Definition icomm_adapter_generic_v1.hpp:459
std::function< void(const ConnectionStateChange &)> ConnectionStateHandler
Definition icomm_adapter_generic_v1.hpp:276
ConnectionState
Definition icomm_adapter_generic_v1.hpp:244
@ Disconnecting
Definition icomm_adapter_generic_v1.hpp:248
@ Faulted
Definition icomm_adapter_generic_v1.hpp:249
@ Connected
Definition icomm_adapter_generic_v1.hpp:247
@ Connecting
Definition icomm_adapter_generic_v1.hpp:246
@ Disconnected
Definition icomm_adapter_generic_v1.hpp:245
std::function< void(BrowseResult result)> BrowseCallback
Definition icomm_adapter_generic_v1.hpp:457
Definition icomm_adapter_generic_v1.hpp:435
std::uint64_t browseCount
Definition icomm_adapter_generic_v1.hpp:442
std::uint64_t notificationCount
Definition icomm_adapter_generic_v1.hpp:446
std::string adapterVersion
Definition icomm_adapter_generic_v1.hpp:437
std::string lastError
Definition icomm_adapter_generic_v1.hpp:449
PropertyMap properties
Definition icomm_adapter_generic_v1.hpp:450
std::string adapterName
Definition icomm_adapter_generic_v1.hpp:436
std::uint64_t errorCount
Definition icomm_adapter_generic_v1.hpp:447
std::uint64_t readCount
Definition icomm_adapter_generic_v1.hpp:443
std::uint64_t invokeCount
Definition icomm_adapter_generic_v1.hpp:445
std::uint64_t discoverCount
Definition icomm_adapter_generic_v1.hpp:441
ConnectionState connectionState
Definition icomm_adapter_generic_v1.hpp:439
std::uint64_t writeCount
Definition icomm_adapter_generic_v1.hpp:444
Definition icomm_adapter_generic_v1.hpp:300
std::optional< std::string > cursor
Definition icomm_adapter_generic_v1.hpp:303
RequestOptions options
Definition icomm_adapter_generic_v1.hpp:304
std::optional< Address > root
Definition icomm_adapter_generic_v1.hpp:301
bool recursive
Definition icomm_adapter_generic_v1.hpp:302
Definition icomm_adapter_generic_v1.hpp:313
std::optional< std::string > cursor
Definition icomm_adapter_generic_v1.hpp:315
bool hasMore
Definition icomm_adapter_generic_v1.hpp:316
std::vector< NodeDescriptor > nodes
Definition icomm_adapter_generic_v1.hpp:314
Definition icomm_adapter_generic_v1.hpp:421
bool connectionStateEvents
Definition icomm_adapter_generic_v1.hpp:431
bool batch
Definition icomm_adapter_generic_v1.hpp:428
bool subscribe
Definition icomm_adapter_generic_v1.hpp:427
bool cancellation
Definition icomm_adapter_generic_v1.hpp:430
bool browse
Definition icomm_adapter_generic_v1.hpp:423
bool invoke
Definition icomm_adapter_generic_v1.hpp:426
bool async
Definition icomm_adapter_generic_v1.hpp:429
PropertyMap properties
Definition icomm_adapter_generic_v1.hpp:432
bool discover
Definition icomm_adapter_generic_v1.hpp:422
bool write
Definition icomm_adapter_generic_v1.hpp:425
bool read
Definition icomm_adapter_generic_v1.hpp:424
Definition icomm_adapter_generic_v1.hpp:252
std::string endpoint
Definition icomm_adapter_generic_v1.hpp:253
std::string adapterVersion
Definition icomm_adapter_generic_v1.hpp:256
PropertyMap properties
Definition icomm_adapter_generic_v1.hpp:258
std::uint32_t contractVersion
Definition icomm_adapter_generic_v1.hpp:257
std::string adapterName
Definition icomm_adapter_generic_v1.hpp:255
Definition icomm_adapter_generic_v1.hpp:239
PropertyMap properties
Definition icomm_adapter_generic_v1.hpp:241
std::string endpoint
Definition icomm_adapter_generic_v1.hpp:240
Definition icomm_adapter_generic_v1.hpp:270
Status reason
Definition icomm_adapter_generic_v1.hpp:273
ConnectionState previous
Definition icomm_adapter_generic_v1.hpp:271
ConnectionState current
Definition icomm_adapter_generic_v1.hpp:272
std::string message
Definition icomm_adapter_generic_v1.hpp:274
Definition icomm_adapter_generic_v1.hpp:261
std::optional< ConnectionInfo > info
Definition icomm_adapter_generic_v1.hpp:263
ConnectionState state
Definition icomm_adapter_generic_v1.hpp:262
Definition icomm_adapter_generic_v1.hpp:229
Status status
Definition icomm_adapter_generic_v1.hpp:231
std::string message
Definition icomm_adapter_generic_v1.hpp:232
std::optional< std::chrono::system_clock::time_point > timestamp
Definition icomm_adapter_generic_v1.hpp:235
Value value
Definition icomm_adapter_generic_v1.hpp:230
PropertyMap properties
Definition icomm_adapter_generic_v1.hpp:236
Definition icomm_adapter_generic_v1.hpp:282
std::optional< std::string > query
Definition icomm_adapter_generic_v1.hpp:283
RequestOptions options
Definition icomm_adapter_generic_v1.hpp:284
Definition icomm_adapter_generic_v1.hpp:292
std::vector< DiscoveredEndpoint > endpoints
Definition icomm_adapter_generic_v1.hpp:293
Definition icomm_adapter_generic_v1.hpp:286
PropertyMap properties
Definition icomm_adapter_generic_v1.hpp:290
std::string endpoint
Definition icomm_adapter_generic_v1.hpp:287
std::string name
Definition icomm_adapter_generic_v1.hpp:289
Definition icomm_adapter_generic_v1.hpp:370
DataValue data
Definition icomm_adapter_generic_v1.hpp:372
std::string name
Definition icomm_adapter_generic_v1.hpp:371
Definition icomm_adapter_generic_v1.hpp:361
Value value
Definition icomm_adapter_generic_v1.hpp:363
std::string name
Definition icomm_adapter_generic_v1.hpp:362
Definition icomm_adapter_generic_v1.hpp:365
std::vector< InvokeArgument > inputArguments
Definition icomm_adapter_generic_v1.hpp:367
RequestOptions options
Definition icomm_adapter_generic_v1.hpp:368
Address method
Definition icomm_adapter_generic_v1.hpp:366
Definition icomm_adapter_generic_v1.hpp:374
std::vector< InvokeArgumentResult > outputArguments
Definition icomm_adapter_generic_v1.hpp:375
Definition icomm_adapter_generic_v1.hpp:306
std::optional< Address > parent
Definition icomm_adapter_generic_v1.hpp:309
std::string name
Definition icomm_adapter_generic_v1.hpp:308
Address address
Definition icomm_adapter_generic_v1.hpp:307
PropertyMap properties
Definition icomm_adapter_generic_v1.hpp:311
bool hasChildren
Definition icomm_adapter_generic_v1.hpp:310
Definition icomm_adapter_generic_v1.hpp:401
DataValue data
Definition icomm_adapter_generic_v1.hpp:404
Address address
Definition icomm_adapter_generic_v1.hpp:403
SubscriptionId subscriptionId
Definition icomm_adapter_generic_v1.hpp:402
Definition icomm_adapter_generic_v1.hpp:330
Address address
Definition icomm_adapter_generic_v1.hpp:331
std::optional< DataValue > data
Definition icomm_adapter_generic_v1.hpp:332
Definition icomm_adapter_generic_v1.hpp:322
PropertyMap properties
Definition icomm_adapter_generic_v1.hpp:324
Address address
Definition icomm_adapter_generic_v1.hpp:323
Definition icomm_adapter_generic_v1.hpp:326
RequestOptions options
Definition icomm_adapter_generic_v1.hpp:328
std::vector< ReadItem > items
Definition icomm_adapter_generic_v1.hpp:327
Definition icomm_adapter_generic_v1.hpp:334
std::vector< ReadItemResult > items
Definition icomm_adapter_generic_v1.hpp:335
Definition icomm_adapter_generic_v1.hpp:222
PropertyMap properties
Definition icomm_adapter_generic_v1.hpp:226
std::chrono::milliseconds timeout
Definition icomm_adapter_generic_v1.hpp:223
std::optional< CancellationToken > cancellation
Definition icomm_adapter_generic_v1.hpp:225
std::optional< RequestId > requestId
Definition icomm_adapter_generic_v1.hpp:224
Definition icomm_adapter_generic_v1.hpp:214
std::string message
Definition icomm_adapter_generic_v1.hpp:218
Status status
Definition icomm_adapter_generic_v1.hpp:217
Definition icomm_adapter_generic_v1.hpp:407
Address address
Definition icomm_adapter_generic_v1.hpp:408
Definition icomm_adapter_generic_v1.hpp:392
PropertyMap properties
Definition icomm_adapter_generic_v1.hpp:394
Address address
Definition icomm_adapter_generic_v1.hpp:393
Definition icomm_adapter_generic_v1.hpp:396
RequestOptions options
Definition icomm_adapter_generic_v1.hpp:399
std::vector< SubscribeItem > items
Definition icomm_adapter_generic_v1.hpp:397
std::optional< std::chrono::milliseconds > rateHint
Definition icomm_adapter_generic_v1.hpp:398
Definition icomm_adapter_generic_v1.hpp:410
std::vector< SubscribeItemResult > items
Definition icomm_adapter_generic_v1.hpp:412
SubscriptionId id
Definition icomm_adapter_generic_v1.hpp:411
Definition icomm_adapter_generic_v1.hpp:414
SubscriptionId id
Definition icomm_adapter_generic_v1.hpp:415
Definition icomm_adapter_generic_v1.hpp:351
Address address
Definition icomm_adapter_generic_v1.hpp:352
Definition icomm_adapter_generic_v1.hpp:342
PropertyMap properties
Definition icomm_adapter_generic_v1.hpp:345
Address address
Definition icomm_adapter_generic_v1.hpp:343
Value value
Definition icomm_adapter_generic_v1.hpp:344
Definition icomm_adapter_generic_v1.hpp:347
std::vector< WriteItem > items
Definition icomm_adapter_generic_v1.hpp:348
RequestOptions options
Definition icomm_adapter_generic_v1.hpp:349
Definition icomm_adapter_generic_v1.hpp:354
std::vector< WriteItemResult > items
Definition icomm_adapter_generic_v1.hpp:355