I wonder if anybody out there in Proton Land has an
  opinion about this little piece of Proton doc.

  This is an example of the documentation I'm creating as
  I use the Proton interface to 

  I'd be interested to hear about

     1. correctness
     2. clarity
     3. focus
     4. usefulness
     5. anything else that strikes you


I don't know what to call this -- a mini-tutorial? -- a 'topic'? -- 
but in any case, I expect I will have 5 or 6 pieces like this for
the Proton Messenger doc when I'm done, so I wanted to See What You Think.
Yes, *you* !


--------- everything below this point is the doc ---------





Controlling Message Flow with Credit
=====================================================


To control the flow of messages into your Proton application,
use the second argument to

        pn_messenger_recv ( messenger, credit );

If you set credit to a positive value, it will limit the number
of messages that pn_messenger_recv enqueues for you on that
call.

The number you provide is a maximum.  The call to pn_messenger_recv
may also enqueue fewer messages, or none.  You can learn how many
were received with:

        pn_messenger_incoming ( messenger );

You can then dequeue each message, one at a time, into your
application with successive calls to

        pn_messenger_get ( messenger );
        

        

A typical pattern
---------------------------

        int i, incoming;

        pn_messenger_recv ( messenger, credit );
        incoming = pn_messenger_incoming ( messenger );
        for ( i = 0; i < incoming; ++ i )
        {
          pn_messenger_get ( messenger, message );
          consume_message ( message );
        }


Infinite Credit
--------------------------

You can also grant 'infinite' credit by using a negative
value as the second arg to pn_messenger_recv().  This will
have the effect of granting 10 units of credit to every link
on that call to pn_messenger_recv().

A single messenger, listening on a single port, may have
many incoming links.




Credit does not drain
--------------------------

Once granted by a call to pn_messenger_recv(), unusued credit
on a link does not go away when control returns from
pn_messenger_recv().  It remains at the link, and successive
calls can increase it.




Reply via email to