# Chapter 10. Event Broker MIB

TUXEDO events are of two types: application events and system events. Application events are usually controlled or trapped by the application code. System events are generated by the TUXEDO run-time system when important changes in the TUXEDO system are detected. Application programs (clients or services) can subscribe to these system events.

The Event Broker MIB defines the characteristics of an event subscription. You can use the Event Broker MIB to obtain the characteristics of current event subscriptions, define new subscriptions, or invalidate subscriptions. To enable both system event and application event notification, you need to define the system event broker and the application event broker in the TUXEDO Core MIB.

Event subscriptions can be temporary or persistent. Persistent subscriptions survive across application activations and can be removed through the Event Broker MIB. The TUXEDO Event Broker MIB contains five groups of event subscriptions through which the Event Broker can be managed. The following table lists the event broker subscription groups.

Group Name | Description
--- | ---
`tuxEventClientTbl` | Subscriptions that trigger unsolicited notification
`tuxEventCmdTbl` | Subscriptions that trigger system commands
`tuxEventQueTbl` | Subscriptions for queue-based notification
`tuxEventSvcTbl` | Subscriptions for server-based notification
`tuxEventUlogTbl` | Subscriptions for writing userlog messages

Each object in these groups represents a single subscription request. Client Notifications (`tuxEventClientTbl` group) indicate which events trigger an unsolicited message to a client. Service Notifications (`tuxEventSvcTbl` group) indicate which events trigger a request to an application service. Application Queue Notifications (`tuxEventQueTbl` group) indicate which events send a message to an application queue. System Command Notifications (`tuxEventCmdTbl` group) indicate which events trigger an operating system command. Log File Notifications (`tuxEventUlogTbl` group) indicate which events generate a record in the central event log (ulog). The Event Broker automatically removes temporary subscriptions when it detects that the corresponding target is no longer active.

Event subscriptions and the ability to change the TUXEDO MIB enables system administrators and application designers to write event-adaptive applications. When a failure is detected through a system event notification, a management framework program can perform the corrective measures. For example, a management framework task can be triggered to activate servers on a backup machine when it receives an event notification about a failure on a primary machine.

## tuxEventClientTbl

This represents a set of subscriptions registered with the Event Broker for client-based notification.

When an event is detected, it is compared to each `tuxEventClientTbl` instance. If the event name matches the value in the event expression and the optional filter rule is true, then the event buffer is sent to the specified client's unsolicited message handling routine. To create a new row in this table, it is necessary to issue a `SET` request that at least specifies the values for `tuxEventClientExpr` and `tuxEventClientId`.

Variable Name | Object ID
--- | ---
`tuxEventClientIndx` | .1.3.6.1.4.1.140.300.2.1.1.1.1
`tuxEventClientExpr` | .1.3.6.1.4.1.140.300.2.1.1.1.2
`tuxEventClientFilter` | .1.3.6.1.4.1.140.300.2.1.1.1.3
`tuxEventClientState` | .1.3.6.1.4.1.140.300.2.1.1.1.4
`tuxEventClientId` | .1.3.6.1.4.1.140.300.2.1.1.1.5

### tuxEventClientIndx

> #### Syntax

> `INTEGER`

> #### Access

> read-only

> #### Description

> A running number as the unique identifier for a row in the table.

### tuxEventClientExpr

> #### Syntax

> `DisplayString` (`SIZE`(`1..255`))

> #### Access

> read-only

> #### Description

> Event pattern expression. This expression, in `recomp`(3) format, controls which event names match this subscription.

> Note: This object can be updated only during row creation.

### tuxEventClientFilter

> #### Syntax

> `DisplayString` (`SIZE`(`1..255`))

> #### Access

> read-only

> #### Description

> Event filter expression. This expression, if present, is evaluated with respect to the posted buffer's contents. It must evaluate to TRUE or this subscription is not matched. If the value of this is "-", it means that the filter expression is in binary format.

> Note: This object can be updated only during row creation.

### tuxEventClientState

> #### Syntax

> `INTEGER { active(1), invalid(2) }`

> #### Access

> read-write

> #### Description

> The values for `GET` and `SET` operations are as follows:

> `GET: active(1)`
>   A `GET` operation will retrieve configuration information for the matching `tuxEventClientTbl` row(s).

> `SET: invalid(2)`
>   A `SET` operation will update configuration information for the row in `tuxEventClientTbl`. The following state indicates the meaning of a `tuxEventClientState` set in a `SET` request. States not listed may not be set.

