Qorus Integration Engine®  4.1.4.p4_git
OMQ::AbstractParallelReceiveStream Class Referenceabstract

this class handles stream classes that use an I/O thread to receive data More...

Inheritance diagram for OMQ::AbstractParallelReceiveStream:
OMQ::AbstractParallelStream OMQ::DbRemoteReceive OMQ::DbRemoteRawReceive

Public Member Methods

 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
 

Private Member Methods

abstract 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
 

Additional Inherited Members

- Private:Internal Member Methods inherited from OMQ::AbstractParallelStream
 destructor ()
 wait for any I/O in progress to complete
 
nothing cleanupBase ()
 called by child classes 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 waitIoComplete ()
 waits for the I/O thread to complete and returns
 
bool inTransaction ()
 Returns True if a remote transaction is in progress. More...
 
private markIoInProgress ()
 marks the current connection as in progress; must be already checked beforehand that it's not in progress
 
private markIoComplete ()
 performs thread cleanup on the background I/O thread if any is registered and running
 
OMQ::StreamInfo getInfo ()
 returns performance information about the stream
 
private checkError (string cmd)
 checks for an error in the background send thread; if there is one, then rethrows the exception in the main application / data thread
 
private startStream ()
 opens the remote transaction by calling startStreamImpl() and starts the background I/O socket thread More...
 
private socketThread (*ThreadLocalData my_tld)
 sets up thread-local data if possible and calls socketThreadImpl() that implements the background socket I/O for the object
 
private abortIo (string reason)
 signals the end of queue operations
 
private bool abortIoWait (string reason)
 signals the end of queue operations and waits until the socket thread terminates More...
 
private beginTransaction (OMQ::DbStreamConfig m_config)
 starts or continues a remote transaction
 
private commit (OMQ::DbStreamConfig m_config)
 commits a remote transaction
 
private rollback (OMQ::DbStreamConfig m_config)
 rolls back a remote transaction
 
abstract OMQ::StreamConfig config ()
 returns the configuration object
 
Qore::Thread::Counter cnt ()
 confirmation counter for the socket I/O thread
 
OMQ::StreamInfo m_info ()
 stream information
 
abstract socketThreadImpl ()
 this method implements the background thread that handles the actual DataStream socket sends
 
abstract startStreamImpl ()
 opens the remote transaction before starting the background I/O socket thread
 
- Static Private:Internal Member Methods inherited from OMQ::AbstractParallelStream
static staticCleanup ()
 performs static thread resource cleanup on I/O thread resources
 
static checkStream (QorusSystemRestHelper helper, string op)
 checks if there is a stream operation running in the background, if so, a user-friendly exception is thrown
 
static beginTransaction (QorusSystemRestHelper remote, string datasource, *timeout timeout_ms, *reference info)
 starts a transaction in a remote datasource More...
 
- Private:Internal Attributes inherited from OMQ::AbstractParallelStream
const DO_DISCONNECT = True
 A constant for rollback() methods to perform real disconnect.
 
const DONT_DISCONNECT = False
 A constant for rollback() methods to keep the network connection alive.
 
Qore::Thread::Queue dataq
 Queue for the socket I/O thread.
 
*hash< auto > thread_ex
 exception info for send thread to communicate errors to the primary data thread
 
string objid
 stream object identifier
 
const StreamTerminatedError = "STREAM-TERMINATED"
 stream terminated error
 
const ThreadKey = "_STREAM_"
 thread-local data key
 

Detailed Description

this class handles stream classes that use an I/O thread to receive data

such classes have the following characteristics:

  • when aborting the I/O thread, the connection must be closed
  • the destructor will abort any background I/O in progress, if the I/O thread is aborted, then it will disconnect the connection and throw a user-friendly exception explaining what went wrong and how to avoid it in the future
  • whenever the main thread detects that all data has been received or a stream error has occured, the connection must be marked as available again (is call waitIoComplete())

The documentation for this class was generated from the following file: