// ********************************************************************** // // Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. // // This copy of Ice is licensed to you under the terms described in the // ICE_LICENSE file included in this distribution. // // ********************************************************************** #include #include #include using namespace std; using namespace Demo; class HelloI : public Hello { public: virtual void sayHello(const Ice::Current&) const { cout << "Hello World!" << endl; } }; class DiscoverI : public Discover { public: DiscoverI(const Ice::ObjectPrx& obj) : _obj(obj) { } virtual void lookup(const DiscoverReplyPrx& reply, const Ice::Current&) { reply->reply(_obj); } private: const Ice::ObjectPrx _obj; }; class HelloServer : public Ice::Application { public: virtual int run(int, char*[]); }; int main(int argc, char* argv[]) { HelloServer app; return app.main(argc, argv, "config.server"); } int HelloServer::run(int argc, char* argv[]) { Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("Hello"); Ice::ObjectAdapterPtr discoverAdapter = communicator()->createObjectAdapter("Discover"); Ice::ObjectPrx hello = adapter->addWithUUID(new HelloI); discoverAdapter->add(new DiscoverI(hello), communicator()->stringToIdentity("discover")); discoverAdapter->activate(); adapter->activate(); communicator()->waitForShutdown(); return EXIT_SUCCESS; }