> `invalid(2)`
>   Delete row. Successful return leaves the row in the `invalid(2)` state.

### tuxEventClientId

> #### Syntax

> `DisplayString` (`SIZE`(`1..78`))

> #### Access

> read-only

> #### Description

> Send an unsolicited notification message to this client when a matching event is detected.

> Note: This object can be updated only during row creation.

## tuxEventCmdTbl

This represents a set of subscriptions registered with the Event Broker that trigger execution of system commands.

When an event is detected, it is compared to each row in this table. If the event name matches the value in the event expression and the optional filter rule is true, then the event buffer is formatted and passed to the system's command interpreter.

Create a new Row: To create a new instance of `tuxEventCmdTbl` the user must specify at least `tuxEventCmdExpr` and `tuxEventCmd`. All objects except `tuxEventCmdState` can be updated only during creation of a new instance.

Variable Name | Object ID
--- | ---
`tuxEventCmdIndx` | .1.3.6.1.4.1.140.300.2.2.1.1.1
`tuxEventCmdExpr` | .1.3.6.1.4.1.140.300.2.2.1.1.2
`tuxEventCmdFilter` | .1.3.6.1.4.1.140.300.2.2.1.1.3
`tuxEventCmdState` | .1.3.6.1.4.1.140.300.2.2.1.1.4
`tuxEventCmd` | .1.3.6.1.4.1.140.300.2.2.1.1.5

### tuxEventCmdIndx

> #### Syntax

> `INTEGER`

> #### Access

> read-only

> #### Description

> A running number as the unique identifier for a row in the table.

### tuxEventCmdExpr

> #### Syntax

> `DisplayString` (`SIZE`(`1..255`))

> #### Access

> read-write

> #### Description

> Event pattern expression. This expression, in `recomp`(3) format, controls which event names match this subscription.

> Note: This object can be updated only during row creation.

### tuxEventCmdFilter

> #### Syntax

> `DisplayString` (`SIZE`(`1..255`))

> #### Access

> read-write

> #### Description

> Event filter expression. This expression, if present, is evaluated with respect to the posted buffer's contents. It must evaluate to TRUE or this subscription is not matched. If the value of the filter is "-", it means that the filter is in a binary format.

> Note: This object can be updated only during row creation.

### tuxEventCmdState

> #### Syntax

> `INTEGER { active(1), invalid(2) }`

> #### Access

> read-write

> #### Description

> The values for `GET` and `SET` operations are as follows:

> `GET: active(1)`
>   A `GET` operation will retrieve configuration information for the `tuxEventCmdTbl` instance(s).

> `SET: invalid(2)`
>   A `SET` operation will update configuration information for the `tuxEventCmdTbl` instance. The following state indicates the meaning of a `tuxEventCmdState` set in a `SET` request. States not listed may not be set.

> `invalid(2)`
>   Delete `tuxEventCmdTbl` instance. Successful return leaves the object in the `invalid(2)` state.

### tuxEventCmd

> #### Syntax

> `DisplayString` (`SIZE`(`1..255`))

> #### Access

> read-write

> #### Description

> Execute this system command when an event matching this object is detected. For UNIX system platforms, the command is executed in the background using `system`(3).

> Note: This object can be updated only during row creation.

## tuxEventQueTbl

This represents a set of subscriptions registered with the Event Broker for queue-based notification.

When an event is detected, it is compared to each `tuxEventQueTbl` instance. If the event name matches the value in the event expression and the optional filter rule is true, then the event buffer is stored in the specified reliable queue. To create a new row in this table, it is necessary to issue a `SET` request that at least specifies `tuxEventQueExpr`, `tuxEventQspace`, and `tuxEventQname`.

