1
// **********************************************************************
3
// Copyright (c) 2003-2006 ZeroC, Inc. All rights reserved.
5
// This copy of Ice is licensed to you under the terms described in the
6
// ICE_LICENSE file included in this distribution.
8
// **********************************************************************
10
#include <Ice/Application.h>
11
#include <Ice/Locator.h>
19
// Dummy ServerLocatorRegistry, ServerLocator and ServantLocator. For
20
// simplicity, we essentially 'alias' all possible requests to a single
21
// object adapter and a single servant.
23
class ServerLocatorRegistry : virtual public LocatorRegistry
28
setAdapterDirectProxy_async(const AMD_LocatorRegistry_setAdapterDirectProxyPtr& cb, const string&,
29
const ObjectPrx&, const Current&)
35
setReplicatedAdapterDirectProxy_async(const AMD_LocatorRegistry_setReplicatedAdapterDirectProxyPtr& cb,
36
const string&, const string&, const ObjectPrx&, const Current&)
42
setServerProcessProxy_async(const AMD_LocatorRegistry_setServerProcessProxyPtr& cb,
43
const string&, const ProcessPrx&, const Current&)
49
class ServerLocatorI : virtual public Locator
52
ServerLocatorI(const BackendPtr& backend, const ObjectAdapterPtr& adapter) :
56
LocatorRegistryPrx::uncheckedCast(
57
adapter->add(new ServerLocatorRegistry, _adapter->getCommunicator()->stringToIdentity("registry"))))
62
findObjectById_async(const AMD_Locator_findObjectByIdPtr& cb, const Identity& id, const Current&) const
64
cb->ice_response(_adapter->createProxy(id));
68
findAdapterById_async(const AMD_Locator_findAdapterByIdPtr& cb, const string& id, const Current& current) const
70
cb->ice_response(_adapter->createDirectProxy(_adapter->getCommunicator()->stringToIdentity("dummy")));
73
virtual LocatorRegistryPrx
74
getRegistry(const Current&) const
80
const BackendPtr _backend;
81
const ObjectAdapterPtr _adapter;
82
const LocatorRegistryPrx _registryPrx;
85
class ServantLocatorI : virtual public ServantLocator
89
ServantLocatorI(const BackendPtr& backend) :
94
virtual ObjectPtr locate(const Current&, LocalObjectPtr&)
99
virtual void finished(const Current&, const ObjectPtr&, const LocalObjectPtr&)
103
virtual void deactivate(const string&)
109
const BackendPtr _backend;
112
class BackendServer : public Application
116
virtual int run(int, char*[]);
120
main(int argc, char* argv[])
123
return app.main(argc, argv);
127
BackendServer::run(int argc, char* argv[])
130
communicator()->getProperties()->getPropertyWithDefault("BackendAdapter.Endpoints",
131
"tcp -p 12010 -t 20000:ssl -p 12011 -t 20000");
133
communicator()->getProperties()->setProperty("BackendAdapter.Endpoints", endpoints);
134
ObjectAdapterPtr adapter = communicator()->createObjectAdapter("BackendAdapter");
135
BackendPtr backend = new BackendI;
136
Ice::LocatorPtr locator = new ServerLocatorI(backend, adapter);
137
adapter->add(locator, communicator()->stringToIdentity("locator"));
138
adapter->addServantLocator(new ServantLocatorI(backend), "");
140
communicator()->waitForShutdown();