... | ... | @@ -38,7 +38,7 @@ LeaseQueryListener will provide a connection thread pool in which each thread su |
|
|
|
|
|
The following diagram illustrates the new class hierarchy:
|
|
|
|
|
|
![blq_classes.svg](uploads/84777a6a72d6a946a6950922d2b08c58/blq_classes.svg)
|
|
|
![blq_classes.svg](uploads/6dd52d50dd13293148811927d3c5af02/blq_classes.svg)
|
|
|
|
|
|
When a query packet arrives its queries will be pushed onto a queue. The queue is monitored a pool by one or more query worker threads. Each worker thread is responsible for submitting a single query against the lease store, iteratively fetching the results, and pushing results as XID/binding pairs to connection's outbound queue. The connection thread will add the binding pairs to the current TCP packet until it is full and then send it asynchronously. Subsequent pairs are adding to a new packet. This continues until there are no more queued queries.
|
|
|
|
... | ... | @@ -618,7 +618,7 @@ The work breaks down into two parallel tracks: Query fulfillment and LeaseQueryL |
|
|
driven threads.
|
|
|
b. HttpListener* -> TcpListener*, these classes could reside in asiolink and possibly also used
|
|
|
as base classes for Http code, though this would be ancillary to making BLQ work.
|
|
|
c. LeaseQueryConnection (not shown yet) would derive from TcpConnection
|
|
|
c. Derive LeaseQueryConnection from TcpConnection
|
|
|
d. CmdHttpListener -> LeaseQueryListener, self explanatory
|
|
|
|
|
|
2.2 Implement LeaseQueryConnection packet read and write logic (i.e. replace Transaction logic)
|
... | ... | |