cciGetBrokerInfo
Use the cciGetBrokerInfo function to query the current integration node environment (for example, for information about integration node name, integration server name, queue manager name). The information is returned in a structure of type CCI_BROKER_INFO_ST.
This function differs from cniGetBrokerInfo in that you do not have to specify a CciNode* handle, and that it does not return information about a message flow. Therefore, you can call cciGetBrokerInfo 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 integration node*/ CCI_STRING_ST executionGroupName; /*The label of the current integration server*/ CCI_STRING_ST queueManagerName; /*The name of the MQ Queue Manager for the integration node*/ CCI_STRING_ST dataSourceUserId; /*The userid integration node 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);
}