summaryrefslogtreecommitdiff
path: root/cpp/demo/Freeze/phonebook/Server.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2001-09-17 22:04:17 +0000
committerMarc Laukien <marc@zeroc.com>2001-09-17 22:04:17 +0000
commit60f51d6688e98ed87d24e6e9d1f179ca5db8f07a (patch)
tree7c99579afb6e99ea7a76cc5e564db694bdc6d8aa /cpp/demo/Freeze/phonebook/Server.cpp
parentfixes (diff)
downloadice-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.cpp24
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;
}