Ultra Messaging Examples

The files in this directory are the source for the performance measurement binaries. If you haven't done so already, please start with the example programs found in the Quick Start Guide.

Most users are not interested in compiling these sources in their current form, but instead use them for "spare parts", extracting fragments of code as appropriate. For users who wish to build the tools, and especially for users who may want to modify the tools, we recommend creating a new directory and copying the doc/example directory contents into that new directory. The make files are especially easy to use if you place the new directory under the installed "doc" directory, at the same level as the "example" directory.

Windows users can then "cd" to that directory, execute their "vsvars32.bat" file (to define compiler environment), and then enter:
    nmake -f Makefile.windows

Unix users should first set their PATH appropriately, and then enter:
    make -f Makefile.unix TARGET_PLATFORM=<target>
where <target> is one of:
    AIX-5-powerpc64
    Darwin-9.8.0-x86_64
    HP-UX-B.11.31-LP64-ia64
    Linux-glibc-2.3-x86_64
    Linux-glibc-2.3-i686
    Linux-glibc-2.5-x86_64
    Linux-glibc-2.3-ia64
    SunOS-5.10-amd64
    SunOS-5.10-i386
    SunOS-5.10-sparc
    SunOS-5.10-sparcv9
For example:
    make -f Makefile.unix TARGET_PLATFORM=Linux-glibc-2.3-i686

Support Files

getopt.c - utility functions to parse command-line options (for Windows).

verifymsg.c - utility function to help some programs create verifiable messages.

monmodopts.h - common include file used by many of the example programs. It includes option information for monitoring functionality.

replgetopt.h - common include file used by many of the example programs. It includes definitions for alternate getopt functions.

umeblocksrc.h - include file used by umeblocksrc.c and umeblock.c.

umeblocksrc.c - generic code used by umeblock.c.

verifymsg.h - common include file used by many of the example programs. It includes definitions for "verifymsg.c" (which needs to be linked into many programs).

Makefile.unix - see contents for instructions of setting up environment variables.

Makefile.windows - see contents for instructions of setting up make variables.

Example Programs

lbmhfrcv.c -  application that receives messages from a given topic
  (single receiver).
Usage: [-AEhsvV] [-c filename] [-r msgs] [-U losslev] topic
       -A = display messages as ASCII text
       -c filename = Use LBM configuration file filename.
                     Multiple config files are allowed.
                     Example:  '-c file1.cfg -c file2.cfg'
       -E = exit after source ends
       -h = help
       -r msgs = delete receiver after msgs messages
       -s = print statistics along with bandwidth
       -S = Exit after source ends, print throughput summary
       -v = be verbose about incoming messages (-v -v = be even more verbose)
       -V = verify message contents

lbmhfrcvq.c -  application that receives messages from a given topic
  (single receiver).
Usage: [-EhsvV] [-c filename] [-r msgs] [-U losslev] topic
       -c filename = Use LBM configuration file filename.
                     Multiple config files are allowed.
                     Example:  '-c file1.cfg -c file2.cfg'
       -E = exit after source ends
       -h = help
       -r msgs = delete receiver after msgs messages
       -s = print statistics along with bandwidth
       -S = Exit after source ends, print throughput summary
       -U losslev = exit after losslev % unrecoverable loss
       -v = be verbose about incoming messages (-v -v = be even more verbose)
       -V = verify message contents

lbmhfsrc.c -  application that sends to a given topic (single
  source) as fast as it can.
Usage: lbmhfsrc [options] topic
Available options:
  -c filename = Use LBM configuration file filename.
                Multiple config files are allowed.
                Example:  '-c file1.cfg -c file2.cfg'
  -d delay = delay sending for delay seconds after source creation
  -h = help
  -i init = start at message init instead of 0
  -l len = send messages of len bytes
  -L linger = linger for linger seconds before closing context
  -M msgs = send msgs number of messages
  -N NUM = send on channel NUM
  -P msec = pause after each send msec milliseconds
  -R [UM]DATA/RETR = Set transport type to LBT-R[UM], set data rate limit to
                     DATA bits per second, and set retransmit rate limit to
                     RETR bits per second.  For both limits, the optional
                     k, m, and g suffixes may be used.  For example,
                     '-R 1m/500k' is the same as '-R 1000000/500000'
  -s sec = print stats every sec seconds
  -t filename = use filename contents as a recording of message sequence numbers
  -V = construct verifiable messages
  -x bits = Use 32 or 64 bits for hot-failover sequence numbers

