74 IceUtilInternal::Options opts;
75 opts.addOpt(
"h",
"help");
76 opts.addOpt(
"v",
"version");
77 opts.addOpt(
"e",
"", IceUtilInternal::Options::NeedArg,
"", IceUtilInternal::Options::Repeat);
78 opts.addOpt(
"d",
"debug");
80 std::vector<std::string> args;
83 args = opts.parse(argc,
const_cast<const char**
>(argv));
85 catch (
const IceUtilInternal::BadOptException& e)
87 consoleErr << e.reason << std::endl;
93 consoleErr << argv[0] <<
": too many arguments" << std::endl;
98 if (opts.isSet(
"help"))
103 if (opts.isSet(
"version"))
105 consoleOut << ICE_STRING_VERSION << std::endl;
110 std::vector<std::string> optargs = opts.argVec(
"e");
111 for (std::vector<std::string>::const_iterator i = optargs.begin(); i != optargs.end(); ++i)
113 commands += *i +
";";
116 debug = opts.isSet(
"debug");
119 std::map<Ice::Identity, IceStorm::TopicManagerPrx> managers;
123 Ice::PropertyDict props =
124 communicator()->getProperties()->getPropertiesForPrefix(
"IceStormAdmin.TopicManager.");
126 for (Ice::PropertyDict::const_iterator p = props.begin(); p != props.end(); ++p)
131 if (p->first.find(
'.', strlen(
"IceStormAdmin.TopicManager.")) == std::string::npos)
136 communicator()->propertyToProxy(p->first));
137 managers.insert(std::map<Ice::Identity, IceStorm::TopicManagerPrx>::value_type(
138 manager->ice_getIdentity(), manager));
140 catch (
const Ice::ProxyParseException&)
142 consoleErr << appName() <<
": malformed proxy: " << p->second << std::endl;
148 std::string managerProxy = properties->getProperty(
"IceStormAdmin.TopicManager.Default");
149 if (!managerProxy.empty())
151 defaultManager = IceStorm::TopicManagerPrx::uncheckedCast(
152 communicator()->stringToProxy(managerProxy));
154 else if (!managers.empty())
156 defaultManager = managers.begin()->second;
162 std::string host = properties->getProperty(
"IceStormAdmin.Host");
163 std::string port = properties->getProperty(
"IceStormAdmin.Port");
165 const int timeout = 3000;
166 std::ostringstream os;
167 os <<
"IceStorm/Finder";
168 os <<
":tcp" << (host.empty() ?
"" : (
" -h \"" + host +
"\"")) <<
" -p " << port <<
" -t "
170 os <<
":ssl" << (host.empty() ?
"" : (
" -h \"" + host +
"\"")) <<
" -p " << port <<
" -t "
172 IceStorm::FinderPrx finder =
173 IceStorm::FinderPrx::uncheckedCast(communicator()->stringToProxy(os.str()));
176 defaultManager = finder->getTopicManager();
178 catch (
const Ice::LocalException&)
186 consoleErr << appName() <<
": no manager proxies configured" << std::endl;
191 int status = EXIT_SUCCESS;
193 if (!commands.empty())
195 int parseStatus = p->parse(commands, debug);
196 if (parseStatus == EXIT_FAILURE)
198 status = EXIT_FAILURE;
205 int parseStatus = p->parse(stdin, debug);
206 if (parseStatus == EXIT_FAILURE)
208 status = EXIT_FAILURE;