Variable Name | Object ID
--- | ---
`tuxEventQueIndx` | .1.3.6.1.4.1.140.300.2.3.1.1.1
`tuxEventQueExpr` | .1.3.6.1.4.1.140.300.2.3.1.1.2
`tuxEventQueFilter` | .1.3.6.1.4.1.140.300.2.3.1.1.3
`tuxEventQueState` | .1.3.6.1.4.1.140.300.2.3.1.1.4
`tuxEventQspace` | .1.3.6.1.4.1.140.300.2.3.1.1.5
`tuxEventQname` | .1.3.6.1.4.1.140.300.2.3.1.1.6
`tuxEventQctlQtop` | .1.3.6.1.4.1.140.300.2.3.1.1.7
`tuxEventQctlBeforeMsgid` | .1.3.6.1.4.1.140.300.2.3.1.1.8
`tuxEventQctlQtimeAbs` | .1.3.6.1.4.1.140.300.2.3.1.1.9
`tuxEventQctlQtimeRel` | .1.3.6.1.4.1.140.300.2.3.1.1.10
`tuxEventQctlDeqTime` | .1.3.6.1.4.1.140.300.2.3.1.1.11
`tuxEventQctlPrior` | .1.3.6.1.4.1.140.300.2.3.1.1.12
`tuxEventQctlMsgId` | .1.3.6.1.4.1.140.300.2.3.1.1.13
`tuxEventQctlCorrId` | .1.3.6.1.4.1.140.300.2.3.1.1.14
`tuxEventQctlReplyQ` | .1.3.6.1.4.1.140.300.2.3.1.1.15
`tuxEventQctlFailQ` | .1.3.6.1.4.1.140.300.2.3.1.1.16
`tuxEventPersist` | .1.3.6.1.4.1.140.300.2.3.1.1.17
`tuxEventTran` | .1.3.6.1.4.1.140.300.2.3.1.1.18

### tuxEventQueIndx

> #### Syntax

> `INTEGER`

> #### Access

> read-only

> #### Description

> Running number which is the unique identifier for an event in this table.

### tuxEventQueExpr

> #### Syntax

> `DisplayString` (`SIZE`(`1..255`))

> #### Access

> read-write

> #### Description

> Event pattern expression. This expression, in `recomp`(3) format, controls which event names match this subscription.

> Note: This object can be updated only during row creation.

### tuxEventQueFilter

> #### Syntax

> `DisplayString` (`SIZE`(`1..255`))

> #### Access

> read-write

> #### Description

> Event filter expression. This expression, if present, is evaluated with respect to the posted buffer's contents. It must evaluate to TRUE or this subscription is not matched. If the value of this object is "-", it means the filter is in binary format.

> Note: This object can be updated only during row creation.

### tuxEventQueState

> #### Syntax

> `INTEGER { active(1), invalid(2) }`

> #### Access

> read-write

> #### Description

> The values for `GET` and `SET` operations are as follows:

> `GET: active(1)`
>   A `GET` operation will retrieve configuration information for the matching `tuxEventQueTbl` row(s).

> `SET:` `invalid(2)`
>   A `SET` operation will update configuration information for the `tuxEventQueTbl` instance. The following state indicates the meaning of a `tuxEventQueState` set in a `SET` request. States not listed may not be set.

> `invalid(2)`
>   Delete `tuxEventQueTbl` row. Successful return leaves the object in the `invalid(2)` state.

### tuxEventQspace

> #### Syntax

> `DisplayString` (`SIZE`(`1..15`))

> #### Access

> read-write

> #### Description

> Enqueue a notification message to a reliable queue in this queue space when a matching event is detected.

> Note: This object can be updated only during row creation.

### tuxEventQname

> #### Syntax

> `DisplayString` (`SIZE`(`1..15`))

> #### Access

> read-write

> #### Description

> Enqueue a notification message to this reliable queue when a matching event is detected.

> Note: This object can be updated only during row creation.

### tuxEventQctlQtop

> #### Syntax

> `INTEGER`

> #### Access

> read-write

> #### Description

> This value, if present, is passed in to `tpenqueue`(3)'s TPQCTL control structure to request notification via the /Q subsystem with the message to be placed at the top of the queue.

> Note: This object can be updated only during row creation.

### tuxEventQctlBeforeMsgid

> #### Syntax

> `INTEGER`

> #### Access

> read-write

> #### Description

> This value, if present, is passed in to `tpenqueue`(3)'s TPQCTL control structure to request notification via the /Q subsystem with the message to be placed on the queue ahead of the specified message.

> Note: This object can be updated only during row creation.

### tuxEventQctlQtimeAbs

> #### Syntax

> `INTEGER`

> #### Access

> read-write

> #### Description

> This value, if present, is passed in to `tpenqueue`(3)'s TPQCTL control structure to request notification via the /Q subsystem with the message to be processed at the specified time.

> Note: This object can be updated only during row creation.

### tuxEventQctlQtimeRel

> #### Syntax

> `INTEGER`

