WebSphere Message Brokers
File: as36040_
Writer: Lorraine Waitt

Reference topic

This build: July 31, 2007 21:39:01

cciGetBrokerInfo

This function queries the current broker environment (for example, for information about broker name, execution group name, queue manager name). The information is returned in a structure of type CCI_BROKER_INFO_ST.
Note: This differs from the existing cniGetBrokerInfo (Click cniGetBrokerInfo for a description of that function) in that it is not necessary to provide a CciNode* handle and that cciGetBrokerInfo does not return any information about a message flow. Consequently, cciGetBrokerInfo can be called from initialization functions, for example, bipInitializeUserExits, bipGetMessageParserFactory, and bipGetMessageFlowNodeFactory.

Syntax

void cciGetBrokerInfo(
                      int*                returnCode,
                      CCI_BROKER_INFO_ST* broker_info_st);

Parameters

returnCode (output)
Receives the return code from the function (output).
Possible return codes are:
  • CCI_SUCCESS
  • CCI_INV_BROKER_INFO_ST
  • CCI_EXCEPTION
broker_info_st (output)
The address of a CCI_BROKER_INFO_ST structure to be populated with the relevant values on successful completion:
typedef struct cci_broker_info_st {
int	versionId;			/*Structure version identification*/
CCI_STRING_ST brokerName;		/*The label of the broker*/
CCI_STRING_ST executionGroupName;	/*The label of the current execution group*/
CCI_STRING_ST queueManagerName;		/*The name of the MQ Queue Manager for the broker*/
CCI_STRING_ST dataSourceUserId;		/*The userid broker connects to datasource as*/
} CCI_BROKER_INFO_ST;

Return values

None. If an error occurs, the returnCode parameter indicates the reason for the error.

Example

int rc = CCI_SUCCESS;

CCI_BROKER_INFO_ST brokerInfo = {CCI_BROKER_INFO_ST_DEFAULT};

#define INTITIAL_STR_LEN 256
CciChar brokerNameStr[INTITIAL_STR_LEN];
CciChar executionGroupNameStr[INTITIAL_STR_LEN];
CciChar queueManagerNameStr[INTITIAL_STR_LEN];

brokerInfo.brokerName.bufferLength = INTITIAL_STR_LEN;
brokerInfo.brokerName.buffer       = brokerNameStr;

brokerInfo.executionGroupName.bufferLength = INTITIAL_STR_LEN;
brokerInfo.executionGroupName.buffer = executionGroupNameStr;

brokerInfo.queueManagerName.bufferLength = INTITIAL_STR_LEN;
brokerInfo.queueManagerName.buffer = queueManagerNameStr;

cciGetBrokerInfo(&rc,&brokerInfo);

/* just in case any of the buffers were too short*/
if ((brokerInfo.brokerName.bytesOutput         < brokerInfo.brokerName.dataLength)  ||
    (brokerInfo.executionGroupName.bytesOutput < brokerInfo.executionGroupName.dataLength) ||
    (brokerInfo.queueManagerName.bytesOutput   < brokerInfo.queueManagerName.dataLength))  {

  /*at least one of the buffer were too short, need to rerty*/
  /* NOTE this is unlikely given that the initial sizes were reasonably large*/

  brokerInfo.brokerName.bufferLength =
     brokerInfo.brokerName.dataLength;
  brokerInfo.brokerName.buffer       = 
    (CciChar*)malloc (brokerInfo.brokerName.bufferLength * sizeof(CciChar));

  brokerInfo.executionGroupName.bufferLength = 
    brokerInfo.executionGroupName.dataLength;
  brokerInfo.executionGroupName.buffer       = 
    (CciChar*)malloc (brokerInfo.executionGroupName.bufferLength * sizeof(CciChar));

  brokerInfo.queueManagerName.bufferLength = 
    brokerInfo.queueManagerName.dataLength;
  brokerInfo.queueManagerName.buffer       = 
    (CciChar*)malloc (brokerInfo.queueManagerName.bufferLength * sizeof(CciChar)); 

  cciGetBrokerInfo(&rc,&brokerInfo);

  /*now do something sensible with these strings before the buffers go out of scope*/
  /* for example call a user written function to copy them away*/
  copyBrokerInfo(brokerInfo.brokerName.buffer,
                 brokerInfo.executionGroupName.buffer,
                 brokerInfo.queueManagerName.buffer);

  free((void*)brokerInfo.brokerName.buffer);
  free((void*)brokerInfo.executionGroupName.buffer);
  free((void*)brokerInfo.queueManagerName.buffer);

}else{
  /*now do something sensible with these strings before the buffers go out of scope*/
  /* for example call a user written function to copy them away*/
  copyBrokerInfo(brokerInfo.brokerName.buffer,
                 brokerInfo.executionGroupName.buffer,
                 brokerInfo.queueManagerName.buffer);
}
Related concepts
User exits
Related tasks
Developing a user exit
Notices | Trademarks | Downloads | Library | Support | Feedback

Copyright IBM Corporation 1999, 2007Copyright IBM Corporation 1999, 2007. All Rights Reserved.
This build: July 31, 2007 21:39:01

as36040_ This topic's URL is: