1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
//
// Copyright (c) ZeroC, Inc. All rights reserved.
//
#include <Ice/Ice.h>
#include <TestHelper.h>
#include <TestI.h>
using namespace std;
class Server : public Test::TestHelper
{
public:
void run(int, char**);
};
void
Server::run(int argc, char** argv)
{
Ice::PropertiesPtr properties = createTestProperties(argc, argv);
properties->setProperty("Ice.Warn.Connections", "0");
properties->setProperty("Ice.UDP.SndSize", "16384");
properties->setProperty("Ice.UDP.RcvSize", "16384");
Ice::CommunicatorHolder communicator = initialize(argc, argv, properties);
int num = argc == 2 ? atoi(argv[1]) : 0;
communicator->getProperties()->setProperty("ControlAdapter.Endpoints", getTestEndpoint(num, "tcp"));
Ice::ObjectAdapterPtr adapter = communicator->createObjectAdapter("ControlAdapter");
adapter->add(ICE_MAKE_SHARED(TestIntfI), Ice::stringToIdentity("control"));
adapter->activate();
if(num == 0)
{
communicator->getProperties()->setProperty("TestAdapter.Endpoints", getTestEndpoint(num, "udp"));
Ice::ObjectAdapterPtr adapter2 = communicator->createObjectAdapter("TestAdapter");
adapter2->add(ICE_MAKE_SHARED(TestIntfI), Ice::stringToIdentity("test"));
adapter2->activate();
}
ostringstream endpoint;
if(communicator->getProperties()->getProperty("Ice.IPv6") == "1")
{
endpoint << "udp -h \"ff15::1:1\" -p " << getTestPort(10);
#if defined(__APPLE__) || defined(_WIN32)
endpoint << " --interface \"::1\""; // Use loopback to prevent other machines to answer.
#endif
}
else
{
endpoint << "udp -h 239.255.1.1 -p " << getTestPort(10);
#if defined(__APPLE__) || defined(_WIN32)
endpoint << " --interface 127.0.0.1"; // Use loopback to prevent other machines to answer.
#endif
}
communicator->getProperties()->setProperty("McastTestAdapter.Endpoints", endpoint.str());
try
{
Ice::ObjectAdapterPtr mcastAdapter = communicator->createObjectAdapter("McastTestAdapter");
mcastAdapter->add(ICE_MAKE_SHARED(TestIntfI), Ice::stringToIdentity("test"));
mcastAdapter->activate();
}
catch(const Ice::SocketException&)
{
// Multicast IPv6 not supported on the platform. This occurs for example
// on AIX PVP clould VMs.
if(communicator->getProperties()->getProperty("Ice.IPv6") == "1")
{
cout << "McastTestAdapter ready" << endl;
}
else
{
throw;
}
}
serverReady();
communicator->waitForShutdown();
}
DEFINE_TEST(Server)
|