> #### Access

> read-write

> #### Description

> This value, if present, is passed in to `tpenqueue`(3)'s TPQCTL control structure to request notification via the /Q subsystem with the message to be processed relative to the dequeue time.

> Note: This object can be updated only during row creation.

### tuxEventQctlDeqTime

> #### Syntax

> `INTEGER`

> #### Access

> read-write

> #### Description

> This value, if present, is passed in to `tpenqueue`(3)'s TPQCTL control structure.

> Note: This object can be updated only during row creation.

### tuxEventQctlPrior

> #### Syntax

> `INTEGER`

> #### Access

> read-write

> #### Description

> This value, if present, is passed in to `tpenqueue`(3)'s TPQCTL control structure.

> Note: This object can be updated only during row creation.

### tuxEventQctlMsgId

> #### Syntax

> `DisplayString` (`SIZE`(`1..31`))

> #### Access

> read-write

> #### Description

> This value, if present, is passed in to `tpenqueue`(3)'s TPQCTL control structure.

> Note: This object can be updated only during row creation.

### tuxEventQctlCorrId

> #### Syntax

> `DisplayString` (`SIZE`(`1..31`))

> #### Access

> read-write

> #### Description

> This value, if present, is passed in to `tpenqueue`(3)'s TPQCTL control structure.

> Note: This object can be updated only during row creation.

### tuxEventQctlReplyQ

> #### Syntax

> `DisplayString` (`SIZE`(`1..15`))

> #### Access

> read-write

> #### Description

> This value, if present, is passed in to `tpenqueue`(3)'s TPQCTL control structure.

> Note: This object can be updated only during row creation.

### tuxEventQctlFailQ

> #### Syntax

> `DisplayString` (`SIZE`(`1..15`))

> #### Access

> read-write

> #### Description

> This value, if present, is passed in to `tpenqueue`(3)'s TPQCTL control structure.

> Note: This object can be updated only during row creation.

### tuxEventPersist

> #### Syntax

> `INTEGER`

> #### Access

> read-write

> #### Description

> If non-zero, do not cancel this subscription if the designated queue is no longer available.

> Note: This object can be updated only during row creation.

### tuxEventTran

> #### Syntax

> `INTEGER`

> #### Access

> read-write

> #### Description

> If non-zero and the client's `tppost`(3) call is transactional, include the `tpenqueue`(3) call in the client's transaction.

> Note: This object can be updated only during row creation.

## tuxEventSvcTbl

This represents a set of subscriptions registered with the Event Broker for service-based notification.

When an event is detected, it is compared to each `tuxEventSvcTbl` instance. If the event name matches the value in the event expression and the optional filter rule is true, then the event buffer is sent to the specified TUXEDO service routine.

To create a new row in this table, a `SET` request must be issued that specifies values for at least `tuxEventSvcExpr` and `tuxEventSvcName`.

.

Variable Name | Object ID
--- | ---
`tuxEventSvcIndx` | .1.3.6.1.4.1.140.300.2.4.1.1.1
`tuxEventSvcExpr` | .1.3.6.1.4.1.140.300.2.4.1.1.2
`tuxEventSvcFilter` | .1.3.6.1.4.1.140.300.2.4.1.1.3
`tuxEventSvcState` | .1.3.6.1.4.1.140.300.2.4.1.1.4
`tuxEventSvcName` | .1.3.6.1.4.1.140.300.2.4.1.1.5
`tuxEventSvcPersist` | .1.3.6.1.4.1.140.300.2.4.1.1.6
`tuxEventSvcTran` | .1.3.6.1.4.1.140.300.2.4.1.1.7

### tuxEventSvcIndx

> #### Syntax

> `INTEGER`

> #### Access

> read-only

> #### Description

> A running number which is a unique key for a row in this table.

### tuxEventSvcExpr

> #### Syntax

> `DisplayString` (`SIZE`(`1..255`))

> #### Access

> read-only

> #### Description

> Event pattern expression. This expression, in `recomp`(3) format, controls which event names match this subscription.

> Note: This object can be updated only during row creation.

### tuxEventSvcFilter

> #### Syntax

> `DisplayString` (`SIZE`(`1..255`))

> #### Access

> read-only

> #### Description

> Event filter expression. This expression, if present, is evaluated with respect to the posted buffer's contents. It must evaluate to TRUE or this subscription is not matched. If this is "-", it means the filter is in binary format.

