本文整理汇总了C++中icestorm::TopicManagerPrx::retrieve方法的典型用法代码示例。如果您正苦于以下问题:C++ TopicManagerPrx::retrieve方法的具体用法?C++ TopicManagerPrx::retrieve怎么用?C++ TopicManagerPrx::retrieve使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类icestorm::TopicManagerPrx
的用法示例。
在下文中一共展示了TopicManagerPrx::retrieve方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: catch
ObserverTopic::ObserverTopic(const IceStorm::TopicManagerPrx& topicManager, const string& name, Ice::Long dbSerial) :
_logger(topicManager->ice_getCommunicator()->getLogger()), _serial(0), _dbSerial(dbSerial)
{
for(int i = 0; i < static_cast<int>(sizeof(encodings) / sizeof(Ice::EncodingVersion)); ++i)
{
ostringstream os;
os << name << "-" << Ice::encodingVersionToString(encodings[i]);
IceStorm::TopicPrx t;
try
{
t = topicManager->create(os.str());
}
catch(const IceStorm::TopicExists&)
{
t = topicManager->retrieve(os.str());
}
//
// NOTE: collocation optimization needs to be turned on for the
// topic because the subscribe() method is given a fixed proxy
// which can't be marshalled.
//
_topics[encodings[i]] = t->ice_collocationOptimized(true);
_basePublishers.push_back(
t->getPublisher()->ice_collocationOptimized(false)->ice_encodingVersion(encodings[i]));
}
}
示例2: exit
serverI::serverI(char* ipToSet, char *portToSet){
port = portToSet;
ip = ipToSet;
ic = Ice::initialize();
cout<<"----- Initialisation des fichiers audio :";
if(initFiles())
cout<<" OK"<<endl;
else{
cerr << " Erreur" << endl;
exit(1);
}
cout<<"----- Initialisation du Topic :";
// PREPARE TOPIC FOR PUBLISHING
string topicName = "serv";
Ice::ObjectPrx obj = ic->stringToProxy("server/TopicManager:tcp -h "+ip+" -p 10000");
IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast(obj);
if(!manager)
{
exit(1);
}
IceStorm::TopicPrx topic;
try
{
cout<<"OK"<<endl;
topic = manager->retrieve(topicName);
}
catch(const IceStorm::NoSuchTopic&)
{
try
{
cout<<"OK"<<endl;
topic = manager->create(topicName);
}
catch(const IceStorm::TopicExists&)
{
cout<<"Error"<<endl;
exit(1);
}
}
Ice::ObjectPrx publisher = topic->getPublisher();
publisher = publisher->ice_oneway();
serv = MonitorPrx::uncheckedCast(publisher);
cout<<"----- Lancement du serveur "<<endl;
initStreaming();
}
示例3: communicator
int
Publisher::run(int argc, char* argv[])
{
Ice::PropertiesPtr properties = communicator()->getProperties();
IceStorm::TopicManagerPrx manager =
IceStorm::TopicManagerPrx::checkedCast(communicator()->stringToProxy("DemoIceStorm/TopicManager"));
if(manager == 0)
{
cerr << appName() << ": no topic manager found, make sure application was deployed." << endl;
return EXIT_FAILURE;
}
string topicName = "time";
if(argc != 1)
{
topicName = argv[1];
}
IceStorm::TopicPrx topic;
try
{
topic = manager->retrieve(topicName);
}
catch(const IceStorm::NoSuchTopic&)
{
cerr << appName() << ": topics not created yet, run subscriber." << endl;
return EXIT_FAILURE;
}
//
// Get the topic's publisher object, and configure a Clock proxy
// with per-request load balancing.
//
ClockPrx clock = ClockPrx::uncheckedCast(topic->getPublisher()->ice_oneway()->ice_connectionCached(false));
try
{
while(true)
{
clock->tick(IceUtil::Time::now().toDateTime());
IceUtil::ThreadControl::sleep(IceUtil::Time::seconds(1));
}
}
catch(const Ice::CommunicatorDestroyedException&)
{
// Ignore
}
return EXIT_SUCCESS;
}
示例4: Startup
bool Publisher::Startup(void)
{
this->IceInitialize();
IceStorm::TopicManagerPrx manager;
try {
manager = IceStorm::TopicManagerPrx::checkedCast(this->IceCommunicator->propertyToProxy("TopicManager.Proxy"));
} catch (const Ice::ConnectionRefusedException & e) {
SCLOG_ERROR << PUBLISHER_INFO << "Failed to initialize IceStorm. Check if IceBox is running: " << e.what() << std::endl;
return false;
}
if (!manager) {
SCLOG_ERROR << PUBLISHER_INFO << "Invalid proxy" << std::endl;
return false;
}
// Retrieve the topic.
IceStorm::TopicPrx topic;
try {
topic = manager->retrieve(this->TopicName);
} catch(const IceStorm::NoSuchTopic&) {
try {
topic = manager->create(this->TopicName);
}
catch(const IceStorm::TopicExists&) {
SCLOG_ERROR << PUBLISHER_INFO << "Topic not found. Try again." << std::endl;
return false;
}
}
// Get the topic's publisher object, and create topic proxy
Ice::ObjectPrx publisher = topic->getPublisher();
// Get the topic's publisher object, and create a proper proxy depending on
// the topic.
switch (this->Topic) {
case Topic::CONTROL:
PublisherControl = ControlPrx::uncheckedCast(publisher);
break;
case Topic::DATA:
PublisherData = DataPrx::uncheckedCast(publisher);
break;
default:
SCASSERT(false);
}
//BaseType::Startup();
return true;
}
示例5: appName
int
Server::run(int argc, char*[])
{
if(argc > 1)
{
cerr << appName() << ": too many arguments" << endl;
return EXIT_FAILURE;
}
Ice::PropertiesPtr properties = communicator()->getProperties();
IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast(
communicator()->propertyToProxy("TopicManager.Proxy"));
if(!manager)
{
cerr << appName() << ": invalid proxy" << endl;
return EXIT_FAILURE;
}
IceStorm::TopicPrx topic;
try
{
topic = manager->retrieve("counter");
}
catch(const IceStorm::NoSuchTopic&)
{
try
{
topic = manager->create("counter");
}
catch(const IceStorm::TopicExists&)
{
cerr << appName() << ": topic exists, please try again." << endl;
return EXIT_FAILURE;
}
}
//
// Create the servant to receive the events.
//
Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("Counter");
Demo::CounterPtr counter = new CounterI(topic);
adapter->add(counter, communicator()->stringToIdentity("counter"));
adapter->activate();
communicator()->waitForShutdown();
return EXIT_SUCCESS;
}
示例6: catch
ReplicaCache::ReplicaCache(const Ice::CommunicatorPtr& communicator, const IceStorm::TopicManagerPrx& topicManager) :
_communicator(communicator)
{
IceStorm::TopicPrx t;
try
{
t = topicManager->create("ReplicaObserverTopic");
}
catch(const IceStorm::TopicExists&)
{
t = topicManager->retrieve("ReplicaObserverTopic");
}
const_cast<IceStorm::TopicPrx&>(_topic) = IceStorm::TopicPrx::uncheckedCast(t->ice_collocationOptimized(true));
const_cast<ReplicaObserverPrx&>(_observers) = ReplicaObserverPrx::uncheckedCast(_topic->getPublisher());
}
示例7: catch
int
run(int, char* argv[], const CommunicatorPtr& communicator)
{
PropertiesPtr properties = communicator->getProperties();
const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default";
string managerProxy = properties->getProperty(managerProxyProperty);
if(managerProxy.empty())
{
cerr << argv[0] << ": property `" << managerProxyProperty << "' is not set" << endl;
return EXIT_FAILURE;
}
IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast(
communicator->stringToProxy(managerProxy));
if(!manager)
{
cerr << argv[0] << ": `" << managerProxy << "' is not running" << endl;
return EXIT_FAILURE;
}
TopicPrx topic;
try
{
topic = manager->retrieve("single");
}
catch(const NoSuchTopic& e)
{
cerr << argv[0] << ": NoSuchTopic: " << e.name << endl;
return EXIT_FAILURE;
}
assert(topic);
//
// Get a publisher object, create a twoway proxy and then cast to
// a Single object.
//
SinglePrx single = SinglePrx::uncheckedCast(topic->getPublisher()->ice_twoway());
for(int i = 0; i < 1000; ++i)
{
single->event(i);
}
return EXIT_SUCCESS;
}
示例8: a
//.........这里部分代码省略.........
//Monitor thread
SpecificMonitor *monitor = new SpecificMonitor(worker,communicator());
QObject::connect(monitor, SIGNAL(kill()), &a, SLOT(quit()));
QObject::connect(worker, SIGNAL(kill()), &a, SLOT(quit()));
monitor->start();
if ( !monitor->isRunning() )
return status;
while (!monitor->ready)
{
usleep(10000);
}
try
{
// Server adapter creation and publication
if (not GenericMonitor::configGetString(communicator(), prefix, "CommonBehavior.Endpoints", tmp, ""))
{
cout << "[" << PROGRAM_NAME << "]: Can't read configuration for proxy CommonBehavior\n";
}
Ice::ObjectAdapterPtr adapterCommonBehavior = communicator()->createObjectAdapterWithEndpoints("commonbehavior", tmp);
CommonBehaviorI *commonbehaviorI = new CommonBehaviorI(monitor );
adapterCommonBehavior->add(commonbehaviorI, communicator()->stringToIdentity("commonbehavior"));
adapterCommonBehavior->activate();
// Server adapter creation and publication
if (not GenericMonitor::configGetString(communicator(), prefix, "AGMCommonBehavior.Endpoints", tmp, ""))
{
cout << "[" << PROGRAM_NAME << "]: Can't read configuration for proxy AGMCommonBehavior";
}
Ice::ObjectAdapterPtr adapterAGMCommonBehavior = communicator()->createObjectAdapterWithEndpoints("AGMCommonBehavior", tmp);
AGMCommonBehaviorI *agmcommonbehavior = new AGMCommonBehaviorI(worker);
adapterAGMCommonBehavior->add(agmcommonbehavior, communicator()->stringToIdentity("agmcommonbehavior"));
adapterAGMCommonBehavior->activate();
cout << "[" << PROGRAM_NAME << "]: AGMCommonBehavior adapter created in port " << tmp << endl;
// Server adapter creation and publication
if (not GenericMonitor::configGetString(communicator(), prefix, "AGMExecutiveTopicTopic.Endpoints", tmp, ""))
{
cout << "[" << PROGRAM_NAME << "]: Can't read configuration for proxy AGMExecutiveTopicProxy";
}
Ice::ObjectAdapterPtr AGMExecutiveTopic_adapter = communicator()->createObjectAdapterWithEndpoints("agmexecutivetopic", tmp);
AGMExecutiveTopicPtr agmexecutivetopicI_ = new AGMExecutiveTopicI(worker);
Ice::ObjectPrx agmexecutivetopic = AGMExecutiveTopic_adapter->addWithUUID(agmexecutivetopicI_)->ice_oneway();
IceStorm::TopicPrx agmexecutivetopic_topic;
if(!agmexecutivetopic_topic){
try {
agmexecutivetopic_topic = topicManager->create("AGMExecutiveTopic");
}
catch (const IceStorm::TopicExists&) {
//Another client created the topic
try{
agmexecutivetopic_topic = topicManager->retrieve("AGMExecutiveTopic");
}
catch(const IceStorm::NoSuchTopic&)
{
//Error. Topic does not exist
}
}
IceStorm::QoS qos;
agmexecutivetopic_topic->subscribeAndGetPublisher(qos, agmexecutivetopic);
}
AGMExecutiveTopic_adapter->activate();
// Server adapter creation and publication
cout << SERVER_FULL_NAME " started" << endl;
// User defined QtGui elements ( main window, dialogs, etc )
#ifdef USE_QTGUI
//ignoreInterrupt(); // Uncomment if you want the component to ignore console SIGINT signal (ctrl+c).
a.setQuitOnLastWindowClosed( true );
#endif
// Run QT Application Event Loop
a.exec();
status = EXIT_SUCCESS;
}
catch(const Ice::Exception& ex)
{
status = EXIT_FAILURE;
cout << "[" << PROGRAM_NAME << "]: Exception raised on main thread: " << endl;
cout << ex;
#ifdef USE_QTGUI
a.quit();
#endif
monitor->exit(0);
}
return status;
}
示例9: if
int
run(int argc, char* argv[], const CommunicatorPtr& communicator)
{
bool batch = false;
int idx = 1;
while(idx < argc)
{
if(strcmp(argv[idx], "-b") == 0)
{
batch = true;
for(int i = idx ; i + 1 < argc ; ++i)
{
argv[i] = argv[i + 1];
}
--argc;
}
else if(strcmp(argv[idx], "-h") == 0 || strcmp(argv[idx], "--help") == 0)
{
usage(argv[0]);
return EXIT_SUCCESS;
}
else if(argv[idx][0] == '-')
{
cerr << argv[0] << ": unknown option `" << argv[idx] << "'" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
}
PropertiesPtr properties = communicator->getProperties();
const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default";
string managerProxy = properties->getProperty(managerProxyProperty);
if(managerProxy.empty())
{
cerr << argv[0] << ": property `" << managerProxyProperty << "' is not set" << endl;
return EXIT_FAILURE;
}
ObjectPrx base = communicator->stringToProxy(managerProxy);
IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast(base);
if(!manager)
{
cerr << argv[0] << ": `" << managerProxy << "' is not running" << endl;
return EXIT_FAILURE;
}
ObjectAdapterPtr adapter = communicator->createObjectAdapterWithEndpoints("SubscriberAdapter", "default");
EventIPtr eventFed1 = new EventI(communicator);
//
// Activate the servants.
//
ObjectPrx obj = adapter->addWithUUID(eventFed1);
IceStorm::QoS qos;
if(batch)
{
obj = obj->ice_batchOneway();
}
else
{
obj = obj->ice_oneway();
}
TopicPrx fed1;
try
{
fed1 = manager->retrieve("fed1");
}
catch(const IceStorm::NoSuchTopic& e)
{
cerr << argv[0] << ": NoSuchTopic: " << e.name << endl;
return EXIT_FAILURE;
}
fed1->subscribeAndGetPublisher(qos, obj);
adapter->activate();
communicator->waitForShutdown();
fed1->unsubscribe(obj);
return EXIT_SUCCESS;
}
示例10: if
//.........这里部分代码省略.........
return EXIT_FAILURE;
}
if(!retryCount.empty())
{
if(option == None)
{
option = Twoway;
}
else if(option != Twoway && option != Ordered)
{
cerr << argv[0] << ": retryCount requires a twoway proxy" << endl;
return EXIT_FAILURE;
}
}
if(batch && (option == Twoway || option == Ordered))
{
cerr << argv[0] << ": batch can only be set with oneway or datagram" << endl;
return EXIT_FAILURE;
}
IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast(
communicator()->propertyToProxy("TopicManager.Proxy"));
if(!manager)
{
cerr << appName() << ": invalid proxy" << endl;
return EXIT_FAILURE;
}
IceStorm::TopicPrx topic;
try
{
topic = manager->retrieve(topicName);
}
catch(const IceStorm::NoSuchTopic&)
{
try
{
topic = manager->create(topicName);
}
catch(const IceStorm::TopicExists&)
{
cerr << appName() << ": temporary failure. try again." << endl;
return EXIT_FAILURE;
}
}
Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("Clock.Subscriber");
//
// Add a servant for the Ice object. If --id is used the identity
// comes from the command line, otherwise a UUID is used.
//
// id is not directly altered since it is used below to detect
// whether subscribeAndGetPublisher can raise AlreadySubscribed.
//
Ice::Identity subId;
subId.name = id;
if(subId.name.empty())
{
subId.name = IceUtil::generateUUID();
}
Ice::ObjectPrx subscriber = adapter->add(new ClockI, subId);
//
示例11: test
void
allTests(const Ice::CommunicatorPtr& communicator)
{
{
cout << "Testing Glacier2 stub... " << flush;
char** argv = 0;
int argc = 0;
SessionHelperClient client;
client.run(argc, argv);
cout << "ok" << endl;
}
{
cout << "Testing IceStorm stub... " << flush;
IceStorm::TopicManagerPrx manager =
IceStorm::TopicManagerPrx::uncheckedCast(communicator->stringToProxy("test:default -p 12010"));
IceStorm::QoS qos;
IceStorm::TopicPrx topic;
string topicName = "time";
try
{
topic = manager->retrieve(topicName);
test(false);
}
catch(const IceStorm::NoSuchTopic&)
{
test(false);
}
catch(const Ice::LocalException&)
{
}
Ice::ObjectAdapterPtr adapter = communicator->createObjectAdapterWithEndpoints("subscriber" ,"tcp");
Ice::ObjectPrx subscriber = adapter->addWithUUID(new ClockI);
adapter->activate();
try
{
topic->subscribeAndGetPublisher(qos, subscriber);
test(false);
}
catch(const IceStorm::AlreadySubscribed&)
{
test(false);
}
catch(const IceUtil::NullHandleException&)
{
}
cout << "ok" << endl;
}
{
cout << "Testing IceGrid stub... " << flush;
Ice::ObjectPrx base = communicator->stringToProxy("test:default -p 12010");
IceGrid::RegistryPrx registry = IceGrid::RegistryPrx::uncheckedCast(base);
IceGrid::AdminSessionPrx session;
IceGrid::AdminPrx admin;
try
{
session = registry->createAdminSession("username", "password");
test(false);
}
catch(const IceGrid::PermissionDeniedException&)
{
test(false);
}
catch(const Ice::LocalException&)
{
}
try
{
admin = session->getAdmin();
test(false);
}
catch(const IceUtil::NullHandleException&)
{
}
cout << "ok" << endl;
}
}
示例12: catch
int
run(int argc, char* argv[], const CommunicatorPtr& communicator)
{
IceUtilInternal::Options opts;
opts.addOpt("", "cycle");
try
{
opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
{
cerr << argv[0] << ": " << e.reason << endl;
return EXIT_FAILURE;
}
PropertiesPtr properties = communicator->getProperties();
const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default";
string managerProxy = properties->getProperty(managerProxyProperty);
if(managerProxy.empty())
{
cerr << argv[0] << ": property `" << managerProxyProperty << "' is not set" << endl;
return EXIT_FAILURE;
}
IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast(
communicator->stringToProxy(managerProxy));
if(!manager)
{
cerr << argv[0] << ": `" << managerProxy << "' is not running" << endl;
return EXIT_FAILURE;
}
TopicPrx topic;
while(true)
{
try
{
topic = manager->retrieve("single");
break;
}
// This can happen if the replica group loses the majority
// during retrieve. In this case we retry.
catch(const Ice::UnknownException&)
{
continue;
}
catch(const IceStorm::NoSuchTopic& e)
{
cerr << argv[0] << ": NoSuchTopic: " << e.name << endl;
return EXIT_FAILURE;
}
}
assert(topic);
//
// Get a publisher object, create a twoway proxy and then cast to
// a Single object.
//
if(opts.isSet("cycle"))
{
Ice::ObjectPrx prx = topic->getPublisher()->ice_twoway();
vector<SinglePrx> single;
Ice::EndpointSeq endpoints = prx->ice_getEndpoints();
for(Ice::EndpointSeq::const_iterator p = endpoints.begin(); p != endpoints.end(); ++p)
{
if((*p)->toString().substr(0, 3) != "udp")
{
Ice::EndpointSeq e;
e.push_back(*p);
single.push_back(SinglePrx::uncheckedCast(prx->ice_endpoints(e)));
}
}
if(single.size() <= 1)
{
cerr << argv[0] << ": Not enough endpoints in publisher proxy" << endl;
return EXIT_FAILURE;
}
int which = 0;
for(int i = 0; i < 1000; ++i)
{
single[which]->event(i);
which = (which + 1) % static_cast<int>(single.size());
}
}
else
{
SinglePrx single = SinglePrx::uncheckedCast(topic->getPublisher()->ice_twoway());
for(int i = 0; i < 1000; ++i)
{
single->event(i);
}
}
return EXIT_SUCCESS;
}
示例13: run
int JoystickPublishComp::run(int argc, char* argv[])
{
#ifdef USE_QTGUI
QApplication a(argc, argv); // GUI application
#else
QCoreApplication a(argc, argv); // NON-GUI application
#endif
int status=EXIT_SUCCESS;
// Remote server proxy access example
// RemoteComponentPrx remotecomponent_proxy;
string proxy;
// User variables
initialize();
// Remote server proxy creation example
// try
// {
// // Load the remote server proxy
// proxy = getProxyString("RemoteProxy");
// remotecomponent_proxy = RemotePrx::uncheckedCast( communicator()->stringToProxy( proxy ) );
// if( !remotecomponent_proxy )
// {
// rInfo(QString("Error loading proxy!"));
// return EXIT_FAILURE;
// }
//catch(const Ice::Exception& ex)
//{
// cout << "[" << PROGRAM_NAME << "]: Exception: " << ex << endl;
// return EXIT_FAILURE;
//}
//rInfo("RemoteProxy initialized Ok!");
// // Now you can use remote server proxy (remotecomponent_proxy) as local object
IceStorm::TopicManagerPrx topicManager = IceStorm::TopicManagerPrx::checkedCast(communicator()->propertyToProxy("TopicManager.Proxy"));
IceStorm::TopicPrx joystickadapter_topic;
while(!joystickadapter_topic){
try {
joystickadapter_topic = topicManager->create("JoystickAdapter"); // communicator()->getProperties()->getProperty("JoystickAdapter") does not work!
}catch (const IceStorm::TopicExists&){
// Another client created the topic.
try{
joystickadapter_topic = topicManager->retrieve("JoystickAdapter"); // communicator()->getProperties()->getProperty("JoystickAdapter") does not work!
}catch (const IceStorm::NoSuchTopic&){
//Error. Topic does not exist.
}
}
}
Ice::ObjectPrx joystickadapter_pub = joystickadapter_topic->getPublisher()->ice_oneway();
JoystickAdapterPrx joystickadapter = JoystickAdapterPrx::uncheckedCast(joystickadapter_pub);
mprx["JoystickAdapterPub"] = (::IceProxy::Ice::Object*)(&joystickadapter);
GenericWorker *worker = new SpecificWorker(mprx);
//Monitor thread
GenericMonitor *monitor = new SpecificMonitor(worker,communicator());
QObject::connect(monitor,SIGNAL(kill()),&a,SLOT(quit()));
QObject::connect(worker,SIGNAL(kill()),&a,SLOT(quit()));
monitor->start();
if ( !monitor->isRunning() )
return status;
try
{
// Server adapter creation and publication
Ice::ObjectAdapterPtr adapterCommonBehavior = communicator()->createObjectAdapter("CommonBehavior");
CommonBehaviorI *commonbehaviorI = new CommonBehaviorI(monitor );
adapterCommonBehavior->add(commonbehaviorI, communicator()->stringToIdentity("commonbehavior"));
adapterCommonBehavior->activate();
// Server adapter creation and publication
cout << SERVER_FULL_NAME " started" << endl;
// User defined QtGui elements ( main window, dialogs, etc )
#ifdef USE_QTGUI
//ignoreInterrupt(); // Uncomment if you want the component to ignore console SIGINT signal (ctrl+c).
a.setQuitOnLastWindowClosed( true );
#endif
// Run QT Application Event Loop
a.exec();
status = EXIT_SUCCESS;
}
catch(const Ice::Exception& ex)
{
status = EXIT_FAILURE;
cout << "[" << PROGRAM_NAME << "]: Exception raised on main thread: " << endl;
cout << ex;
#ifdef USE_QTGUI
a.quit();
#endif
monitor->exit(0);
}
//.........这里部分代码省略.........
示例14: catch
int
run(int, char* argv[], const CommunicatorPtr& communicator)
{
PropertiesPtr properties = communicator->getProperties();
const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default";
string managerProxy = properties->getProperty(managerProxyProperty);
if(managerProxy.empty())
{
cerr << argv[0] << ": property `" << managerProxyProperty << "' is not set" << endl;
return EXIT_FAILURE;
}
ObjectPrx base = communicator->stringToProxy(managerProxy);
IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast(base);
if(!manager)
{
cerr << argv[0] << ": `" << managerProxy << "' is not running" << endl;
return EXIT_FAILURE;
}
TopicPrx fed1;
try
{
fed1 = manager->retrieve("fed1");
}
catch(const NoSuchTopic& e)
{
cerr << argv[0] << ": NoSuchTopic: " << e.name << endl;
return EXIT_FAILURE;
}
TopicPrx fed2;
try
{
fed2 = manager->retrieve("fed2");
}
catch(const NoSuchTopic& e)
{
cerr << argv[0] << ": NoSuchTopic: " << e.name << endl;
return EXIT_FAILURE;
}
TopicPrx fed3;
try
{
fed3 = manager->retrieve("fed3");
}
catch(const NoSuchTopic& e)
{
cerr << argv[0] << ": NoSuchTopic: " << e.name << endl;
return EXIT_FAILURE;
}
EventPrx eventFed1 = EventPrx::uncheckedCast(fed1->getPublisher()->ice_oneway());
EventPrx eventFed2 = EventPrx::uncheckedCast(fed2->getPublisher()->ice_oneway());
EventPrx eventFed3 = EventPrx::uncheckedCast(fed3->getPublisher()->ice_oneway());
Ice::Context context;
int i;
context["cost"] = "0";
for(i = 0; i < 10; ++i)
{
eventFed1->pub("fed1:0", context);
}
context["cost"] = "10";
for(i = 0; i < 10; ++i)
{
eventFed1->pub("fed1:10", context);
}
context["cost"] = "15";
for(i = 0; i < 10; ++i)
{
eventFed1->pub("fed1:15", context);
}
context["cost"] = "0";
for(i = 0; i < 10; ++i)
{
eventFed2->pub("fed2:0", context);
}
context["cost"] = "5";
for(i = 0; i < 10; ++i)
{
eventFed2->pub("fed2:5", context);
}
context["cost"] = "0";
for(i = 0; i < 10; ++i)
{
eventFed3->pub("fed3:0", context);
}
//
//.........这里部分代码省略.........
示例15: IcestormSubscribe
/***********************************************************
subscribe to icestorm
***********************************************************/
void MapHandler::IcestormSubscribe()
{
Ice::ObjectPrx proxy = _adapter->addWithUUID(new InfosReceiverServant(&_SD));
_observer = LbaNet::ActorsObserverPrx::uncheckedCast(proxy);
IceStorm::TopicManagerPrx manager;
try
{
manager = IceStorm::TopicManagerPrx::uncheckedCast(
_communicator->propertyToProxy("TopicManagerProxy"));
}
catch(const IceUtil::Exception& ex)
{
std::cout<<"MapHandler - Exception getting the actor topic manager: "<<ex.what()<<std::endl;
}
catch(...)
{
std::cout<<"MapHandler - Unknown exception getting the actor topic manager. "<<std::endl;
}
try
{
_topic = manager->create(_mapName);
}
catch(const IceStorm::TopicExists&)
{
_topic = manager->retrieve(_mapName);
}
catch(const IceUtil::Exception& ex)
{
std::cout<<"MapHandler - Exception creating actor topic "<<ex.what()<<std::endl;
}
catch(...)
{
std::cout<<"MapHandler - Unknown exception creating actor topic. "<<std::endl;
}
try
{
_topic->subscribeAndGetPublisher(IceStorm::QoS(), _observer);
}
catch(const IceUtil::Exception& ex)
{
std::cout<<"MapHandler - Exception creating actor publisher "<<ex.what()<<std::endl;
}
catch(...)
{
std::cout<<"MapHandler - Unknown exception creating actor publisher. "<<std::endl;
}
Ice::ObjectPrx pub;
try
{
pub = _topic->getPublisher();
_publisher = ActorsObserverPrx::uncheckedCast(pub->ice_oneway());
}
catch(const IceUtil::Exception& ex)
{
std::cout<<"MapHandler - Exception getting the publisher "<<ex.what()<<std::endl;
}
catch(...)
{
std::cout<<"MapHandler - Unknown exception getting the publisher. "<<std::endl;
}
}