Loading...
Searching...
No Matches
ConnectionProvider::AbstractConnection Class Referenceabstract

abstract base class for connections More...

`#include <AbstractConnection.qc.dox.h>`

Inheritance diagram for ConnectionProvider::AbstractConnection:
[legend]

## Public Member Functions

deprecated | constructor (string name, string desc, string url, bool monitor, *hash opts, hash urlh, *string safe_url, *bool enabled)
| creates the AbstractConnection object
| constructor (string name, string description, string url, hash< auto > attributes={}, hash< auto > options={}, *LoggerInterface logger)
| creates the AbstractConnection object
object | get (bool connect=True, *hash< auto > rtopts)
| returns the underlying connection object
hash< ConfigInfo > | getConfigHash ()
| returns a ConfigInfo hash of static configuration information about the connection
hash< ConnectionSchemeInfo > | getConnectionSchemeInfo ()
| Returns a default ConnectionSchemeInfo hash.
hash< ConnectionSchemeInfo > | getConnectionSchemeInfoImpl ()
| Override in subclasses to return a native ConnectionSchemeInfo hash.
AbstractDataProvider | getDataProvider ()
| returns a data provider object for this connection, if supported
*hash< auto > | getDefaultOptions ()
| returns default options
string | getDescription ()
| Returns the connection description.
hash< auto > | getExtendedInfo (*hash< auto > opts)
| Returns connection info plus any extended information returned by the connection.
*hash< string, bool > | getFeatures ()
| Returns a list of connection-defined features.
hash< ConnectionInfo > | getInfo (*hash< auto > opts)
| returns a ConnectionInfo hash of information about the connection
hash< ConnectionInfo > | getInfo (bool with_password=False)
| returns a ConnectionInfo hash of information about the connection
string | getName ()
| Returns the connection name.
*hash< auto > | getOptions ()
| returns static / initialization options
object | getPollImpl ()
| Returns an unconnected object for a non-blocking poll operation.
*hash< auto > | getRealOptions ()
| returns options for saving the connection's configuration information
*hash< auto > | getRuntimeOptions ()
| returns runtime options
string | getSafeUrl ()
| Returns the connection safe URL (without password info)
auto | getTag (string tag)
| returns the value of the given tag or NOTHING if not present
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 > | getTags ()
| returns all tags associated with the connection
abstract string | getType ()
| returns the string type name for the connection object
string | getUrl ()
| Returns the connection URL.
| handlePingFailed (date delta, hash< ExceptionInfo > ex)
| Handles a failed ping operation on the connection.
| handlePingFailed (date delta, string err)
| Handles a failed ping operation on the connection.
| handlePingSuccess (date delta)
| Handles a successful ping operation on the connection.
bool | hasDataProvider ()
| returns True if the connection returns a data provider with the getDataProvider() method
| parseTextOptions ()
| this method is called when parsing connection file definitions from text files when loading into the database
hash< PingInfo > | ping (bool throw_exception=False)
| returns a hash with the results of the ping operation
Qore::AbstractPollOperation | startPollConnect ()
| Called to start the connection polling operation.
bool | supportsPollingApi ()
| returns True if the connection supports the Qore Socket-based polling API

## Public Attributes

const | CF_LOGGER = "logger"
| Connection feature: Logger support.
const | CF_UPDATE_OPTIONS = "update-options"
| Connection feature: Update Options support.
bool | children_can_support_apis = False
| if the data provider or any of its children support requests (APIs)
bool | children_can_support_messages = False
| if the data provider or any of its children support messages
bool | children_can_support_observers = False
| if the data provider or any of its children support events
bool | children_can_support_records = False
| if the data provider or any of its children support records
bool | children_can_support_transactions = False
| if the data provider or any of its children support transaction management
bool | debug_data = False
| debug data flag; to be used an an indication for a higher-level implementation
string | desc
| connection description
bool | enabled = True
| enabled/disabled indicator flag
hash< auto > | internal_info
| internal tags (serializable)
date | last_check
| date/time of last check/ping
bool | locked = False
| locked/unlocked flag
bool | loopback = False
| set to True for loopback connections
bool | monitor
| monitoring flag
string | name
| connection name
*hash< auto > | opts
| connection options
*hash< auto > | orig_opts
| original connection options
string | safe_url
| "safe" URL (password information removed)
string | status = "not checked"
| status string; in case of a connection error this string will be the error string
hash< auto > | tags = {}
| connection tags; user-defined key-value pairs
transient hash< auto > | transient_info
| internal transient tags (non-serializable)
bool | up = True
| connection status flag; set by monitoring or explicit pings/connections
date | updated
| date/time of last update
string | url
| connection URL (potentially with password info)
hash< auto > | urlh
| broken down URL hash (as returned by Qore::parse_url())

