void Parser::topics(const list<string>& args) { if(args.size() > 1) { error("`topics' requires at most one argument (type `help' for more info)"); return; } try { TopicManagerPrx manager; if(args.size() == 0) { manager = _defaultManager; } else { manager = findManagerByCategory(args.front()); } TopicDict d = manager->retrieveAll(); for(TopicDict::iterator i = d.begin(); i != d.end(); ++i) { cout << i->first << endl; } } catch(const Exception& ex) { exception(ex); } }
TopicDict TopicManagerImpl::retrieveAll() const { Lock sync(*this); TopicManagerImpl* This = const_cast<TopicManagerImpl*>(this); This->reap(); TopicDict all; for(map<string, TopicImplPtr>::const_iterator p = _topics.begin(); p != _topics.end(); ++p) { all.insert(TopicDict::value_type(p->first, p->second->proxy())); } return all; }
TopicDict TransientTopicManagerImpl::retrieveAll(const Ice::Current&) const { Lock sync(*this); TransientTopicManagerImpl* This = const_cast<TransientTopicManagerImpl*>(this); This->reap(); TopicDict all; for(map<string, TransientTopicImplPtr>::const_iterator p = _topics.begin(); p != _topics.end(); ++p) { // // Here we cannot just reconstruct the identity since the // identity could be either "<instanceName>/topic.<topicname>" // name, or if created with pre-3.2 IceStorm "/<topicname>". // all.insert(TopicDict::value_type( p->first, TopicPrx::uncheckedCast(_instance->topicAdapter()->createProxy(p->second->id())))); } return all; }
void Parser::links(const list<string>& args) { if(args.size() > 1) { error("`links' requires at most one argument (type `help' for more info)"); return; } try { TopicManagerPrx manager; if(args.size() == 0) { manager = _defaultManager; } else { manager = findManagerByCategory(args.front()); } TopicDict d = manager->retrieveAll(); for(TopicDict::iterator i = d.begin(); i != d.end(); ++i) { LinkInfoSeq links = i->second->getLinkInfoSeq(); for(LinkInfoSeq::const_iterator p = links.begin(); p != links.end(); ++p) { cout << i->first << " to " << (*p).name << " with cost " << (*p).cost << endl; } } } catch(const Exception& ex) { exception(ex); } }