Overte C++ Documentation
MessagesMixer.h
1 //
2 // MessagesMixer.h
3 // assignment-client/src/messages
4 //
5 // Created by Brad hefta-Gaub on 11/16/2015.
6 // Copyright 2015 High Fidelity, Inc.
7 //
8 // The avatar mixer receives head, hand and positional data from all connected
9 // nodes, and broadcasts that data back to them, every BROADCAST_INTERVAL ms.
10 //
11 // Distributed under the Apache License, Version 2.0.
12 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
13 //
14 
15 #ifndef hifi_MessagesMixer_h
16 #define hifi_MessagesMixer_h
17 
18 #include <QtCore/QSharedPointer>
19 
20 #include <ThreadedAssignment.h>
21 
23 class MessagesMixer : public ThreadedAssignment {
24  Q_OBJECT
25 public:
26  MessagesMixer(ReceivedMessage& message);
27 
28 public slots:
29  void run() override;
30  void nodeKilled(SharedNodePointer killedNode);
31  void sendStatsPacket() override;
32 
33 private slots:
34  void handleMessages(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
35  void handleMessagesSubscribe(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
36  void handleMessagesUnsubscribe(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
37  void parseDomainServerSettings(const QJsonObject& domainSettings);
38  void domainSettingsRequestComplete();
39 
40  void startMaxMessagesProcessor();
41  void stopMaxMessagesProcessor();
42  void processMaxMessagesContainer();
43 
44 private:
45  QHash<QString, QSet<QUuid>> _channelSubscribers;
46  QHash<QUuid, int> _allSubscribers;
47 
48  const int DEFAULT_NODE_MESSAGES_PER_SECOND = 1000;
49  int _maxMessagesPerSecond { 0 };
50 
51  QTimer* _maxMessagesTimer { nullptr };
52 };
53 
54 #endif // hifi_MessagesMixer_h
Handles assignments of type MessagesMixer - distribution of avatar data to various clients.
Definition: MessagesMixer.h:23