lbmhfxrcv.c -  application that receives messages from a given topic
  (single receiver).
Usage: lbmrcv [-aACdEfhqsSvV] [-I interface] [-c filename] [-r msgs] [-U losslev] topic
Available options:
  -a, --arrival-order  deliver messages in the order that they arrive.
  -A, --ascii          display messages as ASCII text (-A -A = newlines after each msg)
  -c, --config=FILE    Use LBM configuration file FILE.
                       Multiple config files are allowed.
                       Example:  '-c file1.cfg -c file2.cfg'
  -C, --context-stats  fetch context rather than receiver stats
  -d, --deliver-dups Enable duplicate delivery
  -E, --exit           exit when source stops sending
  -h, --help           display this help and exit
  -I, --iface=CIDR create a context on the interface specified by CIDR
Multiple interfaces are allowed.
Example: '-I 10.29.1.0/24 -I 10.29.2.0/24'
  -q, --eventq         use an LBM event queue
  -r, --msgs=NUM       exit after NUM messages
  -O, --orderchecks     Enable message order checking
  -s, --stats=NUM      print LBM statistics every NUM seconds
  --max-sources=NUM    allow up to NUM sources (for statistics gathering purposes)
  -S, --stop           exit when source stops sending, and print throughput summary
  -U, --losslev=NUM    exit after NUM% unrecoverable loss
  -v, --verbose        be verbose about incoming messages (-v -v = be even more verbose)
  -V, --verify         verify message contents

lbmhtrcv.c -  application that receives from a collection of HyperTopic patterns.
Usage: %s [options]  Available options:
  -d msec               delete hypertopic receiver every msec milliseconds
  -h, --help            display this help and exit
  -p string             set hypertopic prefix to string
  -q                    use event queue
  -s, --statistics      print statistics along with bandwidth
  -v, --verbose         be verbose about incoming messages
  -x                    exit after all receivers deleted

lbmimsg.c -  application that sends immediate messages as fast as it can
  to a given topic (single source).
Usage: lbmimsg [options] -o OR topic
Available options:
  -c filename = Use LBM configuration file filename.
                Multiple config files are allowed.
                Example:  '-c file1.cfg -c file2.cfg'
  -d delay = delay sending for delay seconds after source creation
  -h = help
  -l len = send messages of len bytes
  -L linger = linger for linger seconds before closing context
  -M msgs = send msgs number of messages
  -n num = Append a number between 1 and num to topic
  -o = send topic-less immediate messages
  -P msec = pause after each send msec milliseconds
  -R [UM]DATA/RETR = Set transport type to LBT-R[UM], set data rate limit to
                     DATA bits per second, and set retransmit rate limit to
                     RETR bits per second.  For both limits, the optional
                     k, m, and g suffixes may be used.  For example,
                     '-R 1m/500k' is the same as '-R 1000000/500000'
  -T target = target for unicast immediate messages

lbmireq.c -  application that sends immediate requests to a given topic
  (single source) and waits for responses.
Usage: [-hv] [-c filename] [-l len] [-L linger] [-P sec] [-r rate/pct]
       [-R requests] [-T target] [topic]
       -c filename = Use LBM configuration file filename.
                     Multiple config files are allowed.
                     Example:  '-c file1.cfg -c file2.cfg'
       -h = help
       -l len = send messages of len bytes
       -L linger = linger for linger seconds before closing context
       -P sec = pause sec seconds after sending request for responses to arrive
       -r [UM]DATA/RETR = Set transport type to LBT-R[UM], set data rate limit to
                          DATA bits per second, and set retransmit rate limit to
                          RETR bits per second.  For both limits, the optional
                          k, m, and g suffixes may be used.  For example,
                          '-r 1m/500k' is the same as '-r 1000000/500000'
       -R requests = send requests number of requests
       -T target = send immediate request to target
       -v = be verbose (-v -v = be even more verbose)

