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]

Reply via email to