[ https://issues.apache.org/jira/browse/PROTON-1344?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15690563#comment-15690563 ]
ASF subversion and git services commented on PROTON-1344: --------------------------------------------------------- Commit 6af49b819edb0d7d3aaa9968fc5ee1651f77f492 in qpid-proton's branch refs/heads/master from [~aconway] [ https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;h=6af49b8 ] PROTON-1344: removed unused pn_listener_free, update proactor doc. > 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: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org