All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
WebServiceCacheLoadWorkItemPool.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Cache.h"
7 
8 #include <vector>
9 #include <deque>
10 
11 namespace Eegeo
12 {
13  namespace Web
14  {
15  namespace Cache
16  {
17  namespace WebRequestCacheTasks
18  {
20  {
21  public:
24  virtual ~WebServiceCacheLoadWorkItemCallback() { };
25  virtual void operator()(Cache::WebRequestCacheTasks::WebServiceCacheLoadWorkItem* cacheLoadWorkItem);
26 
27  private:
28  TCallback m_callback;
30  };
31 
33  {
34  public:
35  WebServiceCacheLoadWorkItemPool(const int poolSize);
36 
38 
39  bool HasFreeItems() const;
40  bool IsCacheOperationInProgress() const;
41  int GetFreeItemCount() const;
43 
44  private:
45  void AsyncCacheLoadWorkItemCompleted(
47 
48  std::vector<Cache::WebRequestCacheTasks::WebServiceCacheLoadWorkItem*> m_cacheLoadWorkItemPool;
49  std::deque<Cache::WebRequestCacheTasks::WebServiceCacheLoadWorkItem*> m_cacheLoadWorkItemFreeList;
51  };
52  }
53  }
54  }
55 }