13#ifndef RTCTK_COMPONENTFRAMEWORK_OLDBADAPTER_HPP
14#define RTCTK_COMPONENTFRAMEWORK_OLDBADAPTER_HPP
17#include <ciiOldbSubscription.hpp>
18#include <ciiOldbTypedDataBase.hpp>
25#include <unordered_map>
66 const std::shared_ptr<elt::oldb::CiiOldb>& oldb);
73 elt::mal::Uri
GetUri()
const override {
83 template <
typename CiiType>
86 template <
typename DataPo
intType,
typename T>
92 template <
typename DataPo
intType,
typename T>
98 template <
typename DataPo
intType,
typename T>
101 template <
typename T>
104 template <
typename DataPo
intType,
typename T>
107 template <
typename T>
110 template <
typename DataPo
intType,
typename T>
113 template <
typename T>
116 template <
typename DataPo
intType>
121 template <
typename DataPo
intType>
126 template <
typename DataPo
intType>
136 template <
typename DataPo
intType>
155 mutable std::shared_ptr<elt::oldb::CiiOldb>
m_client;
165 std::shared_ptr<CiiOldbTypedDataBase>
dp;
166 std::shared_ptr<CiiOldbDpSubscriptionBase>
sub;
188 template <
typename T>
202 template <
typename T>
This class provides a wrapper for a data point path.
Definition dataPointPath.hpp:77
The DynamicThreadPool allows creating multiple threads which are garbage collected.
Definition dynamicThreadPool.hpp:37
std::unordered_map< std::type_index, MethodsRecord > MethodLookupTable
Definition oldbAdapter.hpp:182
void ExistsImpl(detail::ExistsRequest &)
Definition oldbAdapter.cpp:1119
void DispatchReadRequest(detail::ReadRequest< T > &)
Definition oldbAdapter.cpp:794
void GetChildrenImpl(detail::GetChildrenRequest &)
Definition oldbAdapter.cpp:1132
void DeleteWithMetadata(const elt::mal::Uri &)
Definition oldbAdapter.cpp:1053
void WriteImpl(detail::WriteRequest< T > &)
Definition oldbAdapter.cpp:819
void WriteMetaDataImpl(detail::WriteMetaDataRequest &)
Definition oldbAdapter.cpp:1014
void DispatchCreateRequest(detail::CreateRequest< T > &)
Definition oldbAdapter.cpp:744
void UnsubscribeImpl(detail::UnsubscribeRequest &)
Definition oldbAdapter.cpp:1299
static const MethodsRecord & FindTypeHandlers(const std::type_info &type)
TODO.
Definition oldbAdapter.cpp:1355
void DispatchPartialReadRequest(detail::PartialReadRequest< T > &)
Definition oldbAdapter.cpp:902
OldbAdapter(const OldbAdapter &)=delete
This class cannot be copy constructed.
void CreateImpl(detail::CreateRequest< T > &)
Definition oldbAdapter.cpp:712
const elt::mal::Uri m_baseuri
The prefix part for OLDB URIs.
Definition oldbAdapter.hpp:152
void DispatchWriteRequest(detail::WriteRequest< T > &)
Definition oldbAdapter.cpp:841
OldbAdapter & operator=(const OldbAdapter &)=delete
This class cannot be copy assigned.
static RequestDispatcher< OldbAdapter >::TableEntries BindRequestHandlers()
TODO.
void DispatchPartialWriteRequest(detail::PartialWriteRequest< T > &)
Definition oldbAdapter.cpp:963
elt::oldb::CiiOldbTypedDataBase CiiOldbTypedDataBase
Definition oldbAdapter.hpp:78
OldbAdapter & operator=(OldbAdapter &&)=delete
OldbAdapter(OldbAdapter &&)=delete
Objects of this class can not be moved because we have a mutex.
static const std::string SUPPORTED_URI_SCHEME
Definition oldbAdapter.hpp:36
void CreateDeleteSubscribeImpl(detail::CreateDeleteSubscribeRequest &)
Operation not supported by this backend, invocation will result in exception.
Definition oldbAdapter.cpp:1295
OldbAdapter()=delete
Do not allow construction with no arguments.
RTCTK_LOCAL auto GetOldbTypedDataPoint(auto &request)
std::map< SubscriptionId, SubscriptionEntry > m_subscriptions
Definition oldbAdapter.hpp:170
void ReadMetaDataImpl(detail::ReadMetaDataRequest &)
Definition oldbAdapter.cpp:989
void DeleteImpl(detail::DeleteRequest &)
Definition oldbAdapter.cpp:1072
static MethodLookupTableEntry BindTypeHandlers()
TODO.
Definition oldbAdapter.cpp:1347
elt::oldb::CiiOldbDpSubscriptionBase CiiOldbDpSubscriptionBase
Definition oldbAdapter.hpp:79
elt::mal::Uri GetUri() const override
Get the URI used when creating this adapter object.
Definition oldbAdapter.hpp:73
void PartialReadImpl(detail::PartialReadRequest< T > &)
Definition oldbAdapter.cpp:867
void PartialWriteImpl(detail::PartialWriteRequest< T > &)
Definition oldbAdapter.cpp:928
void CreateLinkImpl(detail::CreateSymlinkRequest &)
Definition oldbAdapter.cpp:1167
void UpdateLinkImpl(detail::UpdateSymlinkRequest &)
Definition oldbAdapter.cpp:1186
BatchResponse ProcessRequests(const RequestList &requests) override
Definition oldbAdapter.cpp:1308
static const MethodLookupTable S_TYPE_DISPATCH_TABLE
TODO.
Definition oldbAdapter.hpp:197
void DispatchSubscribeRequest(detail::ValueSubscribeRequest &)
Definition oldbAdapter.cpp:1289
~OldbAdapter() override=default
Destroys the adapter for the OLDB service releasing allocated resources.
void DispatchWriteMetaDataRequest(detail::WriteMetaDataRequest &)
Definition oldbAdapter.cpp:1046
typename MethodLookupTable::value_type MethodLookupTableEntry
Definition oldbAdapter.hpp:183
void SubscribeImpl(detail::ValueSubscribeRequest &)
Definition oldbAdapter.cpp:1265
void ReadImpl(detail::ReadRequest< T > &)
Definition oldbAdapter.cpp:770
std::mutex m_mutex
Mutex for synchronising access to subscriptions.
Definition oldbAdapter.hpp:158
std::shared_ptr< elt::oldb::CiiOldb > m_client
Pointer to the CII OLDB API client object.
Definition oldbAdapter.hpp:155
void DispatchReadMetaDataRequest(detail::ReadMetaDataRequest &)
Definition oldbAdapter.cpp:1007
RTCTK_LOCAL auto GetOldbBaseDataPoint(auto &request)
Definition oldbAdapter.cpp:690
static const RequestDispatcher< OldbAdapter > S_REQUEST_DISPATCHER
TODO.
Definition oldbAdapter.hpp:206
void GetChildrenImplRecursive(const DataPointPath &, PathList &, PathList &, bool)
Definition oldbAdapter.cpp:1140
DynamicThreadPool m_thread_pool
worker threadpool
Definition oldbAdapter.hpp:161
Base interface for all OLDB adapters.
Definition oldbIf.hpp:25
Definition repositoryIf.hpp:941
std::vector< std::any > RequestList
Definition repositoryIf.hpp:53
Definition requestDispatcher.hpp:37
Definition requestDispatcher.hpp:31
#define RTCTK_LOCAL
Helper to hide a class or function from the public symbol table.
Definition config.hpp:60
Header file for a dynamic resizing thread pool.
Definition commandReplier.cpp:22
RepositoryIf::PathList PathList
Definition persistentRepoAdapter.cpp:96
Header file for OldbIf, which defines the API for OldbAdapters.
Header file for the RequestDispatcher utility class.
TODO.
Definition oldbAdapter.hpp:175
void(OldbAdapter::* subscribe_method)(detail::ValueSubscribeRequest &)
Definition oldbAdapter.hpp:179
void(OldbAdapter::* delete_method)(const elt::mal::Uri &)
Definition oldbAdapter.hpp:178
void(OldbAdapter::* write_metadata_method)(detail::WriteMetaDataRequest &)
Definition oldbAdapter.hpp:177
void(OldbAdapter::* read_metadata_method)(detail::ReadMetaDataRequest &)
Definition oldbAdapter.hpp:176
Definition oldbAdapter.hpp:164
std::shared_ptr< CiiOldbDpSubscriptionBase > sub
Definition oldbAdapter.hpp:166
std::shared_ptr< CiiOldbTypedDataBase > dp
Definition oldbAdapter.hpp:165
std::function< void(SubscriptionEntry &)> unreg_cb
Definition oldbAdapter.hpp:167
Definition repositorySubscriberIf.ipp:34
Definition repositoryIf.ipp:40
Definition repositoryIf.ipp:124
Definition repositoryIf.ipp:48
Definition repositoryIf.ipp:53
Definition repositoryIf.ipp:59
Definition repositoryIf.ipp:91
Definition repositoryIf.ipp:102
Definition repositoryIf.ipp:67
Definition repositorySubscriberIf.ipp:41
Definition repositoryIf.ipp:130
Definition repositorySubscriberIf.ipp:27
Definition repositoryIf.ipp:81