## Static Public Attributes

static *code | post_processing
| optional code for default post-processing of objects created by getImpl()

## Protected Member Functions

*hash< string, bool > | getFeaturesImpl ()
| Returns a hash of connection-defined features.
abstract object | getImpl (bool connect=True, *hash< auto > rtopts)
| this method must return the connection object corresponding to the object's configuration
string | getSafeUrl (hash< auto > urlh)
| creates a "safe" URL string with password information removed
hash< UrlInfo > | parseUrl (string url)
| Parse the URL to a hash.
| pingImpl ()
| performs the internal ping
hash< PingInfo > | pingIntern (hash< PingInfo > rv)
| performs the ping by executing get(); returns a PingInfo hash
| setChildCapabilities ()
| Override to set child data provider capabilities once per child class.
hash< auto > | validateOptions (hash< auto > options)
| performs options validation in the constructor

## Private Member Functions

| constructorInit (string name, string description, string url, hash< auto > attributes, hash< auto > options)
| Common construtor implementation.

## Detailed Description

abstract base class for connections

this class can be specialized to provide for user-defined connection types

Deprecated:
  use AbstractConnectionWithInfo instead

## Member Function Documentation

## constructor() [1/2]

deprecated ConnectionProvider::AbstractConnection::constructor | ( | string | name,
|  | string | desc,
|  | string | url,
|  | bool | monitor,
|  | *hash | opts,
|  | hash | urlh,
|  | *string | safe_url,
|  | *bool | enabled
| ) |  |

creates the AbstractConnection object

Parameters

  name | the name of the connection
  desc | connection description
  url | connection URL (potentially with password info)
  monitor | monitoring flag
  opts | connection options
  urlh | broken down URL hash (as returned by Qore::parse_url())
  safe_url | "safe" URL (password information removed); if not set this will be set automatically by calling getSafeUrl()
  enabled | enabled/disabled flag

## constructor() [2/2]

ConnectionProvider::AbstractConnection::constructor | ( | string | name,
|  | string | description,
|  | string | url,
|  | hash< auto > | attributes = `{}`,
|  | hash< auto > | options = `{}`,
|  | *LoggerInterface | logger
| ) |  |

creates the AbstractConnection object

Parameters

  name | the name of the connection
  description | connection description
  url | connection URL (potentially with password info)
  attributes | various attributes; see below
  options | connection options
  logger | any logger interface to use for the connection

Attributes
  Attributes are special flags for given connection - stored as public attributes of the object instance. For now there are:
  - `enabled` (bool), default `True`
  - `monitor` (bool), default `True`
  - `locked` (bool), default `False`
  - `tags` (hash), no default value

Exceptions

  CONNECTION-OPTION-ERROR | missing or invalid connection option

## constructorInit()

ConnectionProvider::AbstractConnection::constructorInit | ( | string | name,
|  | string | description,
|  | string | url,
|  | hash< auto > | attributes,
|  | hash< auto > | options
| ) |  |

private

Common construtor implementation.

Exceptions

  CONNECTION-OPTION-ERROR | missing or invalid connection option

## get()

object ConnectionProvider::AbstractConnection::get | ( | bool | connect = `True`,
|  | *hash< auto > | rtopts
| ) |  |

returns the underlying connection object

calls getImpl() to actually acquire the connection object

## getConfigHash()

hash< ConfigInfo > ConnectionProvider::AbstractConnection::getConfigHash | ( |  | ) |

