RTC Toolkit 6.0.0-pre2
Loading...
Searching...
No Matches
oldbAdapter.hpp
Go to the documentation of this file.
1
12
13#ifndef RTCTK_COMPONENTFRAMEWORK_OLDBADAPTER_HPP
14#define RTCTK_COMPONENTFRAMEWORK_OLDBADAPTER_HPP
15
16#include <ciiOldb.hpp>
17#include <ciiOldbSubscription.hpp>
18#include <ciiOldbTypedDataBase.hpp>
19
23
24#include <map>
25#include <unordered_map>
26
28
34class OldbAdapter : public OldbIf {
35public:
36 inline static const std::string SUPPORTED_URI_SCHEME = "cii.oldb";
37
39 OldbAdapter() = delete;
40
42 OldbAdapter(const OldbAdapter&) = delete;
43
46
50
57 explicit OldbAdapter(const elt::mal::Uri& baseuri);
58
65 explicit OldbAdapter(const elt::mal::Uri& baseuri,
66 const std::shared_ptr<elt::oldb::CiiOldb>& oldb);
67
71 ~OldbAdapter() override = default;
72
73 elt::mal::Uri GetUri() const override {
74 return m_baseuri;
75 }
76
77protected:
78 using CiiOldbTypedDataBase = elt::oldb::CiiOldbTypedDataBase;
79 using CiiOldbDpSubscriptionBase = elt::oldb::CiiOldbDpSubscriptionBase;
80
81 RTCTK_LOCAL auto GetOldbBaseDataPoint(auto& request);
82
83 template <typename CiiType>
85
86 template <typename DataPointType, typename T>
88
89 template <typename T>
91
92 template <typename DataPointType, typename T>
94
95 template <typename T>
97
98 template <typename DataPointType, typename T>
100
101 template <typename T>
103
104 template <typename DataPointType, typename T>
106
107 template <typename T>
109
110 template <typename DataPointType, typename T>
112
113 template <typename T>
115
116 template <typename DataPointType>
118
120
121 template <typename DataPointType>
123
125
126 template <typename DataPointType>
127 void DeleteWithMetadata(const elt::mal::Uri&);
128
135
136 template <typename DataPointType>
138
140
143
145
146 BatchResponse ProcessRequests(const RequestList& requests) override;
147
152 const elt::mal::Uri m_baseuri;
153
155 mutable std::shared_ptr<elt::oldb::CiiOldb> m_client;
156
158 mutable std::mutex m_mutex;
159
162
163 // data structures to hold active subscriptions
165 std::shared_ptr<CiiOldbTypedDataBase> dp;
166 std::shared_ptr<CiiOldbDpSubscriptionBase> sub;
167 std::function<void(SubscriptionEntry&)> unreg_cb;
168 };
169
170 std::map<SubscriptionId, SubscriptionEntry> m_subscriptions;
171
181
182 using MethodLookupTable = std::unordered_map<std::type_index, MethodsRecord>;
183 using MethodLookupTableEntry = typename MethodLookupTable::value_type;
184
188 template <typename T>
190
194 static const MethodsRecord& FindTypeHandlers(const std::type_info& type);
195
198
202 template <typename T>
204
207};
208
209} // namespace rtctk::componentFramework
210
211#endif // RTCTK_COMPONENTFRAMEWORK_OLDBADAPTER_HPP
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
std::vector< std::any > RequestList
Definition repositoryIf.hpp:53
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.
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
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:41
Definition repositorySubscriberIf.ipp:27