GitHub user astitcher opened a pull request:
https://github.com/apache/qpid-proton/pull/104
Port of thre C++ binding to the Proton Proactor library
This set of changes reimplements the C++ binding do that it no longer uses
the Proton Reactor library at all and now only links to the Proton Core and
Proton Proactor libraries.
It is not 100% finished yet, missing pieces include:
* Multi thread support - Currently the API is thread safe if you obey the
thread safety rules, but only one thread is used to service handler callbacks -
This will be fixed soon.
* Reconnect is not implemented - If a network connection fails no reconnect
action is attempted - This will also be fixed, but ntoe that the C++ binding
implementation of reconnect is subject to change as we don't have a lot of
experience with it yet.
Included in this PR is a reworking of the mechanism for injecting work into
safe contexts. The concepts have been renamed for clarity (`proton::work_queue`
& `proton::work`) and some convenience functions have been added to help those
(poor benighted souls) using C++03. There is some more work to come which
should also improve injecting work using the scheduler.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/astitcher/qpid-proton cpp-proactor
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/qpid-proton/pull/104.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #104
----
commit 085aa00f54be1609f936d5bb93a0bf1437829f3a
Author: Andrew Stitcher <[email protected]>
Date: 2017-02-08T07:32:36Z
PROTON-1400: [C++ binding] Proactor container implementation
- Remove all reactor use
- Rearrange object context code
- Change container includes to proactor container includes
commit 602429bcfd15edaebcb370f5dee010903e3b4d03
Author: Andrew Stitcher <[email protected]>
Date: 2017-02-09T01:12:36Z
PROTON-1400: [C++ binding] Remove reactor container implementation files.
commit fc6b05b1e6762f680310ee80f5fc2afa883e4d71
Author: Andrew Stitcher <[email protected]>
Date: 2017-04-27T17:05:14Z
PROTON-1400: [C++ binding] Use pn_proactor_now() to implement
timestamp::now()
commit ca95aa36b271ca63293a7287afcedaab575183a9
Author: Andrew Stitcher <[email protected]>
Date: 2017-05-16T20:02:09Z
PROTON-1400: Fixup
commit 6f24b7c88b72363b966f6855ed689c46d82682b0
Author: Andrew Stitcher <[email protected]>
Date: 2017-01-23T17:32:50Z
PROTON-1400: [C++ binding] Removed proton_event and proton_handler
- Removed old low level proton event handling completely
- Now directly dispatch to the messaging_handler
- Moved private message::decode directly into message handling code
commit c4f5ac3b091a37cf4423eca373f41ca382d2f45f
Author: Andrew Stitcher <[email protected]>
Date: 2017-01-25T04:36:03Z
PROTON-1400: WIP Use the mt broker example as the example instead of the
previous st broker
- The st broker didn't correctly respect the object access constraints from
within handlers
commit d622676f8abe46d9351236e1ddc55336f524051d
Author: Andrew Stitcher <[email protected]>
Date: 2017-03-03T20:51:58Z
NO-JIRA: Header file corrections
commit e9bf06254d2904192cfe27de291ea2b8ae2443a1
Author: Andrew Stitcher <[email protected]>
Date: 2017-04-14T06:13:12Z
PROTON-1400: [C+ binding] Change semantic for incoming xx_open
- If not overridden then you get automatic outgoing matching xx_open
- If overridden then it is assumed you will handle the outgoing open
yourself.
commit 6b231dc2857eb8fdb5bb948aa2709da742a09b9f
Author: Andrew Stitcher <[email protected]>
Date: 2017-03-28T17:45:28Z
PROTON-1400: [C++ example] Rework broker to use container event loops
commit 238324b1e636c1c632cef8b45fdd04611cf61aaa
Author: Andrew Stitcher <[email protected]>
Date: 2017-04-20T19:20:40Z
PROTON-1400: Implement container level event_loops
commit 6f00ac312f0a359195aaf005a301657228290063
Author: Andrew Stitcher <[email protected]>
Date: 2017-05-15T05:27:54Z
PROTON-1481: [C++ binding] Rename event_loop API to work_queue
commit f3b84b5ab8bbdaa3422a5e628f8b210371a9cd9a
Author: Andrew Stitcher <[email protected]>
Date: 2017-05-15T05:36:52Z
PROTON-1481: [C++ binding] simpify work_queue code by introducing work type
- The work type can be created from std::function<void()> or void_function0
- and so pushes those c++1/C++03 differences into a single place
commit 557a16bf0544a0faa4d1c9aa2d92e7a864264f40
Author: Andrew Stitcher <[email protected]>
Date: 2017-05-15T05:45:43Z
PROTON-1481: [C++ binding] Split out general work deferring functions to
the work_queue header
Add efficient C++11 versions of work factories
Reorder defer arguments to be like std::bind
Add extra overloads for defer like std::bind (for free functions arbitrary
work_queues)
----
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]