lbmmon.c - Usage: %s [options]
Available options:
  -c, --config=FILE          Use LBM configuration file FILE.
                             Multiple config files are allowed.
                             Example:  '-c file1.cfg -c file2.cfg'
  -h, --help                 display this help and exit
  -t, --transport=TRANS      use transport module TRANS
                             TRANS may be `lbm', `udp', or `lbmsnmp', default is `lbm'
      --transport-opts=OPTS  use OPTS as transport module options
  -f, --format=FMT           use format module FMT
                             FMT may be `csv'
      --format-opts=OPTS     use OPTS as format module options

lbmmoncache.c - Usage: %s [options]
Available options:
  -c, --config=FILE          Use LBM configuration file FILE.
                             Multiple config files are allowed.
                             Example:  '-c file1.cfg -c file2.cfg'
  -C, --cache-size=size      Set the cache size to 'size' entries
  -h, --help                 display this help and exit
  -t, --transport=TRANS      use transport module TRANS
                             TRANS may be `lbm', `udp', or `lbmsnmp', default is `lbm'
      --transport-opts=OPTS  use OPTS as transport module options
  -f, --format=FMT           use format module FMT
                             FMT may be `csv'
      --format-opts=OPTS     use OPTS as format module options

lbmmondata.c - Usage: [-c filename] [-t topic]
       -c filename = Use LBM configuration file filename.
                     Multiple config files are allowed.
                     Example:  '-c file1.cfg -c file2.cfg'
       -t topicname = use topic topicname to receive statistics

