4.26. Delivery Control Options

A Delivery Controller is a receiver-side object created for each source identified by the receiver through topic resolution. A delivery controller performs the following.

Unlike the loss depicted in LBT-RM Datagram Loss Resulting in Unrecovered Message Loss which is due to the inability of the transport or network to perform message retransmission, Figure 4-13 demonstrates how a receiver's Delivery Controller detects the loss of a topic message and notifies the receiving application. The TSNI messages contain the sequence number of the last message sent by the source.

Figure 4-13. Generation of Unrecoverable Loss Event

The Delivery Controller detects burst loss by comparing the sequence numbers of the last two messages received. If the resulting gap in sequence numbers equals or exceeds the delivery_control_maximum_burst_loss, the delivery controller sends LBM_MSG_BURST_LOSS to the application.

Figure 4-14. Generation of Burst Loss Event

4.26.1. channel_map_tablesz (receiver)

The size of the hash table that the receiver uses to store channel subscriptions. A larger table means more channels can be stored more efficiently, but takes up more memory. A smaller table uses less memory, but costs more CPU time for large numbers of channel subscriptions.

Scope: receiver
Type: size_t
Default value: 10273
When to Set: Can only be set during object initialization.

4.26.2. delivery_control_loss_check_interval (receiver)

This controls the interval between mandatory topic loss checks for a receiver. A value of 0 turns this loss check off.

Scope: receiver
Type: lbm_ulong_t
Units: milliseconds
Default value: 0 (disabled)
When to Set: Can only be set during object initialization.

4.26.3. delivery_control_loss_tablesz (receiver)

For LBT-RM and other datagram-based transport sessions only. This controls the size of the hash table index used for storing unrecoverable loss state on a per source per topic basis. Larger values mean larger hash tables and probably better CPU usage under loss scenarios at the cost of more memory per source per topic. Smaller values mean smaller hash tables and probably worse CPU usage under loss scenarios but with less memory usage. The value used should be a prime number for efficiency.

Scope: receiver
Type: size_t
Units: table entries
Default value: 131
When to Set: Can only be set during object initialization.
Version: Deprecated

4.26.4. delivery_control_maximum_burst_loss (receiver)

This controls the maximum tolerable burst loss before a burst loss message is delivered to the application. A burst loss less than or equal to this size is treated normally. Larger burst loss is treated as unrecoverable immediately.

Scope: receiver
Type: lbm_uint_t
Units: number of messages
Default value: 512
When to Set: Can only be set during object initialization.

4.26.5. delivery_control_maximum_total_map_entries (context)

The maximum total buffered map entries (unrecoverable loss messages as well as data) that all topics can buffer. When this is exceeded, unrecoverable loss is signaled for data until the total buffered subsides. A value of 0 implies no maximum value setting and allows any amount required to be buffered.

Scope: context
Type: size_t
Units: map entries
Default value: 200000
When to Set: Can only be set during object initialization.

4.26.6. delivery_control_order_tablesz (receiver)

For LBT-RM and other datagram-based transport sessions only. This controls the size of the hash table index used for storing buffered data on a per source per topic basis when ordered delivery is used. Larger values mean larger hash tables and probably better CPU usage under loss scenarios at the cost of more memory per source per topic. Smaller values mean smaller hash tables and probably worse CPU usage under loss scenarios but with less memory usage. The value used should be a prime number for efficiency.

Scope: receiver
Type: size_t
Units: table entries
Default value: 131
When to Set: Can only be set during object initialization.
Version: Deprecated

4.26.7. mim_delivery_control_loss_check_interval (context)

This controls the interval between mandatory loss checks for a Multicast Immediate Messaging (MIM) transport session. A value of 0 turns this loss check off.

Scope: context
Type: lbm_ulong_t
Units: milliseconds
Default value: 0 (disabled)
When to Set: Can only be set during object initialization.
Version: This option was implemented in LBM 4.2

4.26.8. null_channel_behavior (receiver)

Behavior desired when a message without channel information (i.e. a standard UM message) is received by UM.

Scope: receiver
Type: int
When to Set: Can only be set during object initialization.
String value Integer value Description
deliver LBM_RCV_TOPIC_ATTR_CHANNEL_BEHAVIOR_DELIVER_MSGS Messages sent without channel information will be delivered to the callback specified upon receiver creation. Default for all.
discard LBM_RCV_TOPIC_ATTR_CHANNEL_BEHAVIOR_DISCARD_MSGS Messages sent without channel information will be discarded.

4.26.9. source_notification_function (receiver)

Callback functions (and associated client data pointer) that are called when a receiver creates or deletes a delivery controller associated with a source. For the creation function, the application has the ability to set the source client data pointer to be used in each message received from the source. This callback is called directly in line and does not use the event queue. Therefore the callback function used should not block or it will block the context thread processing. A value of NULL for the callback turns off the callback being called.

Scope: receiver
Type: lbm_rcv_src_notification_func_t
Default value: NULL
When to Set: Can only be set during object initialization.
Config File: Cannot be set from an UM configuration file.

4.26.10. unrecognized_channel_behavior (receiver)

Behavior desired when a message with channel information for a channel not in the receiver's set of subscribed channels is received by UM.

Scope: receiver
Type: int
When to Set: Can only be set during object initialization.
String value Integer value Description
deliver LBM_RCV_TOPIC_ATTR_CHANNEL_BEHAVIOR_DELIVER_MSGS Messages sent with channel information for a channel not in the receiver's set of subscribed channels will be delivered to the callback specified upon receiver creation. Default for all.
discard LBM_RCV_TOPIC_ATTR_CHANNEL_BEHAVIOR_DISCARD_MSGS Messages sent with channel information for a channel not in the receiver's set of subscribed channels will be discarded.

Copyright (c) 2004 - 2014 Informatica Corporation. All rights reserved.