本文整理汇总了C++中ice::AsyncResultPtr::waitForCompleted方法的典型用法代码示例。如果您正苦于以下问题:C++ AsyncResultPtr::waitForCompleted方法的具体用法?C++ AsyncResultPtr::waitForCompleted怎么用?C++ AsyncResultPtr::waitForCompleted使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ice::AsyncResultPtr
的用法示例。
在下文中一共展示了AsyncResultPtr::waitForCompleted方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getTestEndpoint
//.........这里部分代码省略.........
to->sleepAsync(500,
[cb]()
{
cb->responseEx();
},
[cb](exception_ptr err)
{
try
{
rethrow_exception(err);
}
catch(const Ice::Exception& ex)
{
cb->exceptionEx(ex);
}
});
cb->check();
}
testController->holdAdapter();
Ice::ByteSeq seq;
seq.resize(1024); // Make sure the request doesn't compress too well.
for(Ice::ByteSeq::iterator q = seq.begin(); q != seq.end(); ++q)
{
*q = static_cast<Ice::Byte>(IceUtilInternal::random(255));
}
vector<shared_ptr<promise<void>>> completed;
while(true)
{
auto s = make_shared<promise<bool>>();
auto fs = s->get_future();
auto c = make_shared<promise<void>>();
p->opWithPayloadAsync(seq,
[=]()
{
c->set_value();
},
[=](exception_ptr)
{
c->set_value();
},
[=](bool sent)
{
s->set_value(sent);
});
completed.push_back(c);
if(fs.wait_for(chrono::milliseconds(0)) != future_status::ready || !fs.get())
{
break;
}
}
testController->resumeAdapter();
for(auto& c : completed)
{
c->get_future().get();
}
#else
Test::Callback_TestIntf_opPtr callback = Test::newCallback_TestIntf_op(cb,
&Callback::response,
&Callback::exception);
p->begin_op(callback);
cb->check();
Test::TestIntfPrx i = p->ice_adapterId("dummy");
i->begin_op(callback);
cb->check();
{
//
// Expect InvocationTimeoutException.
//
Test::TestIntfPrx to = p->ice_invocationTimeout(250);
to->begin_sleep(500, Test::newCallback_TestIntf_sleep(cb, &Callback::responseEx, &Callback::exceptionEx));
cb->check();
}
testController->holdAdapter();
Test::Callback_TestIntf_opWithPayloadPtr callback2 =
Test::newCallback_TestIntf_opWithPayload(cb, &Callback::payload, &Callback::ignoreEx, &Callback::sent);
Ice::ByteSeq seq;
seq.resize(1024); // Make sure the request doesn't compress too well.
for(Ice::ByteSeq::iterator q = seq.begin(); q != seq.end(); ++q)
{
*q = static_cast<Ice::Byte>(IceUtilInternal::random(255));
}
Ice::AsyncResultPtr result;
while((result = p->begin_opWithPayload(seq, callback2))->sentSynchronously());
testController->resumeAdapter();
result->waitForCompleted();
#endif
}
cout << "ok" << endl;
p->shutdown();
}
示例2: test
//.........这里部分代码省略.........
test(communicator->stringToProxy("test")->ice_locatorCacheTimeout(99)->ice_getLocatorCacheTimeout() == 99);
cout << "ok" << endl;
cout << "testing proxy from server... " << flush;
obj = TestIntfPrx::checkedCast(communicator->stringToProxy("[email protected]"));
HelloPrx hello = obj->getHello();
test(hello->ice_getAdapterId() == "TestAdapter");
hello->sayHello();
hello = obj->getReplicatedHello();
test(hello->ice_getAdapterId() == "ReplicatedAdapter");
hello->sayHello();
cout << "ok" << endl;
cout << "testing locator request queuing... " << flush;
hello = obj->getReplicatedHello()->ice_locatorCacheTimeout(0)->ice_connectionCached(false);
count = locator->getRequestCount();
hello->ice_ping();
test(++count == locator->getRequestCount());
int i;
list<Ice::AsyncResultPtr> results;
AMICallbackPtr cb = new AMICallback;
for(i = 0; i < 1000; i++)
{
Ice::AsyncResultPtr result = hello->begin_sayHello(
newCallback_Hello_sayHello(cb, &AMICallback::response1, &AMICallback::exception1));
results.push_back(result);
}
while(!results.empty())
{
Ice::AsyncResultPtr result = results.front();
results.pop_front();
result->waitForCompleted();
}
test(locator->getRequestCount() > count && locator->getRequestCount() < count + 999);
if(locator->getRequestCount() > count + 800)
{
cout << "queuing = " << locator->getRequestCount() - count;
}
count = locator->getRequestCount();
hello = hello->ice_adapterId("unknown");
for(i = 0; i < 1000; i++)
{
Ice::AsyncResultPtr result = hello->begin_sayHello(
newCallback_Hello_sayHello(cb, &AMICallback::response2, &AMICallback::exception2));
results.push_back(result);
}
while(!results.empty())
{
Ice::AsyncResultPtr result = results.front();
results.pop_front();
result->waitForCompleted();
}
// Take into account the retries.
test(locator->getRequestCount() > count && locator->getRequestCount() < count + 1999);
if(locator->getRequestCount() > count + 800)
{
cout << "queuing = " << locator->getRequestCount() - count;
}
cout << "ok" << endl;
cout << "testing adapter locator cache... " << flush;
try
{
communicator->stringToProxy("[email protected]")->ice_ping();
示例3: getTestEndpoint
//.........这里部分代码省略.........
if(value > 1000000)
{
// Don't continue, it's possible that out-of-order dispatch doesn't occur
// after 100000 iterations and we don't want the test to last for too long
// when this occurs.
break;
}
}
test(value > 100000 || !cond->value());
completed->get_future().get();
#else
Ice::AsyncResultPtr result;
while(cond->value())
{
result = hold->begin_set(value + 1,
IceUtilInternal::random(5),
newCallback_Hold_set(new SetCB(cond, value), &SetCB::response, &SetCB::exception));
++value;
if(value % 100 == 0)
{
result->waitForSent();
}
if(value > 1000000)
{
// Don't continue, it's possible that out-of-order dispatch doesn't occur
// after 100000 iterations and we don't want the test to last for too long
// when this occurs.
break;
}
}
test(value > 100000 || !cond->value());
result->waitForCompleted();
#endif
}
cout << "ok" << endl;
cout << "testing with serialize mode... " << flush;
{
ConditionPtr cond = new Condition(true);
int value = 0;
#ifdef ICE_CPP11_MAPPING
shared_ptr<promise<void>> completed;
while(value < 3000 && cond->value())
{
completed = make_shared<promise<void>>();
promise<bool> sent;
holdSerialized->set_async(
value + 1,
IceUtilInternal::random(1),
[cond, expected = value, completed](int value)
{
if(value != expected)
{
cond->set(false);
}
completed->set_value();
},
[completed](exception_ptr)
{
completed->set_value();
},
[&sent](bool sentSynchronously)
{
sent.set_value(sentSynchronously);