returns a ConfigInfo hash of static configuration information about the connection

Returns
  a ConfigInfo hash of static configuration information about the connection

## getDataProvider()

AbstractDataProvider ConnectionProvider::AbstractConnection::getDataProvider | ( |  | ) |

returns a data provider object for this connection, if supported

Returns
  a data provider object for this connection, if supported

Exceptions

  DATA-PROVIDER-ERROR | this object does not support the data provider API

This base class method throws a `DATA-PROVIDER-ERROR` exception by default; to support the data provider API, override this method in child classes

See also
  hasDataProvider()

Since
  ConnectionProvider 1.3

## getDescription()

string ConnectionProvider::AbstractConnection::getDescription | ( |  | ) |

Returns the connection description.

Returns
  the connection description

Since
  ConnectionProvider 1.7

## getExtendedInfo()

hash< auto > ConnectionProvider::AbstractConnection::getExtendedInfo | ( | *hash< auto > | opts | ) |

Returns connection info plus any extended information returned by the connection.

The default implementation in the base class returns the same value as getInfo(*hash<auto>)

Since
  ConnectionProvider 1.5

## getFeatures()

*hash< string, bool > ConnectionProvider::AbstractConnection::getFeatures | ( |  | ) |

Returns a list of connection-defined features.

Since
  ConnectionProvider 1.10

## getFeaturesImpl()

*hash< string, bool > ConnectionProvider::AbstractConnection::getFeaturesImpl | ( |  | ) |

protected

Returns a hash of connection-defined features.

This method returns no value; override in child classes to return features

Since
  ConnectionProvider 1.10

## getImpl()

abstract object ConnectionProvider::AbstractConnection::getImpl | ( | bool | connect = `True`,
|  | *hash< auto > | rtopts
| ) |  |

protectedpure virtual

this method must return the connection object corresponding to the object's configuration

Parameters

  connect | if True then the connection should be returned connected (and if possible a round-trip "ping" of the server should be made)
  rtopts | if the object acquisition requires any runtime options, then these are passed here

Returns
  the connection object

Implemented in ConnectionProvider::FtpConnection, ConnectionProvider::HttpConnection, and ConnectionProvider::InvalidConnection.

## getInfo() [1/2]

hash< ConnectionInfo > ConnectionProvider::AbstractConnection::getInfo | ( | *hash< auto > | opts | ) |

returns a ConnectionInfo hash of information about the connection

Parameters

  opts | connection information options; options are connection-specific; the only universal option is `with_passwords:` if True, then passwords are returned in the info hash

Returns
  a ConnectionInfo hash of information about the connection

## getInfo() [2/2]

hash< ConnectionInfo > ConnectionProvider::AbstractConnection::getInfo | ( | bool | with_password = `False` | ) |

returns a ConnectionInfo hash of information about the connection

Parameters

  with_password | determines if the password is returned or not

Returns
  a ConnectionInfo hash of information about the connection

Deprecated:
  use getInfo(*hash<auto> opts) instead

## getName()

string ConnectionProvider::AbstractConnection::getName | ( |  | ) |

Returns the connection name.

Returns
  the connection name

Since
  ConnectionProvider 1.7

## getPollImpl()

object ConnectionProvider::AbstractConnection::getPollImpl | ( |  | ) |

Returns an unconnected object for a non-blocking poll operation.

Returns
  an unconnected object for a non-blocking poll operation

Since
  ConnectionProvider 1.7.1

## getSafeUrl() [1/2]

string ConnectionProvider::AbstractConnection::getSafeUrl | ( |  | ) |

Returns the connection safe URL (without password info)

Returns
  the connection safe URL (without password info)

Since
  ConnectionProvider 1.7

## getSafeUrl() [2/2]

string ConnectionProvider::AbstractConnection::getSafeUrl | ( | hash< auto > | urlh | ) |

protected

creates a "safe" URL string with password information removed

Parameters

  urlh | a parsed hash (as returned from parseUrl()

Returns
  string with safe URL

This base/default implementation expects the `urlh` as returned by Qore::parse_url())

