Thanks for the reply!  To your first question -- I haven't created a
special test case for this, but it is in my code here:

https://github.com/pofallon/node-qpid/blob/master/src/messenger.cc#L168-L177

(I'm in the early stages of writing node.js bindings to proton-c's
Messenger API)

This code calls put, start, send and stop for each message (and will send
the message).  If I comment out the "stop" on line 177 the messages are not
sent.  (To see how this is invoked via node.js, see:
https://github.com/pofallon/node-qpid/blob/master/test/test.js#L18)

To your second question, my end goal is "yes" to share it between threads.
 Today my "Messenger" javascript object uses two pn_messenger instances --
one to send and another to receive.  However, I'd like to collapse that
into one instance for both sending and receiving (across multiple threads).

Thanks again!

- Paul

On Mon, Jan 28, 2013 at 6:32 AM, Rafael Schloming <r...@alum.mit.edu> wrote:

> On Fri, Jan 25, 2013 at 9:53 PM, Paul O'Fallon <p...@ofallonfamily.com
> >wrote:
>
> > Hello!  I'm new to proton (and AMQP), and have some questions about using
> > the Messenger API in the C library to send messages to Windows Azure.
>  I've
> > noticed that it takes three steps before a message is actually sent (i.e.
> > before it is fetched when running the 'recv' command line example).  I
> call
> > pn_messenger_put(), pn_messenger_send(), and then pn_messenger_stop().
>  My
> > question is about the third call -- to pn_messenger_stop().  If I omit
> that
> > and just call the first two, the message is not actually sent.
> >
> > My concern is whether calling stop() after every send will be a problem
> in
> > the case where I want to use the same instance of messenger to call
> recv()
> > in a separate thread.  The API docs state "A messenger cannot send or
> recv
> > messages when it is stopped.".
> >
> > So, two questions:
> >
> > (1)  Is the need to call stop() after each send() expected behavior?
> >
>
> I wouldn't expect that you need to call stop() after each send(), however
> you should call it before exiting the program. Do you have a code fragment
> you could post that reproduces the behaviour you're seeing? It sounds like
> it could be a bug, if it is what I suspect you could try working around it
> by setting a positive outgoing window.
>
>
> > (2)  Will repeatedly calling stop() affect the recv() running in the
> > separate thread?
> >
>
> Are you sharing a single messenger between the two threads?
>
> --Rafael
>

Reply via email to