lbmmonudp.c - Usage: %s [options]
Available options:
  -3, --force-32bit          force all data values to fit within 32 bits
                             default is to use native data size
                             applies only to 64-bit platforms
  -a, --address=IP           send CSV data to unicast address IP
  -b, --broadcast=IP         send CSV data to broadcast address IP
  -f, --format=FMT           use monitor format module FMT
                             FMT may be `csv'
      --format-opts=OPTS     use OPTS as format module options
  -h, --help                 display this help and exit
  -i, --interface=IP         send multicast via interface IP
  -m, --multicast=GRP        send CSV data to multicast group GRP
  -p, --port=NUM             send CSV data on UDP port NUM
                             default is port 1234
  -t, --transport=TRANS      use monitor transport module TRANS
                             TRANS may be `lbm' or `udp', default is `lbm'
      --transport-opts=OPTS  use OPTS as transport module options
  -T, --ttl=NUM              send multicast with TTL NUM
                             default is 1

lbmmrcv.c -  application that receives messages from a set of topics
  (multiple receivers).
Usage: %s [options]
  -B, --bufsize=#          Set receive socket buffer size to # (in MB)
  -c, --config=FILE        Use LBM configuration file FILE.
                           Multiple config files are allowed.
                           Example:  '-c file1.cfg -c file2.cfg'
  -C, --contexts=NUM       use NUM lbm_context_t objects
  -E, --exit               exit and end upon receiving End-of-Stream notification
  -e, --end-flag=FILE      clean up and exit when file FILE is created
  -h, --help               display this help and exit
  -i, --initial-topic=NUM  use NUM as initial topic number
  -o, --regid-offset=offset  use offset to calculate Registration ID
                             (as source registration ID + offset)
                             offset of 0 forces creation of regid by store
  -L, --linger=NUM         linger for NUM seconds after done
  -r, --root=STRING        use topic names with root of STRING
  -R, --receivers=NUM      create NUM receivers
  -s, --statistics         print statistics along with bandwidth
  -v, --verbose            be verbose

lbmmrcvq.c -  application that receives messages from a set of topics
  (multiple receivers) using event queues.
Usage: %s [options]
  -B, --bufsize=#          Set receive socket buffer size to # (in MB)
  -c, --config=FILE        Use LBM configuration file FILE.
                           Multiple config files are allowed.
                           Example:  '-c file1.cfg -c file2.cfg'
  -C, --contexts=NUM       use NUM lbm_context_t objects
  -h, --help               display this help and exit
  -i, --initial-topic=NUM  use NUM as initial topic number
  -L, --linger=NUM         linger for NUM seconds after done
  -r, --root=STRING        use topic names with root of STRING
  -R, --receivers=NUM      create NUM receivers
  -s, --statistics         print statistics along with bandwidth
  -v, --verbose            be verbose

lbmmreq.c -  application that sends requests to a given topic (single
  source) and processes responses.
Usage: lbmmreq [options] topic
Available options:
  -c filename = Use LBM configuration file filename.
                Multiple config files are allowed.
                Example:  '-c file1.cfg -c file2.cfg topicname'
  -d delay = delay sending for delay seconds after source creation
  -h = help
  -l len = send messages of len bytes
  -r rate/pct = send with LBT-RM at rate and retransmission pct%
  -R requests = send requests number of requests
  -v = be verbose (-v -v = be even more verbose)

lbmmsrc.c -  Send messages on multiple topics, optionally by multiple threads.
  Topic names generated as a root  followed by a dot, followed by an integer.
  By default, the first topic created will be '29west.example.multi.0'
Usage: %s [options]
Available options:
  -b, --batch=NUM           send messages in batch sizes of NUM between each pause
  -c, --config=FILE         Use LBM configuration file FILE.
                            Multiple config files are allowed.
                            Example:  '-c file1.cfg -c file2.cfg'
  -d, --delay=NUM           delay sending for delay seconds after source creation
  -h, --help                display this help and exit
  -i, --initial-topic=NUM   use NUM as initial topic number [0]
  -j, --late-join=NUM       enable Late Join with specified retention buffer size (in bytes)
  -l, --length=NUM          send messages of length NUM bytes
  -L, --linger=NUM          linger for NUM seconds after done
  -M, --messages=NUM        send maximum of NUM messages
  -P, --pause=NUM           pause NUM milliseconds after each send
  -r, --root=STRING         use topic names with root of STRING [29west.example.multi]
  -R, --rate=[UM]DATA/RETR  Set transport type to LBT-R[UM], set data rate limit to
                            DATA bits per second, and set retransmit rate limit to
                            RETR bits per second.  For both limits, the optional
                            k, m, and g suffixes may be used.  For example,
                            '-R 1m/500k' is the same as '-R 1000000/500000'
  -s, --statistics=NUM      print stats every NUM seconds
  -S, --sources=NUM         use NUM sources
  -T, --threads=NUM         use NUM threads
  -v, --verbose             be verbose

lbmpong.c -  application that measures message round trip time to
  give a good measure of latency.
Usage: [-ChIqRv] [-c filename] [-i msgs] [-l len] [-M msgs] [-P msec] [-r rate/pct] [-s seed] [-t secs] [-T topic] id
       -c filename = Use LBM configuration file filename.
                     Multiple config files are allowed.
                     Example:  '-c file1.cfg -c file2.cfg'
       -C = collect RTT data
       -h = help
       -i msgs = send and ignore msgs messages to warm up
       -o offset = use offset to calculate Registration ID
                   (as source registration ID + offset)
                   offset of 0 forces creation of regid by store
       -I = Use MIM
       -l len = use len length messages
       -M msgs = stop after receiving msgs messages
       -P msec = pause after each send msec milliseconds
       -q = use an LBM event queue
       -r [UM]DATA/RETR = Set transport type to LBT-R[UM], set data rate limit to
                          DATA bits per second, and set retransmit rate limit to
                          RETR bits per second.  For both limits, the optional
                          k, m, and g suffixes may be used.  For example,
                          '-r 1m/500k' is the same as '-r 1000000/500000'
       -R = perform RTT measurement per message
       -s seed = init randomization of contents of message payload
       -t secs = run for secs seconds
       -T topic = topic name prefix (appended with '/' and id) [lbmpong]
       -v = be verbose about each message (for RTT only)
       id = either 'ping' or 'pong'

lbmprice.c -  Simulated price source and receiver for demonstration.
Usage: -s [-h] [-c filename]
       -c filename = Use LBM configuration file filename.
                     Multiple config files are allowed.
                     Example:  '-c file1.cfg -c file2.cfg'
       -h = help
       -H = act has Hot Failover relay for a price source
       -l pct = induce random receiver loss of pct percent
       -n ms = set receiver NAK generation interval to ms milliseconds
       -s = act as a price source (acts as a receiver by default)
       -t ttl = set resolver (and multicast source) ttl to ttl
       -v = be verbose
Usage: [-h] [-c filename]
       -c filename = read config file
       -h = help
       -H = use Hot Failover receiver
       -l pct = induce random receiver loss of pct percent, print max latency
       -n ms = set receiver NAK generation interval to ms milliseconds
       -o mode = set ordered delivery mode (1=ordered, 0=arrival order)
       -t ttl = set resolver (and multicast source) ttl to ttl
       -v = be verbose

lbmpwdgen.c -  application that generates password files for SRP authentication.
Usage: lbmpwdgen
  After the command prompt, pg>, enter one of the commands listed blow:
    open file     open pasword file, e.g. open file temp.xml.
    close         close password file, e.g. close.
    add user      add a user with its name, password and role, e.g. add user userAbc pass1234 admin.
    del user      delete the user entry in the password file, e.g. del user userAbc.
    del urole     delete the role from the user's role list, e.g. del urole user admin.
    add role      add a role with its permitted action, e.g. add role admin MSG_LIST.
    help          display the usage.
    quit          quit the command shell.

lbmrcv.c -  application that receives messages from a given topic
  (single receiver).
Usage: lbmrcv [-ACEfhqsSvV] [-c filename] [-r msgs] [-U losslev] topic
Available options:
  -A, --ascii          display messages as ASCII text (-A -A = newlines after each msg)
  -c, --config=FILE    Use LBM configuration file FILE.
                       Multiple config files are allowed.
                       Example:  '-c file1.cfg -c file2.cfg'
  -C, --context-stats  fetch context rather than receiver stats
  -E, --exit           exit when source stops sending
  -f, --failover       use a hot-failover receiver
  -h, --help           display this help and exit
  -q, --eventq         use an LBM event queue
  -r, --msgs=NUM       exit after NUM messages
  -O, --orderchecks     Enable message order checking
  -N, --channel=NUM    subscribe to channel NUM
  -s, --stats=NUM      print LBM statistics every NUM seconds
  --max-sources=NUM    allow up to NUM sources (for statistics gathering purposes)
  -S, --stop           exit when source stops sending, and print throughput summary
  -U, --losslev=NUM    exit after NUM% unrecoverable loss
  -v, --verbose        be verbose about incoming messages (-v -v = be even more verbose)
  -V, --verify         verify message contents

lbmrcvq.c -  application that receives messages from a given topic
  (single receiver) using an event queue.
Usage: %s [options] topic
Available options:
  -c, --config=FILE     Use LBM configuration file FILE.
  -C, --context-stats   fetch context rather than receiver stats
                        Multiple config files are allowed.
                        Example:  '-c file1.cfg -c file2.cfg'
  -E, --exit            exit after source ends
  -h, --help            display this help and exit
  -r NUM                delete receiver after NUM messages
  -s, --stats=NUM       print LBM statistics every NUM seconds
  -S, --stop            exit after source ends, print throughput summary
  -v, --verbose         be verbose about incoming messages (-v -v = be even more verbose)
  -V, --verify          verify message contents

lbmreq.c -  application that sends requests on a given topic (single
  source) and waits for responses.
Purpose: Send request messages from  a single source with settable interval
         between messages.
Usage: lbmreq [options] topic
Available options:
  -c filename = Use LBM configuration file filename.
                Multiple config files are allowed.
                Example:  '-c file1.cfg -c file2.cfg'
  -d sec = delay sending for delay seconds after source creation
  -h = help
  -l len = send messages of len bytes
  -L linger = linger for linger seconds before closing context
  -P sec = pause sec seconds after sending request for responses to arrive
  -r [UM]DATA/RETR = Set transport type to LBT-R[UM], set data rate limit to
                     DATA bits per second, and set retransmit rate limit to
                     RETR bits per second.  For both limits, the optional
                     k, m, and g suffixes may be used.  For example,
                     '-r 1m/500k' is the same as '-r 1000000/500000'
  -R requests = send requests number of requests
  -q = Use Event Queue
  -v = be verbose (-v -v = be even more verbose)

lbmresp.c -  application that waits for requests and sends responses back
  on a given topic (single receiver).
Usage: [-Ehsv] [-c filename] [-l len] [-r responses] [-f topic] topic
       -c filename = Use LBM configuration file filename.
                     Multiple config files are allowed.
                     Example:  '-c file1.cfg -c file2.cfg'
       -E = end after end-of-stream
       -h = help
       -l len = use len bytes for the length of each response
       -r responses = send responses messages for each request
       -s = be silent about incoming messages
       -v = be verbose (-v -v = be even more verbose)
       -f = forward request to responders listening on given topic

lbmresping.c -  Create a source and see if it can be resolved.  Tests
  operation of lbm resolver.  Handy for troubleshooting problems reaching
  lbm unicast resolvers.  Reports time taken for topic resolution and
  connection to the source.
Usage: [-h] [-c filename] [unicast_resolver_host]
       -c filename = Use LBM configuration file filename.
                     Multiple config files are allowed.
                     Example:  '-c file1.cfg -c file2.cfg'
       -h = help

lbmrespq.c -  application that waits for requests and sends responses back
  on a given topic (single receiver), using an event queue.
Usage: [-hs] [-c filename] [-r msgs] topic
       -c filename = Use LBM configuration file filename.
                     Multiple config files are allowed.
                     Example:  '-c file1.cfg -c file2.cfg'
       -h = help
       -P msecs = pause msecs milliseconds before sending response
       -r msgs = delete receiver after msgs request messages
       -s = be silent about requests/sec rate
       -v = be verbose (-v -v = be even more verbose)

lbmspike.c -  application that generates & receives message spikes for
 performance testing.
Usage: -R [-dhq] [-c filename] [-o ord] [-u bufsiz] [topic]
       -c filename = Use LBM configuration file filename.
                     Multiple config files are allowed.
                     Example:  '-c file1.cfg -c file2.cfg'
       -d = dump message time stamps to a file
       -h = help
       -o ord = set receiver ordered delivery to ord
       -q = processess received messages on an event queue
       -R = role is receiver (default role is source)
       -u bufsiz = UDP buffer size for LBT-RM
Usage: [-dhLn] [-B bghumms] [-c filename] [-l len] [-M msgs] [-r rate/pct] [-v recovms] [topic]
       -B bghumms = milliseconds between \
       -c filename = read config file filename
       -d = dump message time stamps to a file
       -h = help
       -l len = use len length messages
       -L = use TCP-LB
       -M msgs = stop after receiving msgs messages
       -n = use non-blocking writes
       -r [UM]DATA/RETR = Set transport type to LBT-R[UM], set data rate limit to
                          DATA bits per second, and set retransmit rate limit to
                          RETR bits per second.  For both limits, the optional
                          k, m, and g suffixes may be used.  For example,
                          '-r 1m/500k' is the same as '-r 1000000/500000'
       -v recovms = milliseconds after spike to allow for recovery

lbmsrc.c -  application that sends to a given topic (single
  source) as fast as it can.
Usage: %s [options] topic
Available options:
  -c, --config=FILE         Use LBM configuration file FILE.
                            Multiple config files are allowed.
                            Example:  '-c file1.cfg -c file2.cfg'
  -d, --delay=NUM           delay sending for NUM seconds after source creation
  -h, --help                display this help and exit
  -j, --late-join=NUM       enable Late Join with specified retention buffer size (in bytes)
  -l, --length=NUM          send messages of NUM bytes
  -L, --linger=NUM          linger for NUM seconds before closing context
  -M, --messages=NUM        send NUM messages
  -n, --non-block           use non-blocking I/O
  -N, --channel=NUM         send on channel NUM
  -P, --pause=NUM           pause NUM milliseconds after each send
  -R, --rate=[UM]DATA/RETR  Set transport type to LBT-R[UM], set data rate limit to
                            DATA bits per second, and set retransmit rate limit to
                            RETR bits per second.  For both limits, the optional
                            k, m, and g suffixes may be used.  For example,
                            '-R 1m/500k' is the same as '-R 1000000/500000'
  -s, --statistics=NUM      print statistics every NUM seconds
  -V, --verifiable          construct verifiable messages

lbmstrm.c -  application that sends messages to a given topic (multiple
  sources) with rate control.
Usage: %s [options]
  Topic names generated as a root, followed by a dot, followed by an integer.
  By default, the first topic created will be '29west.example.multi.0'
Available options:
  -c, --config=FILE         Use LBM configuration file FILE.
                            Multiple config files are allowed.
                            Example:  '-c file1.cfg -c file2.cfg'
  -h, --help                display this help and exit
  -H, --hf                  Use hot failover sources
  -i, --initial-topic=NUM   use NUM as initial topic number [0]
  -j, --late-join=NUM       enable Late Join with specified retention buffer size (in bytes)
  -l, --length=NUM          send messages of length NUM bytes [25]
  -L, --linger=NUM          linger for NUM seconds after done [10]
  -m, --message-rate=NUM    send at NUM messages per second [10000]
  -M, --messages=NUM        send maximum of NUM messages [10000000]
  -r, --root=STRING         use topic names with root of STRING [29west.example.multi]
  -R, --rate=[UM]DATA/RETR  Set transport type to LBT-R[UM], set data rate limit to
                            DATA bits per second, and set retransmit rate limit to
                            RETR bits per second.  For both limits, the optional
                            k, m, and g suffixes may be used.  For example,
                            '-R 1m/500k' is the same as '-R 1000000/500000'
  -s, --statistics=NUM      print stats every NUM seconds
  -S, --sources=NUM         use NUM sources [100]
  -t, --tight               tight loop (cpu-bound) for even message spacing
  -T, --threads=NUM         use NUM threads [1]
  -x, --bits=NUM  use NUM bits for hot failover sequence number size (32 or 64)

lbmtrreq.c -  application that invokes the Topic Resolution Request API.
Usage: %s [options]
Available options:
  -c, --config=FILE     Use LBM configuration file FILE.
                        Multiple config files are allowed.
                        Example:  '-c file1.cfg -c file2.cfg'
  -a, --adverts         Request Advertisements
  -q, --queries         Request Queries
  -w, --wildcard        Request Wildcard Queries
  -i, --interval=NUM    Interval between request
  -d, --duration=NUM    Minimum duration of requests
  -L, --linger=NUM      Linger for NUM seconds before closing context

lbmwrcv.c -  application that receives messages from a wildcard receiver

Usage: %s [options] pattern
Available options:
  -c, --config=FILE     Use LBM configuration file FILE.
                        Multiple config files are allowed.
                        Example:  '-c file1.cfg -c file2.cfg'
  -D, --deregister      Send Deregistration after receiving 1000 messages
  -E, --exit            exit after source ends
  -h, --help            display this help and exit
  -q                    Use event queue
  -r NUM                delete receiver after NUM messages
  -N, --channel=NUM     subscribe to channel NUM
  -s, --statistics      print statistics along with bandwidth
  -v, --verbose         be verbose about incoming messages (-v -v = be even more verbose)

lbmwrcvq.c -  application that receives messages from a wildcard receiver

Usage: [options] pattern
Available options:
  -c, --config=FILE     Use LBM configuration file FILE.
                        Multiple config files are allowed.
                        Example:  '-c file1.cfg -c file2.cfg'
  -E, --exit            exit after source ends
  -h, --help            display this help and exit
  -r NUM                delete receiver after NUM messages
  -s, --statistics      print statistics along with bandwidth
  -v, --verbose         be verbose about incoming messages (-v -v = be even more verbose)

umeblock.c -  application that sends to a given topic (single
  source) at a rate-limited pace, using blocking send. Understands UME.
Usage: %s [options] topic
Available options:
  -c, --config=FILE      use LBM configuration file FILE
  -l, --length=NUM       send messages of NUM bytes
  -M, --messages=NUM     send NUM messages
  -v, --verbose          print additional info in verbose form

umercv.c -  application that receives messages from a given topic
  (single receiver). Understands UME.
Usage: %s [options] topic
Available options:
  -1, --compat10              act as a UME 1.2 and earlier receiver would act
  -A, --ascii                 display messages as ASCII text (-A -A for newlines after each msg)
  -c, --config=FILE           use FILE as LBM configuration file
  -D, --deregister=NUM        Deregister the receiver after receiving NUM messages
  -E, --exit                  exit after source ends
  -e, --explicit-ack=N        send an Explicit ACK every N messages
  -h, --help                  display this help and exit
  --max-sources=num           allow num sources (for statistics gathering purposes)
  -i, --regid-offset=offset   use offset to calculate Registration ID
                              (as source registration ID + offset)
                              offset of 0 forces creation of regid by store
  -N, --seqnum=X              display recovery sequence number info and set low seqnum to low+X
  -r, --msgs=NUM              delete receiver after NUM messages
  -s, --statistics=NUM        print statistics every NUM seconds, along with bandwidth
  -S, --stop                  exit after source ends, print throughput summary
  -u, --uregid=num            set User settable Registration ID to num for context
  -v, --verbose               be verbose about incoming messages
                              (-v -v = be even more verbose)
  -V, --verify                verify message contents
  -x, --no-exit-on-reg-error  don't exit on registration error (default is to exit)

umesrc.c -  application that sends to a given topic (single
  source) at a rate-limited pace. Understands UME.
  -1, --compat10            act as a UME 1.2 and earlier source would act
  -c, --config=FILE         use LBM configuration file FILE
  -d, --delay=NUM           delay sending for NUM seconds after source creation
  -D, --deregister  deregister the source after sending messages
  -h, --help                display this help and exit
  -I, --regid=ID            use Registration ID of ID
  -j, --late-join           turn on UME late join
  -f, --flight-size=NUM     allow NUM unstabilized messages in flight (determines message rate)
  -l, --length=NUM          send messages of NUM bytes
  -L, --linger=NUM          linger for NUM seconds before closing context
  -M, --messages=NUM        send NUM messages
  -m, --message-rate=NUM    send at NUM messages per second (trumped by -f)
  -N, --seqnum-info         display sequence number information from source events
  -n, --non-block           use non-blocking I/O
  -P, --pause=NUM           pause NUM milliseconds after each send
  -R, --rate=[UM]DATA/RETR  Set transport type to LBT-R[UM], set data rate limit to
                            DATA bits per second, and set retransmit rate limit to
                            RETR bits per second.  For both limits, the optional
                            k, m, and g suffixes may be used.  For example,
                            '-R 1m/500k' is the same as '-R 1000000/500000'
  -s, --statistics=NUM      print statistics every NUM seconds
  -S, --store=IP            use specified UME store (note: if compat10 flag is
                            enabled, the expected argument is IP:PORT instead)
  -t, --storename=NAME      use specified UME store
  -T, --stability           set Message Stability Notification
  -v, --verbose             print additional info in verbose form
  -V, --verifiable          construct verifiable messages

umqsrc.c -  application that sends to a given topic (single
  source) at a rate-limited pace. Understands UMQ.
  -A, --appsets=CFG         use ULB Application Sets given by CFG
  -c, --config=FILE         use LBM configuration file FILE
  -d, --delay=NUM           delay sending for NUM seconds after source creation
  -h, --help                display this help and exit
  -f, --flight-size=NUM     allow NUM unstabilized messages in flight (determines message rate)
  -i, --ids                 display Message IDs for sent message
  -I, --im                  submit Immediate Messages to the Queue
  -l, --length=NUM          send messages of NUM bytes
  -L, --linger=NUM          linger for NUM seconds before closing context
  -M, --messages=NUM        send NUM messages
  -m, --message-rate=NUM    send at NUM messages per second (trumped by -f)
  -n, --non-block           use non-blocking I/O
  -P, --pause=NUM           pause NUM milliseconds after each send
  -Q, --queue=name          use Queue given by name
  -R, --rate=[UM]DATA/RETR  Set transport type to LBT-R[UM], set data rate limit to
                            DATA bits per second, and set retransmit rate limit to
                            RETR bits per second.  For both limits, the optional
                            k, m, and g suffixes may be used.  For example,
                            '-R 1m/500k' is the same as '-R 1000000/500000'
  -s, --statistics=NUM      print statistics every NUM seconds
  -T, --stability           set Message Stability Notification
  -v, --verbose             print additional info in verbose form
  -V, --verifiable          construct verifiable messages
  -X, --index               Send messages on specified index

umqrcv.c -  application that receives messages from a given topic
  (single receiver). Understands UMQ.
Usage: %s [options] topic
Available options:
  -A, --ascii           display messages as ASCII text (-A -A for newlines after each msg)
  -c, --config=FILE     use FILE as LBM configuration file
  -D, --dereg           deregister upon exit
  -d, --delay=NUM  delay receiver creation NUM seconds from context creation
  -E, --exit            exit after source ends
  -h, --help            display this help and exit
  -I, --type-id=ID      set Receiver Type ID to ID
  --max-sources=num     allow num sources (for statistics gathering purposes)
  -r, --msgs=NUM        delete receiver after NUM messages
  -s, --statistics=NUM  print statistics every NUM seconds, along with bandwidth
  -S, --stop            exit after source ends, print throughput summary
  -X, --index           reserve given index if possible, or leave blank to reserve random index
  -v, --verbose         be verbose about incoming messages
                        (-v -v = be even more verbose)
  -V, --verify          verify message contents