May 26, 2018
Thread-safe request/response queue with identifiable elements
A mapped queue, similar to ThreadQueue, except that as elements are queued, they are assigned unique identifiers, which are used to identify responses returned from the dequeuing thread. This class provides a simple RPC-like mechanism between multiple client and server threads, so that a single server thread can safely multiplex requests from multiple client threads. Note that simplex versions of the enqueue methods are provided which do not assign unique identifiers, and are used for requests to which no response is required/expected.
In addition, elements are inspected as they are enqueued/dequeued to determine if they are ThreadQueueQueueable aka TQQ objects, and, if so, the onEnqueue or onDequeue methods are called to permit any additional class-specific marshalling/unmarshalling to be performed. ThreadQueueDuplex aka TQD is itself a ThreadQueueQueueable object, thus permitting TQD objects to be passed between threads.