mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 12:54:30 +02:00
Merge branch 'atp' of https://github.com/birarda/hifi into protocol
This commit is contained in:
commit
1db1180869
3 changed files with 34 additions and 61 deletions
|
@ -1,55 +0,0 @@
|
||||||
//
|
|
||||||
// OctreeServerDatagramProcessor.cpp
|
|
||||||
// assignment-client/src
|
|
||||||
//
|
|
||||||
// Created by Brad Hefta-Gaub on 2014-09-05
|
|
||||||
// Copyright 2014 High Fidelity, Inc.
|
|
||||||
//
|
|
||||||
// Distributed under the Apache License, Version 2.0.
|
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
||||||
//
|
|
||||||
|
|
||||||
#include <QDebug>
|
|
||||||
|
|
||||||
#include <HifiSockAddr.h>
|
|
||||||
#include <NodeList.h>
|
|
||||||
#include <udt/PacketHeaders.h>
|
|
||||||
#include <SharedUtil.h>
|
|
||||||
|
|
||||||
#include "OctreeServerDatagramProcessor.h"
|
|
||||||
|
|
||||||
OctreeServerDatagramProcessor::OctreeServerDatagramProcessor(QUdpSocket& nodeSocket, QThread* previousNodeSocketThread) :
|
|
||||||
_nodeSocket(nodeSocket),
|
|
||||||
_previousNodeSocketThread(previousNodeSocketThread)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
OctreeServerDatagramProcessor::~OctreeServerDatagramProcessor() {
|
|
||||||
// return the node socket to its previous thread
|
|
||||||
_nodeSocket.moveToThread(_previousNodeSocketThread);
|
|
||||||
}
|
|
||||||
|
|
||||||
void OctreeServerDatagramProcessor::readPendingDatagrams() {
|
|
||||||
|
|
||||||
HifiSockAddr senderSockAddr;
|
|
||||||
static QByteArray incomingPacket;
|
|
||||||
|
|
||||||
// read everything that is available
|
|
||||||
while (_nodeSocket.hasPendingDatagrams()) {
|
|
||||||
incomingPacket.resize(_nodeSocket.pendingDatagramSize());
|
|
||||||
|
|
||||||
// just get this packet off the stack
|
|
||||||
_nodeSocket.readDatagram(incomingPacket.data(), incomingPacket.size(),
|
|
||||||
senderSockAddr.getAddressPointer(), senderSockAddr.getPortPointer());
|
|
||||||
|
|
||||||
PacketType::Value packetType = packetTypeForPacket(incomingPacket);
|
|
||||||
if (packetType == PacketType::Ping) {
|
|
||||||
DependencyManager::get<NodeList>()->processNodeData(senderSockAddr, incomingPacket);
|
|
||||||
return; // don't emit
|
|
||||||
}
|
|
||||||
|
|
||||||
// emit the signal to tell AudioMixer it needs to process a packet
|
|
||||||
emit packetRequiresProcessing(incomingPacket, senderSockAddr);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -30,7 +30,11 @@ qint64 NLPacket::localHeaderSize() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<NLPacket> NLPacket::create(PacketType::Value type, qint64 size) {
|
std::unique_ptr<NLPacket> NLPacket::create(PacketType::Value type, qint64 size) {
|
||||||
return std::unique_ptr<NLPacket>(new NLPacket(type, size));
|
auto packet = std::unique_ptr<NLPacket>(new NLPacket(type, size));
|
||||||
|
|
||||||
|
packet->open(QIODevice::WriteOnly);
|
||||||
|
|
||||||
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<NLPacket> NLPacket::fromReceivedPacket(std::unique_ptr<char> data, qint64 size,
|
std::unique_ptr<NLPacket> NLPacket::fromReceivedPacket(std::unique_ptr<char> data, qint64 size,
|
||||||
|
@ -42,12 +46,22 @@ std::unique_ptr<NLPacket> NLPacket::fromReceivedPacket(std::unique_ptr<char> dat
|
||||||
Q_ASSERT(size >= 0);
|
Q_ASSERT(size >= 0);
|
||||||
|
|
||||||
// allocate memory
|
// allocate memory
|
||||||
return std::unique_ptr<NLPacket>(new NLPacket(std::move(data), size, senderSockAddr));
|
auto packet = std::unique_ptr<NLPacket>(new NLPacket(std::move(data), size, senderSockAddr));
|
||||||
|
|
||||||
|
packet->open(QIODevice::ReadOnly);
|
||||||
|
|
||||||
|
return packet;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<NLPacket> NLPacket::createCopy(const NLPacket& other) {
|
std::unique_ptr<NLPacket> NLPacket::createCopy(const NLPacket& other) {
|
||||||
return std::unique_ptr<NLPacket>(new NLPacket(other));
|
auto packet = std::unique_ptr<NLPacket>(new NLPacket(other));
|
||||||
|
|
||||||
|
if (other.isOpen()) {
|
||||||
|
packet->open(other.openMode());
|
||||||
|
}
|
||||||
|
|
||||||
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
NLPacket::NLPacket(PacketType::Value type, qint64 size) : Packet(type, localHeaderSize(type) + size) {
|
NLPacket::NLPacket(PacketType::Value type, qint64 size) : Packet(type, localHeaderSize(type) + size) {
|
||||||
|
|
|
@ -22,7 +22,11 @@ qint64 Packet::maxPayloadSize(PacketType::Value type) {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<Packet> Packet::create(PacketType::Value type, qint64 size) {
|
std::unique_ptr<Packet> Packet::create(PacketType::Value type, qint64 size) {
|
||||||
return std::unique_ptr<Packet>(new Packet(type, size));
|
auto packet = std::unique_ptr<Packet>(new Packet(type, size));
|
||||||
|
|
||||||
|
packet->open(QIODevice::WriteOnly);
|
||||||
|
|
||||||
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<Packet> Packet::fromReceivedPacket(std::unique_ptr<char> data, qint64 size, const HifiSockAddr& senderSockAddr) {
|
std::unique_ptr<Packet> Packet::fromReceivedPacket(std::unique_ptr<char> data, qint64 size, const HifiSockAddr& senderSockAddr) {
|
||||||
|
@ -30,11 +34,21 @@ std::unique_ptr<Packet> Packet::fromReceivedPacket(std::unique_ptr<char> data, q
|
||||||
Q_ASSERT(size >= 0);
|
Q_ASSERT(size >= 0);
|
||||||
|
|
||||||
// allocate memory
|
// allocate memory
|
||||||
return std::unique_ptr<Packet>(new Packet(std::move(data), size, senderSockAddr));
|
auto packet = std::unique_ptr<Packet>(new Packet(std::move(data), size, senderSockAddr));
|
||||||
|
|
||||||
|
packet->open(QIODevice::ReadOnly);
|
||||||
|
|
||||||
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<Packet> Packet::createCopy(const Packet& other) {
|
std::unique_ptr<Packet> Packet::createCopy(const Packet& other) {
|
||||||
return std::unique_ptr<Packet>(new Packet(other));
|
auto packet = std::unique_ptr<Packet>(new Packet(other));
|
||||||
|
|
||||||
|
if (other.isOpen()) {
|
||||||
|
packet->open(other.openMode());
|
||||||
|
}
|
||||||
|
|
||||||
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
qint64 Packet::totalHeadersSize() const {
|
qint64 Packet::totalHeadersSize() const {
|
||||||
|
|
Loading…
Reference in a new issue