I'm new to proton-c, and I'm having a bit of trouble with using a messenger that has been set to non-blocking.
The following code (adjusted slightly to remove password info) attempts to send 10 messages non-blocking. It appears that if I want to PUSH all the messages out on the wire I have to make an indeterminate number of pn_messenger_send calls. That is, the loop at the bottom that tests the status via a tracker will never complete unless I keep invoking pn_messenger_send after sweeping through the array of trackers. As this seems odd, my only thought is that I'm doing it wrong. I've also included a trace done with PN_TRACE_FRM=1. Any thoughts would be appreciated. Thank you, Tony /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ #include "proton/message.h" #include "proton/messenger.h" #include "pncompat/misc_funcs.inc" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <Windows.h> #define check(messenger) \ { \ if(pn_messenger_errno(messenger)) \ { \ die(__FILE__, __LINE__, pn_error_text(pn_messenger_error(messenger))); \ } \ } \ void die(const char *file, int line, const char *message) { fprintf(stderr, "%s:%i: %s\n", file, line, message); exit(1); } void usage(void) { printf("Usage: send [-a addr] [message]\n"); printf("-a \tThe target address [amqp[s]://domain[/name]]\n"); printf("message\tA text string to send.\n"); exit(0); } const char* message_tracker_status(pn_status_t stat) { switch (stat) { case PN_STATUS_UNKNOWN: return "PN_STATUS_UNKNOWN"; case PN_STATUS_PENDING: return "PN_STATUS_PENDING"; case PN_STATUS_ACCEPTED: return "PN_STATUS_ACCEPTED"; case PN_STATUS_REJECTED: return "PN_STATUS_REJECTED"; case PN_STATUS_RELEASED: return "PN_STATUS_RELEASED"; case PN_STATUS_MODIFIED: return "PN_STATUS_MODIFIED"; case PN_STATUS_ABORTED: return "PN_STATUS_ABORTED"; case PN_STATUS_SETTLED: return "PN_STATUS_SETTLED"; default: break; } return "BIZZARO STATUS"; } #define ACTUAL_MESSAGES_TO_SEND (10) #define OUTGOING_WINDOW_SIZE (10) int main(int argc, char** argv) { // Setup connection char address[] = "amqps://RootManageSharedAccessKey:xxxxxxxxxx=@toercola-ns.servicebus.windows.net/toercola"; char messageBodies[ACTUAL_MESSAGES_TO_SEND][50]; pn_message_t * message[ACTUAL_MESSAGES_TO_SEND]; pn_messenger_t * messenger; pn_tracker_t tracker[ACTUAL_MESSAGES_TO_SEND]; pn_data_t * body; int result; size_t i; // Build up proton messages for (i = 0; i < ACTUAL_MESSAGES_TO_SEND; i++) { message[i] = pn_message(); if (message[i] == NULL) { printf("Could not allocate message: %d\r\n", i); } else { if ((result = pn_message_set_address(message[i], address)) != 0) { printf("Could not set message address: %d\r\n", result); } else { body = pn_message_body(message[i]); sprintf(&messageBodies[i][0], "Glorious exhausted warriors %d!!", i); pn_data_put_string(body, pn_bytes(strlen(&messageBodies[i][0]), &messageBodies[i][0])); } } } // Create proton messenger and setup: Non-Blocking, Outgoing window size messenger = pn_messenger("NOT BLOCKING MESSENGER"); if ((result = pn_messenger_set_blocking(messenger, false)) != 0) { printf("pn_messenger_set_blocking result: %d\r\n", result); check(messenger); } if ((result = pn_messenger_set_outgoing_window(messenger, OUTGOING_WINDOW_SIZE)) != 0) { printf("pn_messenger_set_outgoing_window result: %d\r\n", result); check(messenger); } // Load up messages into messenger queue for (i = 0; i < ACTUAL_MESSAGES_TO_SEND; i++) { if ((result = pn_messenger_put(messenger, message[i])) != 0) { printf("Couldn't do the put for message %d, result: %d\r\n", i, result); } else { check(messenger); //Create a tracker for each message tracker[i] = pn_messenger_outgoing_tracker(messenger); } } int j = 0; // Monitor status of messages via trackers while (1) { size_t outstandingSends = ACTUAL_MESSAGES_TO_SEND; for (i = 0; i < ACTUAL_MESSAGES_TO_SEND; i++) { pn_state_t currentMessageStatus = pn_messenger_status(messenger, tracker[i]); printf("%d pass - The actual status of message %d is %s\r\n", j, i, message_tracker_status(currentMessageStatus)); if (currentMessageStatus != PN_STATUS_PENDING) { outstandingSends--; } } j++; if (outstandingSends) { pn_messenger_send(messenger,outstandingSends); Sleep(100); } else { for (i = 0; i < ACTUAL_MESSAGES_TO_SEND; i++) { // Remove trackers for messages that are no longer pending result = pn_messenger_settle(messenger, tracker[i],0); if (result != 0) { printf("error on settling tracker %d\r\n",i); } } break; } } // Cleanup code: // Stop messenger if (pn_messenger_stop(messenger) == PN_INPROGRESS) { j = 0; while (pn_messenger_stopped(messenger) == false) { printf("not stopped messenger after: %d\r\n", j); j++; Sleep(100); // For some "bizzar" reason if the messenger is INPROGRESS, need to keep trying to stop it (hitting it over the head with a hammer:) pn_messenger_stop(messenger); } } // Free messenger pn_messenger_free(messenger); for (i = 0; i < ACTUAL_MESSAGES_TO_SEND; i++) { // Free messages pn_message_free(message[i]); } printf("hit enter to exit:"); getchar(); return 0; } The trace follows: 0 pass - The actual status of message 0 is PN_STATUS_PENDING 0 pass - The actual status of message 1 is PN_STATUS_PENDING 0 pass - The actual status of message 2 is PN_STATUS_PENDING 0 pass - The actual status of message 3 is PN_STATUS_PENDING 0 pass - The actual status of message 4 is PN_STATUS_PENDING 0 pass - The actual status of message 5 is PN_STATUS_PENDING 0 pass - The actual status of message 6 is PN_STATUS_PENDING 0 pass - The actual status of message 7 is PN_STATUS_PENDING 0 pass - The actual status of message 8 is PN_STATUS_PENDING 0 pass - The actual status of message 9 is PN_STATUS_PENDING 1 pass - The actual status of message 0 is PN_STATUS_PENDING 1 pass - The actual status of message 1 is PN_STATUS_PENDING 1 pass - The actual status of message 2 is PN_STATUS_PENDING 1 pass - The actual status of message 3 is PN_STATUS_PENDING 1 pass - The actual status of message 4 is PN_STATUS_PENDING 1 pass - The actual status of message 5 is PN_STATUS_PENDING 1 pass - The actual status of message 6 is PN_STATUS_PENDING 1 pass - The actual status of message 7 is PN_STATUS_PENDING 1 pass - The actual status of message 8 is PN_STATUS_PENDING 1 pass - The actual status of message 9 is PN_STATUS_PENDING 2 pass - The actual status of message 0 is PN_STATUS_PENDING 2 pass - The actual status of message 1 is PN_STATUS_PENDING 2 pass - The actual status of message 2 is PN_STATUS_PENDING 2 pass - The actual status of message 3 is PN_STATUS_PENDING 2 pass - The actual status of message 4 is PN_STATUS_PENDING 2 pass - The actual status of message 5 is PN_STATUS_PENDING 2 pass - The actual status of message 6 is PN_STATUS_PENDING 2 pass - The actual status of message 7 is PN_STATUS_PENDING 2 pass - The actual status of message 8 is PN_STATUS_PENDING 2 pass - The actual status of message 9 is PN_STATUS_PENDING 3 pass - The actual status of message 0 is PN_STATUS_PENDING 3 pass - The actual status of message 1 is PN_STATUS_PENDING 3 pass - The actual status of message 2 is PN_STATUS_PENDING 3 pass - The actual status of message 3 is PN_STATUS_PENDING 3 pass - The actual status of message 4 is PN_STATUS_PENDING 3 pass - The actual status of message 5 is PN_STATUS_PENDING 3 pass - The actual status of message 6 is PN_STATUS_PENDING 3 pass - The actual status of message 7 is PN_STATUS_PENDING 3 pass - The actual status of message 8 is PN_STATUS_PENDING 3 pass - The actual status of message 9 is PN_STATUS_PENDING [00929FA0]: -> SASL [00929FA0]:0 -> @sasl-init(65) [mechanism=:PLAIN, initial-response=b"\x00RootManageSharedAccessKey\x0xxxxxxxxxxxxxx="] 4 pass - The actual status of message 0 is PN_STATUS_PENDING 4 pass - The actual status of message 1 is PN_STATUS_PENDING 4 pass - The actual status of message 2 is PN_STATUS_PENDING 4 pass - The actual status of message 3 is PN_STATUS_PENDING 4 pass - The actual status of message 4 is PN_STATUS_PENDING 4 pass - The actual status of message 5 is PN_STATUS_PENDING 4 pass - The actual status of message 6 is PN_STATUS_PENDING 4 pass - The actual status of message 7 is PN_STATUS_PENDING 4 pass - The actual status of message 8 is PN_STATUS_PENDING 4 pass - The actual status of message 9 is PN_STATUS_PENDING [00929FA0]: <- SASL [00929FA0]:0 <- @sasl-mechanisms(64) [sasl-server-mechanisms=@PN_SYMBOL[:PLAIN, :EXTERNAL]] 5 pass - The actual status of message 0 is PN_STATUS_PENDING 5 pass - The actual status of message 1 is PN_STATUS_PENDING 5 pass - The actual status of message 2 is PN_STATUS_PENDING 5 pass - The actual status of message 3 is PN_STATUS_PENDING 5 pass - The actual status of message 4 is PN_STATUS_PENDING 5 pass - The actual status of message 5 is PN_STATUS_PENDING 5 pass - The actual status of message 6 is PN_STATUS_PENDING 5 pass - The actual status of message 7 is PN_STATUS_PENDING 5 pass - The actual status of message 8 is PN_STATUS_PENDING 5 pass - The actual status of message 9 is PN_STATUS_PENDING [00929FA0]:0 <- @sasl-outcome(68) [code=0, additional-data=b"Welcome!"] [00929FA0]: -> AMQP [00929FA0]:0 -> @open(16) [container-id="NOT BLOCKING MESSENGER", hostname="toercola-ns.servicebus.windows.net"] [00929FA0]:0 -> @begin(17) [next-outgoing-id=0, incoming-window=2147483647, outgoing-window=10] [00929FA0]:0 -> @attach(18) [name="sender-xxx", handle=0, role=false, snd-settle-mode=1, rcv-settle-mode=0, source=@source(40) [address="toercola", durable=0, timeout=0, dynamic=fa lse], target=@target(41) [address="toercola", durable=0, timeout=0, dynamic=false], initial-delivery-count=0] 6 pass - The actual status of message 0 is PN_STATUS_PENDING 6 pass - The actual status of message 1 is PN_STATUS_PENDING 6 pass - The actual status of message 2 is PN_STATUS_PENDING 6 pass - The actual status of message 3 is PN_STATUS_PENDING 6 pass - The actual status of message 4 is PN_STATUS_PENDING 6 pass - The actual status of message 5 is PN_STATUS_PENDING 6 pass - The actual status of message 6 is PN_STATUS_PENDING 6 pass - The actual status of message 7 is PN_STATUS_PENDING 6 pass - The actual status of message 8 is PN_STATUS_PENDING 6 pass - The actual status of message 9 is PN_STATUS_PENDING [00929FA0]: <- AMQP [00929FA0]:0 <- @open(16) [container-id="5c816d4ad3a342fbb1fe27f80b7eeb10_G39", max-frame-size=65536, channel-max=4999, idle-time-out=240000] [00929FA0]:0 <- @begin(17) [remote-channel=0, next-outgoing-id=1, incoming-window=10, outgoing-window=5000, handle-max=255] [00929FA0]:0 <- @attach(18) [name="sender-xxx", handle=0, role=true, snd-settle-mode=1, rcv-settle-mode=0, source=@source(40) [address="toercola", durable=0, timeout=0, dynamic=fal se], target=@target(41) [address="toercola", durable=0, timeout=0, dynamic=false], max-message-size=262144, properties={:"com.microsoft:tracking-id"="5c816d4ad3a342fbb1fe27f80b7eeb 10_G39"}] [00929FA0]:0 <- @flow(19) [next-incoming-id=0, incoming-window=10, next-outgoing-id=1, outgoing-window=5000, handle=0, delivery-count=0, link-credit=300, available=0, echo=false] [00929FA0]:0 -> @transfer(20) [handle=0, delivery-id=0, delivery-tag=b"\x00\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (149) "\x00Sp\xd0\x00\x00\x00 \x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00V\x00\x00\x00\x0d@@\xa13amqps://toercola-ns.servicebus.windows.net/toercola@@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\ x00\x00\x00\x00\x00\x00\x00@R\x00@\x00Sw\xa1\x1fGlorious exhausted warriors 0!!" [00929FA0]:0 -> @transfer(20) [handle=0, delivery-id=1, delivery-tag=b"\x01\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (149) "\x00Sp\xd0\x00\x00\x00 \x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00V\x00\x00\x00\x0d@@\xa13amqps://toercola-ns.servicebus.windows.net/toercola@@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\ x00\x00\x00\x00\x00\x00\x00@R\x00@\x00Sw\xa1\x1fGlorious exhausted warriors 1!!" [00929FA0]:0 -> @transfer(20) [handle=0, delivery-id=2, delivery-tag=b"\x02\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (149) "\x00Sp\xd0\x00\x00\x00 \x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00V\x00\x00\x00\x0d@@\xa13amqps://toercola-ns.servicebus.windows.net/toercola@@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\ x00\x00\x00\x00\x00\x00\x00@R\x00@\x00Sw\xa1\x1fGlorious exhausted warriors 2!!" [00929FA0]:0 -> @transfer(20) [handle=0, delivery-id=3, delivery-tag=b"\x03\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (149) "\x00Sp\xd0\x00\x00\x00 \x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00V\x00\x00\x00\x0d@@\xa13amqps://toercola-ns.servicebus.windows.net/toercola@@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\ x00\x00\x00\x00\x00\x00\x00@R\x00@\x00Sw\xa1\x1fGlorious exhausted warriors 3!!" [00929FA0]:0 -> @transfer(20) [handle=0, delivery-id=4, delivery-tag=b"\x04\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (149) "\x00Sp\xd0\x00\x00\x00 \x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00V\x00\x00\x00\x0d@@\xa13amqps://toercola-ns.servicebus.windows.net/toercola@@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\ x00\x00\x00\x00\x00\x00\x00@R\x00@\x00Sw\xa1\x1fGlorious exhausted warriors 4!!" [00929FA0]:0 -> @transfer(20) [handle=0, delivery-id=5, delivery-tag=b"\x05\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (149) "\x00Sp\xd0\x00\x00\x00 \x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00V\x00\x00\x00\x0d@@\xa13amqps://toercola-ns.servicebus.windows.net/toercola@@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\ x00\x00\x00\x00\x00\x00\x00@R\x00@\x00Sw\xa1\x1fGlorious exhausted warriors 5!!" [00929FA0]:0 -> @transfer(20) [handle=0, delivery-id=6, delivery-tag=b"\x06\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (149) "\x00Sp\xd0\x00\x00\x00 \x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00V\x00\x00\x00\x0d@@\xa13amqps://toercola-ns.servicebus.windows.net/toercola@@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\ x00\x00\x00\x00\x00\x00\x00@R\x00@\x00Sw\xa1\x1fGlorious exhausted warriors 6!!" [00929FA0]:0 -> @transfer(20) [handle=0, delivery-id=7, delivery-tag=b"\x07\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (149) "\x00Sp\xd0\x00\x00\x00 \x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00V\x00\x00\x00\x0d@@\xa13amqps://toercola-ns.servicebus.windows.net/toercola@@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\ x00\x00\x00\x00\x00\x00\x00@R\x00@\x00Sw\xa1\x1fGlorious exhausted warriors 7!!" [00929FA0]:0 -> @transfer(20) [handle=0, delivery-id=8, delivery-tag=b"\x08\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (149) "\x00Sp\xd0\x00\x00\x00 \x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00V\x00\x00\x00\x0d@@\xa13amqps://toercola-ns.servicebus.windows.net/toercola@@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\ x00\x00\x00\x00\x00\x00\x00@R\x00@\x00Sw\xa1\x1fGlorious exhausted warriors 8!!" [00929FA0]:0 -> @transfer(20) [handle=0, delivery-id=9, delivery-tag=b"\x09\x00\x00\x00\x00\x00\x00\x00", message-format=0, settled=false, more=false] (149) "\x00Sp\xd0\x00\x00\x00 \x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00V\x00\x00\x00\x0d@@\xa13amqps://toercola-ns.servicebus.windows.net/toercola@@@@@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\ x00\x00\x00\x00\x00\x00\x00@R\x00@\x00Sw\xa1\x1fGlorious exhausted warriors 9!!" 7 pass - The actual status of message 0 is PN_STATUS_PENDING 7 pass - The actual status of message 1 is PN_STATUS_PENDING 7 pass - The actual status of message 2 is PN_STATUS_PENDING 7 pass - The actual status of message 3 is PN_STATUS_PENDING 7 pass - The actual status of message 4 is PN_STATUS_PENDING 7 pass - The actual status of message 5 is PN_STATUS_PENDING 7 pass - The actual status of message 6 is PN_STATUS_PENDING 7 pass - The actual status of message 7 is PN_STATUS_PENDING 7 pass - The actual status of message 8 is PN_STATUS_PENDING 7 pass - The actual status of message 9 is PN_STATUS_PENDING 8 pass - The actual status of message 0 is PN_STATUS_PENDING 8 pass - The actual status of message 1 is PN_STATUS_PENDING 8 pass - The actual status of message 2 is PN_STATUS_PENDING 8 pass - The actual status of message 3 is PN_STATUS_PENDING 8 pass - The actual status of message 4 is PN_STATUS_PENDING 8 pass - The actual status of message 5 is PN_STATUS_PENDING 8 pass - The actual status of message 6 is PN_STATUS_PENDING 8 pass - The actual status of message 7 is PN_STATUS_PENDING 8 pass - The actual status of message 8 is PN_STATUS_PENDING 8 pass - The actual status of message 9 is PN_STATUS_PENDING [00929FA0]:0 <- @disposition(21) [role=true, first=0, settled=true, state=@accepted(36) []] [00929FA0]:0 <- @disposition(21) [role=true, first=1, settled=true, state=@accepted(36) []] 9 pass - The actual status of message 0 is PN_STATUS_ACCEPTED 9 pass - The actual status of message 1 is PN_STATUS_ACCEPTED 9 pass - The actual status of message 2 is PN_STATUS_PENDING 9 pass - The actual status of message 3 is PN_STATUS_PENDING 9 pass - The actual status of message 4 is PN_STATUS_PENDING 9 pass - The actual status of message 5 is PN_STATUS_PENDING 9 pass - The actual status of message 6 is PN_STATUS_PENDING 9 pass - The actual status of message 7 is PN_STATUS_PENDING 9 pass - The actual status of message 8 is PN_STATUS_PENDING 9 pass - The actual status of message 9 is PN_STATUS_PENDING [00929FA0]:0 <- @disposition(21) [role=true, first=4, settled=true, state=@accepted(36) []] [00929FA0]:0 <- @disposition(21) [role=true, first=2, settled=true, state=@accepted(36) []] [00929FA0]:0 <- @disposition(21) [role=true, first=3, settled=true, state=@accepted(36) []] 10 pass - The actual status of message 0 is PN_STATUS_ACCEPTED 10 pass - The actual status of message 1 is PN_STATUS_ACCEPTED 10 pass - The actual status of message 2 is PN_STATUS_ACCEPTED 10 pass - The actual status of message 3 is PN_STATUS_ACCEPTED 10 pass - The actual status of message 4 is PN_STATUS_ACCEPTED 10 pass - The actual status of message 5 is PN_STATUS_PENDING 10 pass - The actual status of message 6 is PN_STATUS_PENDING 10 pass - The actual status of message 7 is PN_STATUS_PENDING 10 pass - The actual status of message 8 is PN_STATUS_PENDING 10 pass - The actual status of message 9 is PN_STATUS_PENDING [00929FA0]:0 <- @disposition(21) [role=true, first=6, settled=true, state=@accepted(36) []] [00929FA0]:0 <- @flow(19) [next-incoming-id=10, incoming-window=6, next-outgoing-id=1, outgoing-window=5000] [00929FA0]:0 <- @disposition(21) [role=true, first=5, settled=true, state=@accepted(36) []] [00929FA0]:0 <- @disposition(21) [role=true, first=7, settled=true, state=@accepted(36) []] 11 pass - The actual status of message 0 is PN_STATUS_ACCEPTED 11 pass - The actual status of message 1 is PN_STATUS_ACCEPTED 11 pass - The actual status of message 2 is PN_STATUS_ACCEPTED 11 pass - The actual status of message 3 is PN_STATUS_ACCEPTED 11 pass - The actual status of message 4 is PN_STATUS_ACCEPTED 11 pass - The actual status of message 5 is PN_STATUS_ACCEPTED 11 pass - The actual status of message 6 is PN_STATUS_ACCEPTED 11 pass - The actual status of message 7 is PN_STATUS_ACCEPTED 11 pass - The actual status of message 8 is PN_STATUS_PENDING 11 pass - The actual status of message 9 is PN_STATUS_PENDING [00929FA0]:0 <- @disposition(21) [role=true, first=9, settled=true, state=@accepted(36) []] [00929FA0]:0 <- @disposition(21) [role=true, first=8, settled=true, state=@accepted(36) []] 12 pass - The actual status of message 0 is PN_STATUS_ACCEPTED 12 pass - The actual status of message 1 is PN_STATUS_ACCEPTED 12 pass - The actual status of message 2 is PN_STATUS_ACCEPTED 12 pass - The actual status of message 3 is PN_STATUS_ACCEPTED 12 pass - The actual status of message 4 is PN_STATUS_ACCEPTED 12 pass - The actual status of message 5 is PN_STATUS_ACCEPTED 12 pass - The actual status of message 6 is PN_STATUS_ACCEPTED 12 pass - The actual status of message 7 is PN_STATUS_ACCEPTED 12 pass - The actual status of message 8 is PN_STATUS_ACCEPTED 12 pass - The actual status of message 9 is PN_STATUS_ACCEPTED [00929FA0]:0 -> @detach(22) [handle=0, closed=true] [00929FA0]:0 -> @close(24) [] not stopped messenger after: 0 [00929FA0]:0 <- @detach(22) [handle=0, closed=true] [00929FA0]:0 <- @close(24) [] [00929FA0]: <- EOS [00929FA0]: -> EOS [00929FA0]: -> EOS [00929FA0]: -> EOS [00929FA0]: -> EOS hit enter to exit: