All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PayloadEvicter.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Streaming.h"
7 
8 namespace Eegeo
9 {
10  namespace Streaming
11  {
13  {
14  private:
15  QuadTreeCube *m_pQuadTreeCube;
16  PayloadPool *m_pPayloadPool;
17 
18  int m_numOfPlaceholderPayloadsEvicted;
19  int m_totalPlaceholderPayloadsEvicted;
20 
21  int m_numOfLatePayloadsEvicted;
22  int m_totalLatePayloadsEvicted;
23 
24  public:
25  int NumOfPlaceholderPayloadsEvicted() { return m_numOfPlaceholderPayloadsEvicted; }
26  int TotalPlaceholderPayloadsEvicted() { return m_totalPlaceholderPayloadsEvicted; }
27 
28  int NumOfLatePayloadsEvicted() { return m_numOfLatePayloadsEvicted; }
29  int TotalLatePayloadsEvicted() { return m_totalLatePayloadsEvicted; }
30 
31  PayloadEvicter(QuadTreeCube *pQuadTreeCube,
32  PayloadPool *pPayloadPool):
33  m_pQuadTreeCube(pQuadTreeCube),
34  m_pPayloadPool(pPayloadPool),
35  m_numOfPlaceholderPayloadsEvicted(0),
36  m_totalPlaceholderPayloadsEvicted(0),
37  m_numOfLatePayloadsEvicted(0),
38  m_totalLatePayloadsEvicted(0)
39  {}
40 
41  void EvictPayloads(int updateCount);
42  void EvictAllPayloads();
43 
44  private:
45  uint EvictPayloads(QuadTreeNode *pNode, uint visibleSlotsAbove, int updateCount);
46  void EvictAllPayloads(QuadTreeNode *pNode);
47  };
48  }
49 }