All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PayloadWebLoader.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Web.h"
7 #include "Helpers.h"
8 #include "Streaming.h"
9 #include "WebLoadRequestCompletionCallback.h"
10 #include <vector>
11 #include "PendingWebRequestsContainer.h"
12 
13 namespace Eegeo
14 {
15  namespace Helpers
16  {
17  class IHttpCache;
18  }
19 
20  namespace Streaming
21  {
23  {
24  public:
26  Web::IWebLoadRequestFactory& webLoadRequestFactory,
27  Helpers::IHttpCache& pCache,
28  int requestTimeoutInSeconds
29  );
30 
31  bool TryAddAsyncLoad(Payload *pPayload);
32  void CancelLoad(Web::IWebLoadRequest& webLoadRequest);
33  void OnWebLoadRequestComplete(Web::IWebResponse& webResponse);
34 
35  bool IsStreaming() const;
36 
37  private:
38  int m_webRequests;
39  int m_cacheRequests;
40  int m_maxWebRequests;
41  int m_maxCacheRequests;
42  int m_requestTimeoutInSeconds;
43 
44  Eegeo::Helpers::IHttpCache& m_httpCache;
45  Web::IWebLoadRequestFactory& m_webLoadRequestFactory;
46 
47  bool CanAcceptHttpLoads() const { return m_webRequests < m_maxWebRequests; }
48  bool CanAcceptCacheLoads() const { return m_cacheRequests < m_maxCacheRequests; }
49  void AddAsyncPayloadRequest(Payload* pPayload, bool isLocallyCached);
50 
51  void RemoveLoad(Payload* pPayload);
52 
54  Web::PendingWebRequestsContainer m_pendingWebRequestsContainer;
55 
56  };
57  }
58 }