tm_mib — Transaction Manager Management Information Base
Management classes:
This is management information interface for Enduro/X. Currently only information reading is available, setting or changing system characteristics via this interface is not possible. Basically TM MIB interface in GET mode is designed, so that user application can call in standard way ".TMIB" service with requesting the information for particular object. These object types are encoded as classes. Thus user requests information about some class, and TMIB service provided by tpadmsv(8) will respond with objects found in system for particular class.
The information fetching is performed with standard tpcall(3) service invocations. Request and response is encoded in UBF buffer format. At request certain fields are filled (indicating the class and operation), at response the error fields are filled, object information, number of objects found and number of objects fetched. For each request cursor is open at particular tpadmsv, if objects fetched are less than found, then cursor_id with GETNEXT operation code shall be sent to .TMIB, to receive the next portion of data. When all data is fetched, the cursor is deleted in particular process. Cursor is valid for configured period of time, which is configured for tpadmsv. The page size also is configured in tpadmsv server configuration parameters.
To initiate request/open cursor for fetching particular class of information, following UBF fields shall be filled (defined in tpadm.h/Excompat.h):
The filled UBF buffer must be sent to .TMIB service.
General status information is encoded in following fields UBF fields:
If requests succeeds, then data paging information is encoded in following fields:
List of error codes which .TMIB interface returns is:
This class returns information about client processes found in the system. Client processes are gathered from system in two different ways:
In case if process is started by cpmsrv client process monitor and it operates as XATMI client, the information is merged, so that identifier of process is copied from shared memroy (tag/subsection) rather than queue id.
Object fields returned for T_CLIENT class are following:
Class of these object describes general information about current domain, that is Enduro/X instance. Information includes such information as number of queues, servers and services.
Object fields returned for T_DOMAIN class are following:
Objects from this class describes current machine and linked machines for the application cluster. The information about other machines are gathered from the tpbridge(8) processes.
Object fields returned for T_MACHINE class are following:
These objects describe the IPC queues open in the system. Note as Enduro/X is capable of working with different kind of queues, either Posix on System V, the output might be different. But basically all queues within Enduro/X are represented as strings. For System V queues queue id is returned too.
Object fields returned for T_QUEUE class are following:
This class describes XATMI servers currently defined on current cluster node.
Object fields returned for T_SERVER class are following:
This class describes the services defined and available in the system, without dynamic information.
Object fields returned for T_SERVICE class are following:
This class describes dynamic information currently available about the services in the cluster system. Information is retrieved as request from ndrxd(8) process about it’s visibility and knowledge of the current system setup.
Object fields returned for T_SVCGRP class are following:
This class returns information about active tpbridge(8) connections. Cursor data includes data from all bridge processes present in Enduro/X instance. Information is provided only from bridges which have established connection.
Object fields returned for T_BRCON class are following:
The example test is performed with "ud" utility.
Request (initial):
$ ud < test.ud SENT pkt(1) is : TA_CLASS T_SERVICE TA_OPERATION GET
Response:
RTN pkt(1) is : TA_ERROR 0 TA_MORE 8 TA_OCCURS 10 TA_CLASS T_SERVICE TA_CURSOR .TMIB-1-2660_SC000000001 TA_OPERATION GET TA_SERVICENAME RETSOMEDATA TA_SERVICENAME UNIX2 TA_SERVICENAME UNIXINFO TA_SERVICENAME .TMIB-1-2660 TA_SERVICENAME @CPMSVC TA_SERVICENAME @TM-1-1-810 TA_SERVICENAME @TPRECOVER TA_SERVICENAME @TM-1-1-1650 TA_SERVICENAME ECHO TA_SERVICENAME .TMIB TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATUS OK
Request next (initial):
$ ud < test.ud SENT pkt(1) is : TA_CLASS T_SERVICE TA_CURSOR .TMIB-1-2660_SC000000001 TA_OPERATION GETNEXT
Response next (and complete):
RTN pkt(1) is : TA_ERROR 0 TA_MORE 0 TA_OCCURS 8 TA_CLASS T_SERVICE TA_CURSOR .TMIB-1-2660_SC000000001 TA_OPERATION GETNEXT TA_SERVICENAME TIMEOUTSV TA_SERVICENAME @TM-1-1 TA_SERVICENAME TESTSV TA_SERVICENAME SLEEP20 TA_SERVICENAME @TM-1 TA_SERVICENAME @TPBRIDGE002 TA_SERVICENAME NULLSV TA_SERVICENAME SOFTTOUT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATE ACT TA_STATUS OK