A class for inbound/reading data from the remote instance from a raw SQL query, I/O is handled in a background thread and is made available in the getData() and getAllData() methods.
More...
|
| constructor (DbRemoteBase remote, string sql, *softlist< auto > args, *hash< auto > options) |
| constructor taking an OMQ::DbRemoteBase object for the remote connection More...
|
|
| constructor (string remote, string datasource, string sql, *softlist< auto > args, *hash< auto > options) |
| constructor taking a string giving the name of the remote connection for the remote server More...
|
|
| constructor (QorusSystemRestHelper remote, string datasource, string sql, *softlist< auto > args, *hash< auto > options) |
| constructor taking an OMQ::QorusSystemRestHelper object for the remote connection and assuming the "select" stream More...
|
|
private | constructor (*hash< auto > options, DbRemoteBase remote, string sql, *list< auto > args) |
| Private constructor.
|
|
private | constructor (*hash< auto > options, string remote, string datasource, string sql, *list< auto > args) |
| Private constructor.
|
|
private | constructor (*hash< auto > options, QorusSystemRestHelper remote, string datasource, string sql, *list< auto > args) |
| Private constructor.
|
|
| constructor (DbRemoteBase remote, string stream, string table_name, *hash< auto > options) |
| constructor taking an OMQ::DbRemoteBase object for the remote connection More...
|
|
| constructor (DbRemoteBase remote, string table_name, *hash< auto > options) |
| constructor taking an OMQ::DbRemoteBase object for the remote connection and assuming the "select" stream More...
|
|
| constructor (string remote, string datasource, string stream, string table_name, *hash< auto > options) |
| constructor taking a string giving the name of the remote connection for the remote server More...
|
|
| constructor (string remote, string datasource, string table_name, *hash< auto > options) |
| constructor taking a string giving the name of the remote connection for the remote server and assuming the "select" stream More...
|
|
| constructor (QorusSystemRestHelper remote, string datasource, string stream, string table_name, *hash< auto > options) |
| constructor taking an OMQ::QorusSystemRestHelper object for the remote connection More...
|
|
| constructor (QorusSystemRestHelper remote, string datasource, string table_name, *hash< auto > options) |
| constructor taking an OMQ::QorusSystemRestHelper object for the remote connection and assuming the "select" stream More...
|
|
| openStream (string stream, string table_name, *hash< auto > options) |
| flushes the current stream and reopens a new stream with the same remote connection and in the same datasource More...
|
|
private | throwAbortedExceptionImpl (string meth) |
| throw a user-friendly exception about why the I/O thread was aborted and the connection forcibly closed and how to avoid such situations in the future
|
|
private | startStreamImpl () |
| opens the remote transaction if necessary
|
|
private | socketThreadImpl () |
| receive reimplementation
|
|
| commit () |
| Commit remote transaction. More...
|
|
| rollback (bool action=DO_DISCONNECT) |
| Rollback remote transaction. More...
|
|
| disconnect () |
| Disconnects the connection.
|
|
private nothing | recvDataImpl (auto rdata) |
| An abstract method to handle incoming data. More...
|
|
private nothing | recvDataDoneImpl (*string err) |
| called when all data has been received or the background I/O operation terminates due to an error
|
|
*hash< auto > | getData (*timeout timeout_ms) |
| returns queued data as soon as it is available, if the timeout is omitted or equal or less than 0, no timeout is used and the call will block until data is available on the queue; once this method return NOTHING it signifies that the end of stream data condition has been reached; do not call this method again after it returns NOTHING More...
|
|
*hash< auto > | getAllData (*timeout timeout_ms) |
| returns all data recevied by the object in a single call, if the timeout is omitted or equal or less than 0, no timeout is used and the call will block until data is available on the queue More...
|
|
*list< auto > | getDataRows (*timeout timeout_ms) |
| returns queued data as a list<auto> of rows as soon as it is available, if the timeout is omitted or equal or less than 0, no timeout is used and the call will block until data is available on the queue; once this method return NOTHING it signifies that the end of stream data condition has been reached; do not call this method again after it returns NOTHING More...
|
|
*list< auto > | getAllDataRows (*timeout timeout_ms) |
| returns all data recevied by the object in a single call as a list<auto> of rows, if the timeout is omitted or equal or less than 0, no timeout is used and the call will block until data is available on the queue More...
|
|
private | checkComplete (string meth) |
| checks if data is requested after the transfer is complete
|
|
OMQ::StreamConfig | config () |
| returns the configuration object
|
|
| destructor () |
| disconnects and aborts the I/O thread if it's still running
|
|
nothing | cleanup () |
| called when the thread resource is still allocated and the thread exits or one of Qore::throw_thread_resource_exceptions() or Qore::throw_thread_resource_exceptions_to_mark() is called
|
|
private | abortInternMethod (string meth) |
| if the I/O thread is running, then abort it, disconnect the connection, and throw a user-friendly exception what happened and how to avoid such situations in the future
|
|
private | abortIntern (string meth, string fmt) |
| if the I/O thread is running, then abort it, disconnect the connection, and throw a user-friendly exception what happened and how to avoid such situations in the future
|
|
A class for inbound/reading data from the remote instance from a raw SQL query, I/O is handled in a background thread and is made available in the getData() and getAllData() methods.
- See also
- OMQ::DbRemoteReceive for information about usage
- Example:
DbRemoteRawReceive recv(qrest, "omquser", sql, args, ("block": 2000));
while (*hash<auto> h = recv.getData()) {
processData(h);
}
- Note
- a remote transaction is only started in this object's constructor if the
transaction
option is set, otherwise the remote transaction status is left unchanged