本文整理汇总了C++中QSharedPointer::Outbound方法的典型用法代码示例。如果您正苦于以下问题:C++ QSharedPointer::Outbound方法的具体用法?C++ QSharedPointer::Outbound怎么用?C++ QSharedPointer::Outbound使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QSharedPointer
的用法示例。
在下文中一共展示了QSharedPointer::Outbound方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Inquired
void ConnectionManager::Inquired(const Response &response)
{
QSharedPointer<Edge> edge = response.GetFrom().dynamicCast<Edge>();
if(!edge) {
qWarning() << "Received an inquired from a non-Edge: " <<
response.GetFrom()->ToString();
return;
} else if(!edge->Outbound()) {
qWarning() << "We would never make an inquire call on an" <<
"incoming edge: " << response.GetFrom()->ToString();
return;
}
QByteArray brem_id = response.GetData().toByteArray();
if(brem_id.isEmpty()) {
qWarning() << "Invalid ConnectionEstablished, no id";
return;
}
Id rem_id(brem_id);
if(_local_id < rem_id) {
BindEdge(edge, rem_id);
} else if(rem_id == _local_id) {
Address addr = edge->GetRemoteAddress();
qDebug() << "Attempting to connect to ourself";
edge->Stop("Attempting to connect to ourself");
emit ConnectionAttemptFailure(addr, "Attempting to connect to ourself");
}
}
示例2: Inquire
void ConnectionManager::Inquire(const Request &request)
{
QSharedPointer<Edge> edge = request.GetFrom().dynamicCast<Edge>();
if(!edge) {
qWarning() << "Received an inquired from a non-Edge: " <<
request.GetFrom()->ToString();
request.Failed(Response::InvalidMessage, "Received on a non-Edge");
return;
} else if(edge->Outbound()) {
qWarning() << "We should never receive an inquire call on an" <<
"outbound edge: " << request.GetFrom()->ToString();
request.Failed(Response::InvalidMessage, "Received on outbound edge");
return;
}
QVariantHash data = request.GetData().toHash();
if(data.value("version").toInt() != VERSION) {
qDebug() << "Received an inquired from a different version." <<
"Expected:" << VERSION << "Found:" << data.value("version");
request.Failed(Response::InvalidInput, "Invalid version");
return;
}
QByteArray brem_id = data.value("peer_id").toByteArray();
if(brem_id.isEmpty()) {
qWarning() << "Invalid Inquire, no id";
request.Failed(Response::InvalidInput, "No remote id");
return;
}
Id rem_id(brem_id);
request.Respond(_local_id.GetByteArray());
QString saddr = data.value("persistent").toString();
Address addr = AddressFactory::GetInstance().CreateAddress(saddr);
edge->SetRemotePersistentAddress(addr);
if(_local_id < rem_id) {
BindEdge(edge, rem_id);
} else if(_local_id == rem_id) {
edge->Stop("Attempting to connect to ourself");
}
}