The public attribute `safe_url` is created from the `url` calling AbstractConnection::getSafeUrl(). Reimplement this method if your connection does not follow the standard URL format like:

scheme://user:pass@hostname:port/path

## getTagEx()

auto ConnectionProvider::AbstractConnection::getTagEx | ( | string | tag | ) |

returns the value of the given tag or throws an exception if the tag is not set with a value

Exceptions

  TAG-ERROR | the given tag is not set on the connection

## getUrl()

string ConnectionProvider::AbstractConnection::getUrl | ( |  | ) |

Returns the connection URL.

Returns
  the connection URL

Since
  ConnectionProvider 1.7

## hasDataProvider()

bool ConnectionProvider::AbstractConnection::hasDataProvider | ( |  | ) |

returns True if the connection returns a data provider with the getDataProvider() method

Returns
  True if the connection returns a data provider with the getDataProvider() method

This base class method returns False; to support the data provider API, override this method in child classes

See also
  getDataProvider()

Since
  ConnectionProvider 1.3

## parseTextOptions()

ConnectionProvider::AbstractConnection::parseTextOptions | ( |  | ) |

this method is called when parsing connection file definitions from text files when loading into the database

reimplement this method in subclasses to parse the option hash as set from a text file if needed (for special option formats, etc)

## parseUrl()

hash< UrlInfo > ConnectionProvider::AbstractConnection::parseUrl | ( | string | url | ) |

protected

Parse the URL to a hash.

Parameters

  url | a string with url

Returns
  hash untyped, depends on the parsing method

The base implementation calls Qore::parse_url().

Reimplement `parseUrl()` if your connection uses different URL scheme. Like eg. Qore::Datasource connection string.

## ping()

hash< PingInfo > ConnectionProvider::AbstractConnection::ping | ( | bool | throw_exception = `False` | ) |

returns a hash with the results of the ping operation

Parameters

  throw_exception | throw an exception if a connection error occurs

Returns
  a PingInfo hash

## pingImpl()

ConnectionProvider::AbstractConnection::pingImpl | ( |  | ) |

protected

performs the internal ping

By default this creates a new connection only; override in child classes to implement additional ping logic

## startPollConnect()

Qore::AbstractPollOperation ConnectionProvider::AbstractConnection::startPollConnect | ( |  | ) |

Called to start the connection polling operation.

Only called if the connection supports the polling API

Returns
  a socket poll operation object that will allow the connection goal to be reached with polling

See also
  supportsPollingApi()

Since
  ConnectionProvider 1.7

## supportsPollingApi()

bool ConnectionProvider::AbstractConnection::supportsPollingApi | ( |  | ) |

returns True if the connection supports the Qore Socket-based polling API

Returns
  True if the connection supports the polling API where multiple connections can be polled from a single thread

This base class method returns False; to support the new polling API, override this method in child classes

See also
  - startConnectPoll()

Since
  ConnectionProvider 1.7

## validateOptions()

hash< auto > ConnectionProvider::AbstractConnection::validateOptions | ( | hash< auto > | options | ) |

protected

performs options validation in the constructor

Parameters

  options | a hash with options from the constructor

Returns
  validated option hash

This method can be overloaded in connections where are options created dynamically for example

Exceptions

  CONNECTION-OPTION-ERROR | missing or invalid connection option

## Member Data Documentation

## CF_LOGGER

const ConnectionProvider::AbstractConnection::CF_LOGGER = "logger"

Connection feature: Logger support.

Indicates that connection objects support setting / updating a logger interface object in the connection

## CF_UPDATE_OPTIONS

const ConnectionProvider::AbstractConnection::CF_UPDATE_OPTIONS = "update-options"

Connection feature: Update Options support.

Returned as a connection feature indicating that the connection object inherits UpdateOptionsInterface and therefore supports setting a closure to update connection options in external systems (in blocking I/O calls)

See also
  UpdateOptionsInterface

## post_processing

*code ConnectionProvider::AbstractConnection::post_processing

static

optional code for default post-processing of objects created by getImpl()

must take the connection object and the object created as arguments