void MonitorPlugInActiveMQ::parseTopics(XMLNode config, Topics &topics, TopicInfo &referenceTopic) { XMLNode topicNode; Topics::iterator i; TopicInfo *pTopicInfo; // defaults vector<string> channels; channels.push_back(ACTIVEMQ_KEY_POCSAG); channels.push_back(ACTIVEMQ_KEY_ZVEI); channels.push_back(ACTIVEMQ_KEY_FMS); for (unsigned int i = 0, m = channels.size(); i < m; i++) { pTopicInfo = new TopicInfo; initializeTopic(*pTopicInfo, referenceTopic); topics.insert(PairMapping(channels.at(i), pTopicInfo)); } int nTopic = config.nChildNode(ACTIVEMQ_XMLNODE_TOPIC); for (int num = 0; num < nTopic ; ++num) { if (!((topicNode = config.getChildNode(ACTIVEMQ_XMLNODE_TOPIC, num))).isEmpty()) { std::string type = topicNode.getAttribute(ACTIVEMQ_XMLATTR_TYPE) ; if ((type == ACTIVEMQ_KEY_POCSAG) || (type == ACTIVEMQ_KEY_FMS) || (type == ACTIVEMQ_KEY_ZVEI)) { pTopicInfo = (topics.find(type))->second; parseTopic(topicNode, *pTopicInfo, referenceTopic); } } } }