switch to replicator/replicant and add new node types

This commit is contained in:
Stephen Birarda 2017-06-12 10:58:34 -07:00
parent a085a55107
commit 8ebf1db9a8
8 changed files with 42 additions and 44 deletions

View file

@ -94,11 +94,11 @@ AudioMixer::AudioMixer(ReceivedMessage& message) :
packetReceiver.registerListener(PacketType::KillAvatar, this, "handleKillAvatarPacket");
packetReceiver.registerListenerForTypes({
PacketType::MirroredMicrophoneAudioNoEcho,
PacketType::MirroredMicrophoneAudioWithEcho,
PacketType::MirroredInjectAudio,
PacketType::MirroredSilentAudioFrame,
PacketType::MirroredNegotiateAudioFormat
PacketType::ReplicatedMicrophoneAudioNoEcho,
PacketType::ReplicatedMicrophoneAudioWithEcho,
PacketType::ReplicatedInjectAudio,
PacketType::ReplicatedSilentAudioFrame,
PacketType::ReplicatedNegotiateAudioFormat
},
this, "queueMirroredAudioPacket"
);
@ -114,8 +114,8 @@ void AudioMixer::queueAudioPacket(QSharedPointer<ReceivedMessage> message, Share
getOrCreateClientData(node.data())->queuePacket(message, node);
}
void AudioMixer::queueMirroredAudioPacket(QSharedPointer<ReceivedMessage> message) {
// make sure we have a mirrored node for the original sender of the packet
void AudioMixer::queueReplicatedAudioPacket(QSharedPointer<ReceivedMessage> message) {
// make sure we have a replicated node for the original sender of the packet
auto nodeList = DependencyManager::get<NodeList>();
QUuid nodeID = QUuid::fromRfc4122(message->readWithoutCopy(NUM_BYTES_RFC4122_UUID));

View file

@ -63,7 +63,7 @@ private slots:
void handleKillAvatarPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
void queueAudioPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
void queueMirroredAudioPacket(QSharedPointer<ReceivedMessage> packet);
void queueReplicatedAudioPacket(QSharedPointer<ReceivedMessage> packet);
void removeHRTFsForFinishedInjector(const QUuid& streamID);
void start();

View file

@ -69,21 +69,21 @@ void AudioMixerClientData::processPackets() {
case PacketType::InjectAudio:
case PacketType::AudioStreamStats:
case PacketType::SilentAudioFrame:
case PacketType::MirroredMicrophoneAudioNoEcho:
case PacketType::MirroredMicrophoneAudioWithEcho:
case PacketType::MirroredInjectAudio:
case PacketType::MirroredSilentAudioFrame: {
case PacketType::ReplicatedMicrophoneAudioNoEcho:
case PacketType::ReplicatedMicrophoneAudioWithEcho:
case PacketType::ReplicatedInjectAudio:
case PacketType::ReplicatedSilentAudioFrame: {
QMutexLocker lock(&getMutex());
parseData(*packet);
potentiallyMirrorPacket(*packet);
replicatePacket(*packet);
break;
}
case PacketType::NegotiateAudioFormat:
case PacketType::MirroredNegotiateAudioFormat:
case PacketType::ReplicatedNegotiateAudioFormat:
negotiateAudioFormat(*packet, node);
potentiallyMirrorPacket(*packet);
replicatePacket(*packet);
break;
case PacketType::RequestsDomainListData:
parseRequestsDomainListData(*packet);
@ -106,26 +106,26 @@ void AudioMixerClientData::processPackets() {
assert(_packetQueue.empty());
}
void AudioMixerClientData::potentiallyMirrorPacket(ReceivedMessage& message) {
void AudioMixerClientData::replicatePacket(ReceivedMessage& message) {
auto nodeList = DependencyManager::get<NodeList>();
if (!nodeList->getMirrorSocket().isNull()) {
PacketType mirroredType;
if (message.getType() == PacketType::MicrophoneAudioNoEcho) {
mirroredType = PacketType::MirroredMicrophoneAudioNoEcho;
mirroredType = PacketType::ReplicatedMicrophoneAudioNoEcho;
} else if (message.getType() == PacketType::MicrophoneAudioWithEcho) {
mirroredType = PacketType::MirroredMicrophoneAudioNoEcho;
mirroredType = PacketType::ReplicatedMicrophoneAudioNoEcho;
} else if (message.getType() == PacketType::InjectAudio) {
mirroredType = PacketType::MirroredInjectAudio;
mirroredType = PacketType::ReplicatedInjectAudio;
} else if (message.getType() == PacketType::SilentAudioFrame) {
mirroredType = PacketType::MirroredSilentAudioFrame;
mirroredType = PacketType::ReplicatedSilentAudioFrame;
} else if (message.getType() == PacketType::NegotiateAudioFormat) {
mirroredType = PacketType::MirroredNegotiateAudioFormat;
mirroredType = PacketType::ReplicatedNegotiateAudioFormat;
} else {
return;
}
// construct an NLPacket to send to the mirror that has the contents of the received packet
// construct an NLPacket to send to the replicant that has the contents of the received packet
auto packet = NLPacket::create(mirroredType, message.getSize() + NUM_BYTES_RFC4122_UUID);
packet->write(message.getSourceID().toRfc4122());
packet->write(message.getMessage());
@ -225,11 +225,11 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) {
bool isMicStream = false;
if (packetType == PacketType::MicrophoneAudioWithEcho
|| packetType == PacketType::MirroredMicrophoneAudioWithEcho
|| packetType == PacketType::ReplicatedMicrophoneAudioWithEcho
|| packetType == PacketType::MicrophoneAudioNoEcho
|| packetType == PacketType::MirroredMicrophoneAudioNoEcho
|| packetType == PacketType::ReplicatedMicrophoneAudioNoEcho
|| packetType == PacketType::SilentAudioFrame
|| packetType == PacketType::MirroredSilentAudioFrame) {
|| packetType == PacketType::ReplicatedSilentAudioFrame) {
QWriteLocker writeLocker { &_streamsLock };
@ -265,7 +265,7 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) {
isMicStream = true;
} else if (packetType == PacketType::InjectAudio
|| packetType == PacketType::MirroredInjectAudio) {
|| packetType == PacketType::ReplicatedInjectAudio) {
// this is injected audio
// grab the stream identifier for this injected audio
message.seek(sizeof(quint16));
@ -303,10 +303,10 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) {
// seek to the beginning of the packet so that the next reader is in the right spot
message.seek(0);
if (packetType == PacketType::MirroredMicrophoneAudioWithEcho
|| packetType == PacketType::MirroredMicrophoneAudioNoEcho
|| packetType == PacketType::MirroredSilentAudioFrame
|| packetType == PacketType::MirroredInjectAudio) {
if (packetType == PacketType::ReplicatedMicrophoneAudioWithEcho
|| packetType == PacketType::ReplicatedMicrophoneAudioNoEcho
|| packetType == PacketType::ReplicatedSilentAudioFrame
|| packetType == PacketType::ReplicatedInjectAudio) {
message.seek(NUM_BYTES_RFC4122_UUID);
}

View file

@ -124,7 +124,7 @@ private:
QReadWriteLock _streamsLock;
AudioStreamMap _audioStreams; // microphone stream from avatar is stored under key of null UUID
void potentiallyMirrorPacket(ReceivedMessage& packet);
void replicatePacket(ReceivedMessage& packet);
using IgnoreZone = AABox;
class IgnoreZoneMemo {

View file

@ -281,9 +281,6 @@ public:
void setMirrorSocket(const HifiSockAddr& mirrorSocket) { _mirrorSocket = mirrorSocket; }
const HifiSockAddr& getMirrorSocket() { return _mirrorSocket; }
void setMasterSocket(const HifiSockAddr& masterSocket) { _masterSocket = masterSocket; }
const HifiSockAddr& getMasterSocket() { return _masterSocket; }
public slots:
void reset();
void eraseAllNodes();
@ -394,7 +391,6 @@ protected:
HifiSockAddr _mirrorSocket;
HifiSockAddr _masterSocket;
private slots:
void flagTimeForConnectionStep(ConnectionStep connectionStep, quint64 timestamp);

View file

@ -25,6 +25,8 @@ namespace NodeType {
const NodeType_t AssetServer = 'A';
const NodeType_t MessagesMixer = 'm';
const NodeType_t EntityScriptServer = 'S';
const NodeType_t ReplicantAudioMixer = 'a';
const NodeType_t ReplicantAvatarMixer = 'w';
const NodeType_t Unassigned = 1;
void init();

View file

@ -40,9 +40,9 @@ const QSet<PacketType> NON_SOURCED_PACKETS = QSet<PacketType>()
<< PacketType::ICEServerHeartbeatACK << PacketType::ICEPing << PacketType::ICEPingReply
<< PacketType::ICEServerHeartbeatDenied << PacketType::AssignmentClientStatus << PacketType::StopNode
<< PacketType::DomainServerRemovedNode << PacketType::UsernameFromIDReply << PacketType::OctreeFileReplacement
<< PacketType::MirroredMicrophoneAudioNoEcho << PacketType::MirroredMicrophoneAudioWithEcho
<< PacketType::MirroredInjectAudio << PacketType::MirroredSilentAudioFrame
<< PacketType::MirroredNegotiateAudioFormat;
<< PacketType::ReplicatedMicrophoneAudioNoEcho << PacketType::ReplicatedMicrophoneAudioWithEcho
<< PacketType::ReplicatedInjectAudio << PacketType::ReplicatedSilentAudioFrame
<< PacketType::ReplicatedNegotiateAudioFormat;
PacketVersion versionForPacketType(PacketType packetType) {
switch (packetType) {

View file

@ -115,12 +115,12 @@ public:
AdjustAvatarSorting,
OctreeFileReplacement,
CollisionEventChanges,
MirroredNegotiateAudioFormat,
MirroredMicrophoneAudioNoEcho,
MirroredMicrophoneAudioWithEcho,
MirroredInjectAudio,
MirroredSilentAudioFrame,
LAST_PACKET_TYPE = MirroredSilentAudioFrame,
ReplicatedNegotiateAudioFormat,
ReplicatedMicrophoneAudioNoEcho,
ReplicatedMicrophoneAudioWithEcho,
ReplicatedInjectAudio,
ReplicatedSilentAudioFrame,
LAST_PACKET_TYPE = ReplicatedSilentAudioFrame,
};
};