GitHub user astitcher opened a pull request:
https://github.com/apache/qpid-proton/pull/105
Port of C++ binding to Proton Proactor
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/105.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 #105
----
commit 96435b5cfac13283c612ba60feefd73901bc9c4f
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 84dcd7bcaa97106ef43a6a8b44a7f3e819f07107
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 b95f252ede1aaa20c8a5fd1abd42fdbe2c7c3ebe
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 ea7f0e989ba5b90aa322b38336dfbbb089fae899
Author: Andrew Stitcher <[email protected]>
Date: 2017-02-09T01:12:36Z
PROTON-1400: [C++ binding] Remove reactor container implementation files.
commit a0c9e9a756d452bc7c992e4a9875f681b69d5c44
Author: Andrew Stitcher <[email protected]>
Date: 2017-03-03T20:51:58Z
NO-JIRA: Header file corrections
commit 6ed1d1ab4a68f0a132f44b59a09b1582a2f6b4ff
Author: Andrew Stitcher <[email protected]>
Date: 2017-03-28T17:45:28Z
PROTON-1400: [C++ example] Rework broker to use container event loops
commit db92f4c73444d186899e5fa28e638195f3adf5f4
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 a52e5d16363caa736062359dab0733b4db6b8992
Author: Andrew Stitcher <[email protected]>
Date: 2017-04-20T19:20:40Z
PROTON-1400: Implement container level event_loops
commit 95a7ded6410e599f6327adedbf5386b5d8b4fca1
Author: Andrew Stitcher <[email protected]>
Date: 2017-04-27T17:05:14Z
PROTON-1400: [C++ binding] Use pn_proactor_now() to implement
timestamp::now()
commit 2da87d20cff09b00503dd70341fde73b5ae36bd5
Author: Andrew Stitcher <[email protected]>
Date: 2017-05-15T05:27:54Z
PROTON-1481: [C++ binding] Rename event_loop API to work_queue
commit efd5ec09f1a7cfc311fe8f612d48160ce16d7e2b
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 e252354b82f3a4273275a15da614abda3859a2c9
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]