Channel states

A channel can be in one of many states at any time. Some states also have substates. From a given state a channel can move into other states.

Figure 1 shows the hierarchy of all possible channel states and the substates that apply to each of the channel states.

Figure 2 shows the links between channel states. These links apply to all types of message channel and server-connection channels.
Figure 1. Channel states and substates
The diagram shows the hierarchy of channel states. At the top level, a channel is inactive or current. A current channel can be stopped, starting, retrying, or active. An active channel can be initializing, binding, requesting, running, paused, or stopping. An active, binding channel can be in one of the substates InMsgExit, InSndExit, InRcvExit, InMRExit, InScyExit, InChadExit, Sending, Receiving, Serializing, SSLHandshake, name server, or NetworkConnecting. An active, requesting channel can be in one of the substates InMQICall, SSLHandshake, Sending, Receiving, name server, or NetworkConnecting. An active, running channel can be in one of the substates InMsgExit, InSndExit, InRcvExit, InMRExit, Sending, Receiving, InMQGET, InMQPUT, Resyncing, Heartbeating, EndofBatch, InMQICall, or Compress. An active, stopping channel can be in one of the substates InMsgExit, InSndExit, InRcvExit, InMRExit, or InScyExit.
Figure 2. Flows between channel states
The diagram shows the flows between channel states. A stopped channel can be started, and becomes inactive. A start command, trigger, remote initiation, or a channel initiator places the channel in the initializing state. The channel moves into starting state, and then binding state, while it establishes session and initial data exchange. If the status is OK, the channel state becomes running. The channel can be placed into a paused state while waiting for message-retry interval, or a stopping state after an error, a STOP request, or if a disconnect interval expires. The channel might then move into a retrying state, or back to the stopped state.

Current and active

A channel is current if it is in any state other than inactive. A current channel is active unless it is in RETRYING, STOPPED, or STARTING state. When a channel is active, it is consuming resource and a process or thread is running. The seven possible states of an active channel (INITIALIZING, BINDING, SWITCHING, REQUESTING, RUNNING, PAUSED, or STOPPING) are highlighted in Figure 2.

An active channel can also show a substate giving more detail of exactly what the channel is doing. The substates for each state are shown in Figure 1.