mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 20:36:38 +02:00
call right method from packetReceiver
This commit is contained in:
parent
e749b9727f
commit
55eb24e69e
1 changed files with 19 additions and 13 deletions
|
@ -218,24 +218,32 @@ void PacketReceiver::processDatagrams() {
|
||||||
auto listener = it.value();
|
auto listener = it.value();
|
||||||
|
|
||||||
if (listener.first) {
|
if (listener.first) {
|
||||||
|
|
||||||
|
bool success = false;
|
||||||
|
|
||||||
if (matchingNode) {
|
if (matchingNode) {
|
||||||
emit dataReceived(matchingNode->getType(), packet->getSizeWithHeader());
|
emit dataReceived(matchingNode->getType(), packet->getSizeWithHeader());
|
||||||
|
QMetaMethod metaMethod = listener.second;
|
||||||
|
|
||||||
|
static const QByteArray SHARED_NODE_NORMALIZED = QMetaObject::normalizedType("QSharedPointer<Node>");
|
||||||
|
|
||||||
|
if (metaMethod.parameterTypes().contains(SHARED_NODE_NORMALIZED)) {
|
||||||
|
success = metaMethod.invoke(listener.first,
|
||||||
|
Q_ARG(QSharedPointer<NLPacket>, QSharedPointer<NLPacket>(packet.release())),
|
||||||
|
Q_ARG(SharedNodePointer, matchingNode));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
success = metaMethod.invoke(listener.first,
|
||||||
|
Q_ARG(QSharedPointer<NLPacket>, QSharedPointer<NLPacket>(packet.release())));
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
emit dataReceived(NodeType::Unassigned, packet->getSizeWithHeader());
|
emit dataReceived(NodeType::Unassigned, packet->getSizeWithHeader());
|
||||||
}
|
|
||||||
|
|
||||||
bool success = false;
|
|
||||||
|
|
||||||
if (matchingNode) {
|
|
||||||
success = listener.second.invoke(listener.first,
|
success = listener.second.invoke(listener.first,
|
||||||
Q_ARG(QSharedPointer<NLPacket>, QSharedPointer<NLPacket>(packet.release())));
|
Q_ARG(QSharedPointer<NLPacket>, QSharedPointer<NLPacket>(packet.release())));
|
||||||
} else {
|
|
||||||
success = listener.second.invoke(listener.first,
|
|
||||||
Q_ARG(QSharedPointer<NLPacket>, QSharedPointer<NLPacket>(packet.release())),
|
|
||||||
Q_ARG(SharedNodePointer, matchingNode));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
qDebug() << "Error delivering packet " << nameForPacketType(packet->getType()) << " to listener: "
|
qDebug() << "Error delivering packet " << nameForPacketType(packet->getType()) << " to listener: "
|
||||||
<< listener.first->objectName() << "::" << listener.second.name();
|
<< listener.first->objectName() << "::" << listener.second.name();
|
||||||
|
@ -247,13 +255,11 @@ void PacketReceiver::processDatagrams() {
|
||||||
<< "has been destroyed - removing mapping.";
|
<< "has been destroyed - removing mapping.";
|
||||||
_packetListenerMap.erase(it);
|
_packetListenerMap.erase(it);
|
||||||
}
|
}
|
||||||
|
|
||||||
_packetListenerLock.unlock();
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
_packetListenerLock.unlock();
|
|
||||||
qDebug() << "No listener found for packet type " << nameForPacketType(packet->getType());
|
qDebug() << "No listener found for packet type " << nameForPacketType(packet->getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_packetListenerLock.unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue