Monitoring server availability

The connection object CclConn has three methods which can be used to determine the availability of the server connection that it represents.

status
requests the status (that is, the availability) of the server.
changed
requests notification of any change in this status.
cancel
requests cancellation of a changed request.

The following example shows how server availability can be monitored in a Client application that is busy doing something else.

Here is a subclass of the flow class for use with server status calls. The reply handler implementation prints the server name and its newly-changed status; it ignores the returned communication area. Next, it issues a changed server request so that the next server status change will be received. The reply handler will be called every time the availability of the server changes.
class ChgFlow : public CclFlow {
public:
       ChgFlow( Ccl::Sync stype ) : CclFlow( stype ) {}
  void handleReply( CclBuf* ) {
         CclConn* ccon = connection();
         cout << ccon-> serverName() << " is "
              << ccon-> serverStatusText() << endl;
         ChgFlow* sflow = new ChgFlow( Ccl::async );
         ccon-> changed( *sflow );
         }
  };
The main Client application iterates through all the servers listed in the CICS Transaction Gateway Initialization file. For each one, an asynchronous status request call is issued. The Client application continues with whatever else it has to do.
int numservs = myeci.serverCount();
CclConn* pcon;
ChgFlow* pflo;
for ( int i = 1; i <= numservs ; i++ ) {
  pcon = new CclConn( myeci.serverName( i ) );
  pflo = new ChgFlow( Ccl::async );
  pcon-> status( *pflo );
  }
  …
The output produced could look something like this:
PROD1    is unavailable
DEVTSERV is unavailable
PROD1    is available
Initially, both servers are unavailable because the ECI Client application is not running. It starts, and after a while makes contact with one of the servers.

Information Information

Feedback


Timestamp icon Last updated: Tuesday, 19 November 2013


https://ut-ilnx-r4.hursley.ibm.com/tg_latest/help/topic/com.ibm.cics.tg.doc//progde/ecimsa.html