Thanks Alan.

On Thu, Mar 24, 2016 at 11:02 PM, Alan Conway <acon...@redhat.com> wrote:

> On Fri, 2016-03-18 at 16:01 +0100, Mark Banner wrote:
> > I have gone through the documentation and code and have the following
> > understanding of container vs connection_engine:
> >
> > Container is an adapter for pn_reactor. The proton reactor manages
> > network
> > IO and sends events to a registered handler so container registers an
> > proxy
> > handler which will pass events to the user's implementation.
> >
> > Connection_engine passes IO to a pn_transport (through io_read and
> > io_write) and receives events through a pn_collector. Dispatching is
> > then
> > done directly to the user handler.
> >
> > From my understanding connection_engine looks more efficient than the
> > container for the same functionality (if socket_engine is used). It
> > also
> > offers more control since a custom implementation can modify the
> > event loop
> > and mock IO for testing. This makes it a better fit for me compared
> > to the
> > proposed "application event injection" which is proposed in the
> > thread on
> > qpid-users.
> > Am I missing something which is managed by the reactor or the
> > container?
>
> That's an excellent summary.
>
> >
> > Also, the release notes for proton 12 say that the API for container
> > is
> > stable but that connection_engine is still unstable. Will this
> > interface
> > still have the same role in future versions (ie converting IO to
> > proton
> > events) ?
>
> Yes. The connection_engine separates just the AMQP features of proton
> without entangling them in any assumptions about IO or threads. It will
> stay as an integration point for users that have special IO/threading
> needs.
>
> The plan is then to layer more convenience on top of the engine for common
> threading and IO use-cases, so users that are happy with a generic
> implementation don't have to start from scratch.
>
> Injecting functions will be a part of the ease-of-use layer for the
> connection engine, but injecting into a specific connection context rather
> than a container of many connections.
>
> These are not untested ideas, they follow from patterns in the qpidd C++
> broker, the qpid dispatch engine and the proton Go binding.
>
> Cheers,
> Alan.
>
>
>
>

Reply via email to