All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
WebServiceCacheLoadWorkItem.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "WorkItem.h"
7 #include "Helpers.h"
8 #include "Web.h"
9 #include "Cache.h"
10 #include "BidirectionalWebIOBus.h"
11 
12 #include <string>
13 
14 namespace Eegeo
15 {
16  namespace Web
17  {
18  namespace Cache
19  {
20  namespace WebRequestCacheTasks
21  {
23  {
24  public:
26  int id,
28  : WorkItem(false)
29  , m_webRequestId(0)
30  , m_pFileIO(NULL)
31  , m_pWebMessageBus(NULL)
32  , m_webRequestServiceCallback(webRequestServiceCallback)
33  , m_workItemId(id)
34  , m_active(false)
35  , m_cancelled(false)
36  {
37 
38  }
39 
40  virtual ~WebServiceCacheLoadWorkItem() {}
41 
42  void Setup(
43  const std::string& url,
44  const TWebRequestId webRequestId,
45  Helpers::IFileIO* fileIO,
46  Web::TMessageBus* pWebMessageBus);
47 
48  void DoWorkCancelled ();
49  void DoWork();
50  void DoFinalizeOnMainThread();
51 
52  bool IsActive() const { return m_active; }
53  int GetId() const { return m_workItemId; }
54  private:
55  void ValidateFields() const;
56 
57  std::string m_url;
58  TWebRequestId m_webRequestId;
59 
60  Helpers::IFileIO* m_pFileIO;
61  Eegeo::Web::TMessageBus* m_pWebMessageBus;
62 
63  WebServiceCacheLoadWorkItemCallback& m_webRequestServiceCallback;
64  int m_workItemId;
65  volatile bool m_active;
66  volatile bool m_cancelled;
67  };
68  }
69  }
70  }
71 }