Closed sjlongland closed 9 years ago
Okay, I've done some splitting up of the commits. This required re-writing a couple.
https://github.com/sjlongland/qamqp/tree/state-machine-client :- Changes to the client itself, namely pointer storage. https://github.com/sjlongland/qamqp/tree/state-machine-chan :- Changes to QAmqpChannel, based on state-machine-client. https://github.com/sjlongland/qamqp/tree/state-machine-ex :- Changes to QAmqpExchange, based on state-machine-chan. https://github.com/sjlongland/qamqp/tree/state-machine-q :- Changes to QAmqpQueue, based on state-machine-ex.
@sjlongland cool lets put up the PR for the state-machine-client and work through it? seems the rest are dependent on that
Since we're doing this in pieces, I'll close this PR and we'll address the changes in separate requests.
This uses crude state machines (use of QStateMachine is on the road map) to implement various operations for Queues and Exchanges.
If the connection gets dropped or a channel forcibly closed, this allows the exchange or queue to restore its state when the channel re-opens, including binding to exchanges/topics in the case of queues. It also allows for set-and-forget configuration of exchanges and queues, since the state machine will take care to ensure the steps are done at the appropriate times.
Status of this branch: