diff options
author | Marc Laukien <marc@zeroc.com> | 2001-09-17 22:04:17 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2001-09-17 22:04:17 +0000 |
commit | 60f51d6688e98ed87d24e6e9d1f179ca5db8f07a (patch) | |
tree | 7c99579afb6e99ea7a76cc5e564db694bdc6d8aa /cpp/demo/Freeze/phonebook/Server.cpp | |
parent | fixes (diff) | |
download | ice-60f51d6688e98ed87d24e6e9d1f179ca5db8f07a.tar.bz2 ice-60f51d6688e98ed87d24e6e9d1f179ca5db8f07a.tar.xz ice-60f51d6688e98ed87d24e6e9d1f179ca5db8f07a.zip |
tons of fixes
Diffstat (limited to 'cpp/demo/Freeze/phonebook/Server.cpp')
-rw-r--r-- | cpp/demo/Freeze/phonebook/Server.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/cpp/demo/Freeze/phonebook/Server.cpp b/cpp/demo/Freeze/phonebook/Server.cpp index a36090d29cf..ff411e46d44 100644 --- a/cpp/demo/Freeze/phonebook/Server.cpp +++ b/cpp/demo/Freeze/phonebook/Server.cpp @@ -19,18 +19,34 @@ int run(int argc, char* argv[], const CommunicatorPtr& communicator, const DBEnvPtr& dbenv) { ObjectAdapterPtr adapter = communicator->createObjectAdapter("PhoneBookAdapter"); - DBPtr db = dbenv->open("entries"); + DBPtr db = dbenv->open("phonebook"); EvictorPtr evictor = new Evictor(db, 3); // TODO: Evictor size must be configurable adapter->setServantLocator(evictor); - PhoneBookIPtr phoneBook = new PhoneBookI(adapter, evictor); + ServantFactoryPtr phoneBookFactory = new PhoneBookFactory(adapter, evictor); + communicator->installServantFactory(phoneBookFactory, "::PhoneBook"); + + PhoneBookIPtr phoneBook; + ObjectPtr servant = db->get("phonebook"); + if (!servant) + { + PhoneBookIPtr phoneBook = new PhoneBookI(adapter, evictor); + } + else + { + phoneBook = PhoneBookIPtr::dynamicCast(servant); + } + assert(phoneBook); adapter->add(phoneBook, "phonebook"); - ServantFactoryPtr factory = new ::ServantFactory(phoneBook, evictor); - communicator->installServantFactory(factory, "::Entry"); + ServantFactoryPtr entryFactory = new EntryFactory(phoneBook, evictor); + communicator->installServantFactory(entryFactory, "::Entry"); adapter->activate(); communicator->waitForShutdown(); + + db->put("phonebook", phoneBook); + return EXIT_SUCCESS; } |