12#ifndef RTCTK_COMPONENTFRAMEWORK_RUNTIMEREPOADAPTER_HPP
13#define RTCTK_COMPONENTFRAMEWORK_RUNTIMEREPOADAPTER_HPP
57 elt::mal::Uri
GetUri()
const override {
144 using LookupTable = std::unordered_map<std::type_index, DispatchFunction>;
147 template <
typename T>
This class provides a wrapper for a data point path.
Definition dataPointPath.hpp:76
The DynamicThreadPool allows creating multiple threads which are garbage collected.
Definition dynamicThreadPool.hpp:36
Interface class for providing pub/sub facilities for JSON events.
Definition eventServiceIf.hpp:28
Implementation of low-level event service using CII MAL DDS as middleware.
Definition malDdsEventService.hpp:35
std::vector< std::any > RequestList
Definition repositoryIf.hpp:52
std::function< void(const DataPointPath &)> CallbackType
Signature of the callback functions that can be registered with the repository requests.
Definition repositoryIf.hpp:60
std::function< void(std::exception_ptr)> ErrorCallbackType
Definition repositorySubscriberIf.hpp:48
std::function< void(const DataPointPath &, const MetaData &)> NotifyCallbackType
Definition repositorySubscriberIf.hpp:47
size_t SubscriptionId
Definition repositorySubscriberIf.hpp:50
This internal class implements the basic communication and commands toward the server.
Definition runtimeRepoAdapter.cpp:53
DynamicThreadPool m_thread_pool
Thread pool for worker threads.
Definition runtimeRepoAdapter.hpp:101
void WriteImpl(detail::WriteRequest< T > &, RtrClient &)
Definition runtimeRepoAdapter.cpp:735
void CreateImpl(detail::CreateRequest< T > &, RtrClient &)
Definition runtimeRepoAdapter.cpp:718
void DeleteImpl(detail::DeleteRequest &, RtrClient &)
Definition runtimeRepoAdapter.cpp:890
std::list< CreateDeleteSubscription > m_create_delete_subscriptions
Definition runtimeRepoAdapter.hpp:134
std::function< void(RuntimeRepoAdapter *, std::any &, RtrClient &)> DispatchFunction
Definition runtimeRepoAdapter.hpp:143
BatchResponse ProcessRequests(const RequestList &requests) override
Definition runtimeRepoAdapter.cpp:1111
RuntimeRepoAdapter(RuntimeRepoAdapter &&)=delete
Objects of this class can not be moved because we have a mutex.
RuntimeRepoAdapter()=delete
Do not allow construction with no arguments.
void GetChildrenImpl(detail::GetChildrenRequest &, RtrClient &)
Definition runtimeRepoAdapter.cpp:910
void ReadMetaDataImpl(detail::ReadMetaDataRequest &, RtrClient &)
Definition runtimeRepoAdapter.cpp:873
elt::mal::Uri m_baseuri
Definition runtimeRepoAdapter.hpp:95
~RuntimeRepoAdapter() override=default
RuntimeRepoAdapter & operator=(const RuntimeRepoAdapter &)=delete
This class cannot be copy assigned.
void UpdateLinkImpl(detail::UpdateSymlinkRequest &, RtrClient &)
Definition runtimeRepoAdapter.cpp:930
void ExistsImpl(detail::ExistsRequest &, RtrClient &)
Definition runtimeRepoAdapter.cpp:900
typename LookupTable::value_type TableEntry
Definition runtimeRepoAdapter.hpp:145
void CreateDeleteSubscribeImpl(detail::CreateDeleteSubscribeRequest &, RtrClient &)
Definition runtimeRepoAdapter.cpp:968
EventServiceIf & m_event_service
Definition runtimeRepoAdapter.hpp:140
virtual void InvokeRequestHandler(std::any &, RtrClient &)
Definition runtimeRepoAdapter.cpp:1153
MalDdsEventService m_mal_event_service
Definition runtimeRepoAdapter.hpp:139
elt::mal::Uri GetUri() const override
Get the URI used when creating this adapter object.
Definition runtimeRepoAdapter.hpp:57
RuntimeRepoAdapter(const RuntimeRepoAdapter &)=delete
This class cannot be copy constructed.
std::mutex m_mutex
Mutex for synchronising access to subscriptions.
Definition runtimeRepoAdapter.hpp:107
std::string m_ip
Definition runtimeRepoAdapter.hpp:96
static TableEntry Bind(void(RuntimeRepoAdapter::*method)(T &, RtrClient &))
Definition runtimeRepoAdapter.cpp:1164
std::unique_ptr< EventSubscriberIf > m_event_subscriber
Definition runtimeRepoAdapter.hpp:141
std::list< ValueSubscription > m_value_subscriptions
Definition runtimeRepoAdapter.hpp:133
void PartialReadImpl(detail::PartialReadRequest< T > &, RtrClient &)
Definition runtimeRepoAdapter.cpp:833
static const std::string SUPPORTED_URI_SCHEME
Definition runtimeRepoAdapter.hpp:32
void SubscriptionCallbackHandler(const JsonPayload &)
Definition runtimeRepoAdapter.cpp:1010
std::unordered_map< std::type_index, DispatchFunction > LookupTable
Definition runtimeRepoAdapter.hpp:144
std::string m_topic
Definition runtimeRepoAdapter.hpp:98
uint16_t m_port
Definition runtimeRepoAdapter.hpp:97
void PartialWriteImpl(detail::PartialWriteRequest< T > &, RtrClient &)
Definition runtimeRepoAdapter.cpp:757
void WriteMetaDataImpl(detail::WriteMetaDataRequest &, RtrClient &)
Definition runtimeRepoAdapter.cpp:785
DynamicThreadPool m_thread_pool_callback
Thread pool for callback threads.
Definition runtimeRepoAdapter.hpp:104
void ReadImpl(detail::ReadRequest< T > &, RtrClient &)
Definition runtimeRepoAdapter.cpp:800
void UnsubscribeImpl(detail::UnsubscribeRequest &, RtrClient &)
Definition runtimeRepoAdapter.cpp:975
RuntimeRepoAdapter & operator=(RuntimeRepoAdapter &&)=delete
void SubscribeImpl(detail::ValueSubscribeRequest &, RtrClient &)
Definition runtimeRepoAdapter.cpp:958
static const LookupTable S_REQUEST_DISPATCHER_TABLE
Definition runtimeRepoAdapter.hpp:150
void CreateLinkImpl(detail::CreateSymlinkRequest &, RtrClient &)
Definition runtimeRepoAdapter.cpp:920
Base interface for all Runtime Configuration Repository adapters.
Definition runtimeRepoIf.hpp:26
Header file for a dynamic resizing thread pool.
Low-level interface of the event service.
Implementation of the event service.
Definition commandReplier.cpp:21
nlohmann::json JsonPayload
Type requirements:
Definition jsonPayload.hpp:24
Header file for RuntimeRepoIf, which defines the API for RuntimeRepoAdapters.
CallbackType cb_deleted
Definition runtimeRepoAdapter.hpp:126
CallbackType cb_created
Definition runtimeRepoAdapter.hpp:125
ErrorCallbackType cb_error
Definition runtimeRepoAdapter.hpp:127
CreateDeleteSubscription(SubscriptionId, CallbackType, CallbackType, ErrorCallbackType)
Definition runtimeRepoAdapter.cpp:947
std::atomic< size_t > cb_created_busy
Definition runtimeRepoAdapter.hpp:128
std::atomic< size_t > cb_deleted_busy
Definition runtimeRepoAdapter.hpp:129
std::atomic< size_t > cb_error_busy
Definition runtimeRepoAdapter.hpp:130
SubscriptionId id
Definition runtimeRepoAdapter.hpp:124
ValueSubscription(SubscriptionId, const DataPointPath &, NotifyCallbackType, ErrorCallbackType)
Definition runtimeRepoAdapter.cpp:940
std::atomic< size_t > cb_value_busy
Definition runtimeRepoAdapter.hpp:118
ErrorCallbackType cb_error
Definition runtimeRepoAdapter.hpp:117
NotifyCallbackType cb_value
Definition runtimeRepoAdapter.hpp:116
SubscriptionId id
Definition runtimeRepoAdapter.hpp:114
std::atomic< size_t > cb_error_busy
Definition runtimeRepoAdapter.hpp:119
DataPointPath path
Definition runtimeRepoAdapter.hpp:115
Definition repositorySubscriberIf.ipp:33
Definition repositoryIf.ipp:39
Definition repositoryIf.ipp:123
Definition repositoryIf.ipp:47
Definition repositoryIf.ipp:52
Definition repositoryIf.ipp:58
Definition repositoryIf.ipp:90
Definition repositoryIf.ipp:101
Definition repositoryIf.ipp:66
Definition repositorySubscriberIf.ipp:40
Definition repositoryIf.ipp:129
Definition repositorySubscriberIf.ipp:26
Definition repositoryIf.ipp:80