1 // **********************************************************************
3 // Copyright (c) 2003-2011 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 <IceUtil/DisableWarnings.h>
13 #include <Configuration.h>
16 #include <Ice/Locator.h>
17 #include <Ice/Router.h>
21 class LocatorI
: public Ice::Locator
26 findAdapterById_async(const Ice::AMD_Locator_findAdapterByIdPtr
& response
, const string
& adapter
,
27 const Ice::Current
& current
) const
29 _controller
->checkCallPause(current
);
30 Ice::CommunicatorPtr communicator
= current
.adapter
->getCommunicator();
31 response
->ice_response(current
.adapter
->createDirectProxy(communicator
->stringToIdentity("dummy")));
35 findObjectById_async(const Ice::AMD_Locator_findObjectByIdPtr
& response
, const Ice::Identity
& id
,
36 const Ice::Current
& current
) const
38 _controller
->checkCallPause(current
);
39 Ice::CommunicatorPtr communicator
= current
.adapter
->getCommunicator();
40 response
->ice_response(current
.adapter
->createDirectProxy(id
));
43 virtual Ice::LocatorRegistryPrx
44 getRegistry(const Ice::Current
&) const
49 LocatorI(const BackgroundControllerIPtr
& controller
) : _controller(controller
)
55 BackgroundControllerIPtr _controller
;
58 class RouterI
: public Ice::Router
62 virtual Ice::ObjectPrx
63 getClientProxy(const Ice::Current
& current
) const
65 _controller
->checkCallPause(current
);
69 virtual Ice::ObjectPrx
70 getServerProxy(const Ice::Current
& current
) const
72 _controller
->checkCallPause(current
);
77 addProxy(const Ice::ObjectPrx
&, const Ice::Current
&)
81 virtual Ice::ObjectProxySeq
82 addProxies(const Ice::ObjectProxySeq
&, const Ice::Current
&)
84 return Ice::ObjectProxySeq();
87 RouterI(const BackgroundControllerIPtr
& controller
)
89 _controller
= controller
;
94 BackgroundControllerIPtr _controller
;
99 run(int argc
, char* argv
[], const Ice::CommunicatorPtr
& communicator
)
101 communicator
->getProperties()->setProperty("TestAdapter.Endpoints", "default -p 12010");
102 communicator
->getProperties()->setProperty("ControllerAdapter.Endpoints", "tcp -p 12011");
103 communicator
->getProperties()->setProperty("ControllerAdapter.ThreadPool.Size", "1");
105 Ice::ObjectAdapterPtr adapter
= communicator
->createObjectAdapter("TestAdapter");
106 Ice::ObjectAdapterPtr adapter2
= communicator
->createObjectAdapter("ControllerAdapter");
108 PluginI
* plugin
= dynamic_cast<PluginI
*>(communicator
->getPluginManager()->getPlugin("Test").get());
110 ConfigurationPtr configuration
= plugin
->getConfiguration();
111 BackgroundControllerIPtr backgroundController
= new BackgroundControllerI(adapter
, configuration
);
113 adapter
->add(new BackgroundI(backgroundController
), communicator
->stringToIdentity("background"));
114 adapter
->add(new LocatorI(backgroundController
), communicator
->stringToIdentity("locator"));
115 adapter
->add(new RouterI(backgroundController
), communicator
->stringToIdentity("router"));
118 adapter2
->add(backgroundController
, communicator
->stringToIdentity("backgroundController"));
119 adapter2
->activate();
121 communicator
->waitForShutdown();
126 main(int argc
, char* argv
[])
129 Ice::CommunicatorPtr communicator
;
133 Ice::InitializationData initData
;
134 initData
.properties
= Ice::createProperties(argc
, argv
);
137 // This test kills connections, so we don't want warnings.
139 initData
.properties
->setProperty("Ice.Warn.Connections", "0");
142 // Setup the test transport plug-in.
144 initData
.properties
->setProperty("Ice.Plugin.Test", "TestTransport:createTestTransport");
145 string defaultProtocol
= initData
.properties
->getPropertyWithDefault("Ice.Default.Protocol", "tcp");
146 initData
.properties
->setProperty("Ice.Default.Protocol", "test-" + defaultProtocol
);
148 communicator
= Ice::initialize(argc
, argv
, initData
);
149 status
= run(argc
, argv
, communicator
);
151 catch(const Ice::Exception
& ex
)
154 status
= EXIT_FAILURE
;
161 communicator
->destroy();
163 catch(const Ice::Exception
& ex
)
166 status
= EXIT_FAILURE
;