call right method from packetReceiver

This commit is contained in:
Stephen Birarda 2015-07-14 15:41:31 -07:00
parent e749b9727f
commit 55eb24e69e

View file

@ -219,21 +219,29 @@ void PacketReceiver::processDatagrams() {
if (listener.first) { if (listener.first) {
if (matchingNode) {
emit dataReceived(matchingNode->getType(), packet->getSizeWithHeader());
} else {
emit dataReceived(NodeType::Unassigned, packet->getSizeWithHeader());
}
bool success = false; bool success = false;
if (matchingNode) { if (matchingNode) {
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 {
emit dataReceived(NodeType::Unassigned, packet->getSizeWithHeader());
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) {
@ -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();
} }
} }
} }