Overte C++ Documentation
OctreePacketProcessor.h
1 //
2 // OctreePacketProcessor.h
3 // interface/src/octree
4 //
5 // Created by Brad Hefta-Gaub on 8/12/13.
6 // Copyright 2013 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #ifndef hifi_OctreePacketProcessor_h
13 #define hifi_OctreePacketProcessor_h
14 
15 #include <QtCore/QSharedPointer>
16 
17 #include <ReceivedPacketProcessor.h>
18 #include <ReceivedMessage.h>
19 
20 #include "OctreeSceneStats.h"
21 #include "SafeLanding.h"
22 
26  Q_OBJECT
27 public:
30 
31  NodeToOctreeSceneStats* getOctreeSceneStats() { return &_octreeServerSceneStats; }
32  std::atomic<uint32_t>& getFullSceneReceivedCounter() { return _fullSceneReceivedCounter; }
33 
34  void startSafeLanding();
35  void updateSafeLanding();
36  void stopSafeLanding();
37  void resetSafeLanding();
38  bool safeLandingIsActive() const;
39  bool safeLandingIsComplete() const;
40 
41  float domainLoadingProgress() const { return _safeLanding->loadingProgressPercentage(); }
42 
43 signals:
44  void packetVersionMismatch();
45 
46 protected:
47  virtual void processPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer sendingNode) override;
48 
49 private slots:
50  void handleOctreePacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
51 
52 private:
53  int processOctreeStats(ReceivedMessage& message, SharedNodePointer sendingNode);
54  void trackIncomingOctreePacket(ReceivedMessage& message, SharedNodePointer sendingNode, bool wasStatsPacket);
55 
56  NodeToOctreeSceneStats _octreeServerSceneStats;
57  std::atomic<uint32_t> _fullSceneReceivedCounter { 0 }; // how many times have we received a full-scene octree stats packet
58 
59  OCTREE_PACKET_SEQUENCE _safeLandingSequenceStart { SafeLanding::INVALID_SEQUENCE };
60  std::unique_ptr<SafeLanding> _safeLanding;
61 };
62 #endif // hifi_OctreePacketProcessor_h
Definition: OctreeSceneStats.h:274
Definition: OctreePacketProcessor.h:25
virtual void processPacket(QSharedPointer< ReceivedMessage > message, SharedNodePointer sendingNode) override
Definition: OctreePacketProcessor.cpp:42
Generalized threaded processor for handling received inbound packets.
Definition: ReceivedPacketProcessor.h:25