> Note: This object can be updated only during row creation.

### tuxEventSvcState

> #### Syntax

> `INTEGER { active(1), invalid(2) }`

> #### Access

> read-write

> #### Description

> The values for `GET` and `SET` operations are as follows:

> `GET: active(1)`
>   A `GET` operation will retrieve configuration information for the matching `tuxEventSvcTbl` instance(s).

> `SET:` `invalid(2)`
>   A `SET` operation will update configuration information for the `tuxEventSvcTbl` instance. The following state indicates the meaning of a `tuxEventSvcState` set in a `SET` request. States not listed may not be set.

> `invalid(2)`
>   Delete `tuxEventSvcTbl` row. Successful return leaves the object in the `invalid(2)` state.

### tuxEventSvcName

> #### Syntax

> `DisplayString` (`SIZE`(`1..15`))

> #### Access

> read-only

> #### Description

> Call this TUXEDO service when a matching event is detected.

> Note: This object can be updated only during row creation.

### tuxEventSvcPersist

> #### Syntax

> `INTEGER`

> #### Access

> read-write

> #### Description

> If non-zero, do not cancel this subscription if the `tuxEventSvcName` service is no longer available.

> Note: This object can be updated only during row creation.

### tuxEventSvcTran

> #### Syntax

> `INTEGER`

> #### Access

> read-write

> #### Description

> If non-zero and the client's `tppost`(3) call is transactional, include the `tuxEventSvcName` service call in the client's transaction.

> Note: This object can be updated only during row creation.

## tuxEventUlogTbl

This represents a set of subscriptions registered with the Event Broker for writing system `userlog`(3) messages.

When an event is detected, it is compared to each `tuxEventUlogTbl` instance. If the event name matches the value in the event expression and the optional filter rule is true, then the event buffer is formatted and passed to the TUXEDO `userlog`(3) function.

Create a new Row: To create a new instance of `tuxEventUlogTbl` the user must at least specify values for `tuxEventUlogExpr` and `tuxEventUserlog`. All objects except `tuxEventUlogState` can be updated only during creation of a new instance.

Variable Name | Object ID
--- | ---
`tuxEventUlogIndx` | .1.3.6.1.4.1.140.300.2.5.1.1.1
`tuxEventUlogExpr` | .1.3.6.1.4.1.140.300.2.5.1.1.2
`tuxEventUlogFilter` | .1.3.6.1.4.1.140.300.2.5.1.1.3
`tuxEventUlogState` | .1.3.6.1.4.1.140.300.2.5.1.1.4
`tuxEventUserlog` | .1.3.6.1.4.1.140.300.2.5.1.1.5

### tuxEventUlogIndx

> #### Syntax

> `INTEGER`

> #### Access

> read-only

> #### Description

> A running number which is a unique key in this table.

### tuxEventUlogExpr

> #### Syntax

> `DisplayString` (`SIZE`(`1..255`))

> #### Access

> read-write

> #### Description

> Event pattern expression. This expression, in `recomp`(3) format, controls which event names match this subscription.

> Note: This object can be updated only during row creation.

### tuxEventUlogFilter

> #### Syntax

> `DisplayString` (`SIZE`(`1..255`))

> #### Access

> read-write

> #### Description

> Event filter expression. This expression, if present, is evaluated with respect to the posted buffer's contents. It must evaluate to TRUE or this subscription is not matched. If this is "-", it means the filter is in binary form.

> Note: This object can be updated only during row creation.

### tuxEventUlogState

> #### Syntax

> `INTEGER { active(1), invalid(2) }`

> #### Access

> read-write

> #### Description

> The values for `GET` and `SET` operations are as follows:

> `GET: active(1)`
>   A `GET` operation will retrieve configuration information for the matching `tuxEventUlogTbl` instance(s).

> `SET: invalid(2)`
>   A `SET` operation will update configuration information for the `tuxEventUlogTbl` instance. The following state indicates the meaning of a `tuxEventUlogState` set in a `SET` request. States not listed may not be set.

> `invalid(2)`
>   Delete `tuxEventUlogTbl` row. Successful return leaves the object in the `invalid(2)` state.

### tuxEventUserlog

> #### Syntax

> `DisplayString` (`SIZE`(`1..255`))

> #### Access

> read-write

> #### Description

> Write a `userlog`(3) message when a matching event is detected.

> Note: This object can be updated only during row creation.