diff options
author | Joe George <joe@zeroc.com> | 2015-03-03 17:30:50 -0500 |
---|---|---|
committer | Joe George <joe@zeroc.com> | 2015-05-12 11:41:55 -0400 |
commit | d35bb9f5c19e34aee31f83d445695a8186ef675e (patch) | |
tree | d5324eaf44f5f9776495537c51653f50a66a7237 /cpp/demo/Freeze/library/Server.cpp | |
download | ice-d35bb9f5c19e34aee31f83d445695a8186ef675e.tar.bz2 ice-d35bb9f5c19e34aee31f83d445695a8186ef675e.tar.xz ice-d35bb9f5c19e34aee31f83d445695a8186ef675e.zip |
Ice 3.4.2 Source Distributionv3.4.2
Diffstat (limited to 'cpp/demo/Freeze/library/Server.cpp')
-rw-r--r-- | cpp/demo/Freeze/library/Server.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/cpp/demo/Freeze/library/Server.cpp b/cpp/demo/Freeze/library/Server.cpp new file mode 100644 index 00000000000..dc48f0a3a08 --- /dev/null +++ b/cpp/demo/Freeze/library/Server.cpp @@ -0,0 +1,92 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2011 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 <Ice/Ice.h> +#include <Freeze/Freeze.h> +#include <BookFactory.h> + +using namespace std; + +class LibraryServer : public Ice::Application +{ +public: + + LibraryServer(const string& envName) : + _envName(envName) + { + } + + virtual int run(int argc, char* argv[]); + +private: + + const string _envName; +}; + +int +main(int argc, char* argv[]) +{ + LibraryServer app("db"); + return app.main(argc, argv, "config.server"); +} + +int +LibraryServer::run(int argc, char* argv[]) +{ + if(argc > 1) + { + cerr << appName() << ": too many arguments" << endl; + return EXIT_FAILURE; + } + + Ice::PropertiesPtr properties = communicator()->getProperties(); + + // + // Create an object adapter + // + Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("Library"); + + // + // Create an evictor for books. + // + Freeze::EvictorPtr evictor = Freeze::createBackgroundSaveEvictor(adapter, _envName, "books"); + Ice::Int evictorSize = properties->getPropertyAsInt("EvictorSize"); + if(evictorSize > 0) + { + evictor->setSize(evictorSize); + } + + // + // Use the evictor as servant Locator. + // + adapter->addServantLocator(evictor, "book"); + + + // + // Create the library, and add it to the object adapter. + // + LibraryIPtr library = new LibraryI(communicator(), _envName, "authors", evictor); + adapter->add(library, communicator()->stringToIdentity("library")); + + // + // Create and install a factory for books. + // + Ice::ObjectFactoryPtr bookFactory = new BookFactory(library); + communicator()->addObjectFactory(bookFactory, Demo::Book::ice_staticId()); + + // + // Everything ok, let's go. + // + shutdownOnInterrupt(); + adapter->activate(); + communicator()->waitForShutdown(); + ignoreInterrupt(); + + return EXIT_SUCCESS; +} |