Qore ConnectionProvider Module Reference  1.7.1
AbstractConnection.qc.dox.h
1 // -*- mode: c++; indent-tabs-mode: nil -*-
2 // Qore AbstractConnection class definition
3 
4 /* AbstractConnection.qc Copyright 2016 - 2022 Qore Technologies, s.r.o.
5 
6  Permission is hereby granted, free of charge, to any person obtaining a
7  copy of this software and associated documentation files (the "Software"),
8  to deal in the Software without restriction, including without limitation
9  the rights to use, copy, modify, merge, publish, distribute, sublicense,
10  and/or sell copies of the Software, and to permit persons to whom the
11  Software is furnished to do so, subject to the following conditions:
12 
13  The above copyright notice and this permission notice shall be included in
14  all copies or substantial portions of the Software.
15 
16  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  DEALINGS IN THE SOFTWARE.
23 */
24 
26 
28 namespace ConnectionProvider {
30 
34 class AbstractConnection : public Serializable {
35 
36 public:
38  string name;
39 
41  string desc;
42 
44  string url;
45 
47  string safe_url;
48 
50  *hash<auto> orig_opts;
51 
53  *hash<auto> opts;
54 
56  hash<auto> urlh;
57 
60 
62  string status = "not checked";
63 
65  bool up = False;
66 
68  bool monitor;
69 
72 
74  bool loopback = False;
75 
77  static *code post_processing;
78 
80  bool enabled = True;
81 
83  bool locked = False;
84 
86  bool debug_data = False;
87 
89  hash<auto> tags = {};
90 
93 
96 
99 
102 
104  hash<auto> internal_info;
105 
107 
116  deprecated
118  string desc,
119  string url,
120  bool monitor,
121  *hash opts,
122  hash urlh,
123  *string safe_url,
124  *bool enabled) {
125  // remove "enabled" option from option hash, if any
126  *bool opt_enabled = remove opts.enabled;
127  hash<auto> attributes = {
128  "monitor": monitor,
129  "enabled": enabled ?? opt_enabled ?? True,
130  };
131  constructorInit(name, desc, url, attributes, opts ?? {});
132  }
133 
135 
152  constructor(string name, string description, string url, hash<auto> attributes = {}, hash<auto> options = {});
153 
154 
156 
160  string getName();
161 
162 
164 
168  string getDescription();
169 
170 
172 
176  string getUrl();
177 
178 
180 
184  string getSafeUrl();
185 
186 
188 
192  hash<PingInfo> ping(bool throw_exception = False);
193 
194 
196 protected:
197  hash<PingInfo> pingIntern(hash<PingInfo> rv);
198 public:
199 
200 
202 
208  hash<ConnectionInfo> getInfo(bool with_password = False);
209 
210 
212 
217  hash<ConnectionInfo> getInfo(*hash<auto> opts);
218 
219 
221 
225  hash<auto> getExtendedInfo(*hash<auto> opts);
226 
227 
229 
231  hash<ConfigInfo> getConfigHash();
232 
233 
235  hash<ConnectionSchemeInfo> getConnectionSchemeInfo();
236 
237 
239  *hash<auto> getOptions();
240 
241 
243  *hash<auto> getRuntimeOptions();
244 
245 
247  *hash<auto> getDefaultOptions();
248 
249 
251  *hash<auto> getRealOptions();
252 
253 
255 
257  object get(bool connect = True, *hash<auto> rtopts);
258 
259 
261 
264 
265 
267  hash<auto> getTags();
268 
269 
271  auto getTag(string tag);
272 
273 
275 
277  auto getTagEx(string tag);
278 
279 
281 
292  AbstractDataProvider getDataProvider();
293 
294 
296 
306 
307 
309 
321 
322 
324 
332  AbstractPollOperation startPollConnect();
333 
334 
336 
340  object getPollImpl();
341 
342 
344 
352 protected:
353  hash<UrlInfo> parseUrl(string url);
354 public:
355 
356 
358 
371 protected:
372  string getSafeUrl(hash<auto> urlh);
373 public:
374 
375 
377 
384 protected:
385  hash<auto> validateOptions(hash<auto> options);
386 public:
387 
388 
390 
393 private:
394  constructorInit(string name, string description, string url, hash<auto> attributes, hash<auto> options);
395 public:
396 
397 
399 protected:
401 public:
402 
403 
405  abstract string getType();
406 
408 
414 protected:
415  abstract object getImpl(bool connect = True, *hash<auto> rtopts);
416 public:
417 };
418 }; // ConnectionProvider namespace
abstract base class for connections
Definition: AbstractConnection.qc.dox.h:34
string desc
connection description
Definition: AbstractConnection.qc.dox.h:41
bool locked
locked/unlocked flag
Definition: AbstractConnection.qc.dox.h:83
string getName()
Returns the connection name.
hash< ConnectionSchemeInfo > getConnectionSchemeInfo()
Returns a default ConnectionSchemeInfo hash.
bool hasDataProvider()
returns True if the connection returns a data provider with the getDataProvider() method
*hash< auto > opts
connection options
Definition: AbstractConnection.qc.dox.h:53
object getPollImpl()
Returns an unconnected object for a non-blocking poll operation.
object get(bool connect=True, *hash< auto > rtopts)
returns the underlying connection object
hash< ConnectionInfo > getInfo(bool with_password=False)
returns a ConnectionInfo hash of information about the connection
auto getTagEx(string tag)
returns the value of the given tag or throws an exception if the tag is not set with a value
hash< auto > internal_info
internal tags
Definition: AbstractConnection.qc.dox.h:104
*hash< auto > orig_opts
original connection options
Definition: AbstractConnection.qc.dox.h:50
string url
connection URL (potentially with password info)
Definition: AbstractConnection.qc.dox.h:44
bool children_can_support_messages
if the data provider or any of its children support messages
Definition: AbstractConnection.qc.dox.h:101
hash< UrlInfo > parseUrl(string url)
Parse the URL to a hash.
hash< ConfigInfo > getConfigHash()
returns a ConfigInfo hash of static configuration information about the connection
bool monitor
monitoring flag
Definition: AbstractConnection.qc.dox.h:68
string safe_url
"safe" URL (password information removed)
Definition: AbstractConnection.qc.dox.h:47
setChildCapabilitiesImpl()
Override to set child data provider capabilities once per child class.
hash< auto > tags
connection tags; user-defined key-value pairs
Definition: AbstractConnection.qc.dox.h:89
string getSafeUrl(hash< auto > urlh)
creates a "safe" URL string with password information removed
bool enabled
enabled/disabled indicator flag
Definition: AbstractConnection.qc.dox.h:80
AbstractDataProvider getDataProvider()
returns a data provider object for this connection, if supported
date last_check
date/time of last check/ping
Definition: AbstractConnection.qc.dox.h:59
*hash< auto > getDefaultOptions()
returns default options
AbstractPollOperation startPollConnect()
Called to start the connection polling operation.
bool up
connection status flag; set by monitoring or explicit pings/connections
Definition: AbstractConnection.qc.dox.h:65
string getDescription()
Returns the connection description.
hash< PingInfo > pingIntern(hash< PingInfo > rv)
performs the ping by executing get(); returns a PingInfo hash
bool supportsPollingApi()
returns True if the connection supports the Qore Socket-based polling API
bool debug_data
debug data flag; to be used an an indication for a higher-level implementation
Definition: AbstractConnection.qc.dox.h:86
constructorInit(string name, string description, string url, hash< auto > attributes, hash< auto > options)
Common construtor implementation.
string name
connection name
Definition: AbstractConnection.qc.dox.h:38
abstract object getImpl(bool connect=True, *hash< auto > rtopts)
this method must return the connection object corresponding to the object's configuration
deprecated constructor(string name, string desc, string url, bool monitor, *hash opts, hash urlh, *string safe_url, *bool enabled)
creates the AbstractConnection object
Definition: AbstractConnection.qc.dox.h:117
string getSafeUrl()
Returns the connection safe URL (without password info)
string getUrl()
Returns the connection URL.
hash< auto > getExtendedInfo(*hash< auto > opts)
Returns connection info plus any extended information returned by the connection.
constructor(string name, string description, string url, hash< auto > attributes={}, hash< auto > options={})
creates the AbstractConnection object
auto getTag(string tag)
returns the value of the given tag or NOTHING if not present
string status
status string; in case of a connection error this string will be the error string
Definition: AbstractConnection.qc.dox.h:62
parseTextOptions()
this method is called when parsing connection file definitions from text files when loading into the ...
date updated
date/time of last update
Definition: AbstractConnection.qc.dox.h:71
bool children_can_support_apis
if the data provider or any of its children support requests (APIs)
Definition: AbstractConnection.qc.dox.h:92
static *code post_processing
optional code for default post-processing of objects created by getImpl(); must take the connection o...
Definition: AbstractConnection.qc.dox.h:77
bool loopback
set to True for loopback connections
Definition: AbstractConnection.qc.dox.h:74
*hash< auto > getRuntimeOptions()
returns runtime options
bool children_can_support_observers
if the data provider or any of its children support events
Definition: AbstractConnection.qc.dox.h:98
bool children_can_support_records
if the data provider or any of its children support records
Definition: AbstractConnection.qc.dox.h:95
abstract string getType()
returns the string type name for the connection object
hash< auto > validateOptions(hash< auto > options)
performs options validation in the constructor
*hash< auto > getRealOptions()
returns options for saving the connection's configuration information
*hash< auto > getOptions()
returns static / initialization options
hash< auto > urlh
broken down URL hash (as returned by Qore::parse_url())
Definition: AbstractConnection.qc.dox.h:56
hash< auto > getTags()
returns all tags associated with the connection
hash< PingInfo > ping(bool throw_exception=False)
returns a hash with the results of the ping operation
hash< ConnectionInfo > getInfo(*hash< auto > opts)
returns a ConnectionInfo hash of information about the connection
const True
const False
date date(date dt)
hash< auto > hash(object obj)
The ConnectionProvider namespace.
Definition: AbstractConnection.qc.dox.h:28