All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PayloadPool.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Streaming.h"
7 #include "Pool.h"
8 #include "SummaryStats.h"
9 #include "Payload.h"
10 
11 namespace Eegeo
12 {
13  namespace Streaming
14  {
15  class PayloadPoolItemFactory;
16 
17  class PayloadPool : protected Eegeo::NonCopyable
18  {
19  public:
20  static const int POOL_SIZE = 1780;
21 
22  private:
23  PayloadPoolItemFactory *m_pFactory;
24  DataStructures::Pool<Payload*> *m_pPayloadPool;
25  Eegeo::Debug::SummaryStats m_stateTimeStats[PayloadState::MAX][2];
26 
27  void updateStateTimeStats(Payload* payload);
28 
29  public:
30  int GetCount() const;
31  int GetCapacity() const;
32  const std::vector<DataStructures::PoolEntry<Payload*> >& GetEntries();
33 
34  PayloadPool();
35  ~PayloadPool();
36  Payload* allocatePayload();
37  void ReleasePayload(Payload* payload);
38 
39  void ResetStats();
40  const Eegeo::Debug::SummaryStats& stateTimeStats(PayloadState::PayloadStateValues state, bool forCached) const;
41  };
42  }
43 }