[ 
https://issues.apache.org/jira/browse/PROTON-1344?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15664189#comment-15664189
 ] 

ASF subversion and git services commented on PROTON-1344:
---------------------------------------------------------

Commit 7bbd9f3046ba3c8c3e855836b105279ed0df641f in qpid-proton's branch 
refs/heads/aconway-c-reactor from [~aconway]
[ https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;h=7bbd9f3 ]

PROTON-1344: Fix proactor listen and broker examples for interop

Added AI_PASSIVE to listener getaddrinfo() call, more correct and portable.

Example broker default host is "::" which listens for IPv6 and IPv4 on same port
on systems that allow that (IPV6ONLY defaults off)

Note that IPv4-only systems will need to say `libuv_broker -a localhost` but
since most modern systems support IPv6, that seems better than having clients
simply fail to connect depending on whether they use localhost or ::1.


> Provide C "proactor" API for multi-threaded proton applications
> ---------------------------------------------------------------
>
>                 Key: PROTON-1344
>                 URL: https://issues.apache.org/jira/browse/PROTON-1344
>             Project: Qpid Proton
>          Issue Type: Improvement
>          Components: proton-c
>            Reporter: Alan Conway
>            Assignee: Alan Conway
>             Fix For: 0.16.0
>
>
> This work will pull together work that has been going on with the 
> experimental pn_connection_engine_t and work on a new C multi-threaded libuv 
> C driver. This work has matured to the point of putting together a coherent 
> and complete pn_proactor API to (eventually) replace the pn_reactor.
> The big differences:
> - proactive not reactive: e.g. void proactor_connect() does not return a 
> bound connection, it starts an asynchronous connection process. All results 
> are reported asynchronously as events, not as synchrouns return values.
> - application controls threading: application thread(s) call wait() to block 
> for events. There are no callbacks to application code from unknown threading 
> contexts.
> - enforces threading model to ensure that events from one connection engine 
> are only handled in one thread at a time. The application does not need locks 
> to or tables to manage this.
> - provides simple inter-thread singalling - any thread can "wake" a 
> connection, causing the proactor to return an event in a thread-safe way for  
> application-triggered work.
> The big similarities: 
> Same proton protocol engine API is unchanged - the pn_connection_engine will 
> dissappear as a separate entity but it's functions will be folded back into 
> pn_connection and pn_transport.
> Same event model: existing code that processes events is unchanged, instead 
> of registering `void my_handler(pn_event_t *)` with the reactor, the 
> application calls my_handler(pn_driver_wait()) in its own threads. There will 
>  be a handful of new proactor-related events.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to