qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PROTON-1344) Provide C "proactor" API for multi-threaded proton applications
Date Fri, 03 Feb 2017 20:45:51 GMT

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

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

Commit 66d8f0e9c493419f27ff63f47dd7a707efc28e80 in qpid-proton's branch refs/heads/master
from [~astitcher]
[ https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;h=66d8f0e ]

PROTON-1344: Added missed PN_LISTENER_ACCEPT event from pn_event_type_name()


> 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.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message