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
|
//
// Copyright (c) ZeroC, Inc. All rights reserved.
//
#include <IceUtil/IceUtil.h>
#include <Ice/Ice.h>
#include <TestI.h>
using namespace std;
using namespace Ice;
void
TestIntfI::ping(ICE_IN(Test::PingReplyPrxPtr) reply, const Current&)
{
try
{
reply->reply();
}
catch(const Ice::Exception&)
{
assert(false);
}
}
void
TestIntfI::sendByteSeq(ICE_IN(Test::ByteSeq), ICE_IN(Test::PingReplyPrxPtr) reply, const Current&)
{
try
{
reply->reply();
}
catch(const Ice::Exception&)
{
assert(false);
}
}
void
TestIntfI::pingBiDir(ICE_IN(Ice::Identity) id, const Ice::Current& current)
{
try
{
//
// Ensure sending too much data doesn't cause the UDP connection
// to be closed.
//
try
{
Test::ByteSeq seq;
seq.resize(32 * 1024);
ICE_UNCHECKED_CAST(Test::TestIntfPrx, current.con->createProxy(id))->sendByteSeq(seq, 0);
}
catch(const DatagramLimitException&)
{
// Expected.
}
//
// Send the reply through the incoming connection.
//
#ifdef ICE_CPP11_MAPPING
Ice::uncheckedCast<Test::PingReplyPrx>(current.con->createProxy(id))->replyAsync();
#else
Test::PingReplyPrx::uncheckedCast(current.con->createProxy(id))->begin_reply();
#endif
}
catch(const Ice::Exception& ex)
{
cerr << ex << endl;
assert(false);
}
}
void
TestIntfI::shutdown(const Current& current)
{
current.adapter->getCommunicator()->shutdown();
}
|