All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
HttpAsyncModel.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "IAsyncModel.h"
7 #include "AsyncModels.h"
8 #include "Rendering.h"
9 #include "Web.h"
10 #include <string>
11 
12 namespace Eegeo
13 {
14  namespace Io
15  {
16  namespace AsyncModels
17  {
18  class HttpAsyncModel : protected Eegeo::NonCopyable, public IAsyncModel
19  {
20  public:
22  const std::string& modelUrl,
24  IAsyncModelObserver* pObserver,
25  bool destroyObserverOnCompletion
26  );
27  ~HttpAsyncModel();
28 
29  void Release();
30  const std::string GetUrl() const;
31 
32  bool TryGetModel(Rendering::SceneModels::SceneModel*& out_pModel) const;
33  bool IsLoaded() const;
34 
35  void SetWebLoadRequest(Eegeo::Web::IWebLoadRequest* pWebLoadRequest);
36  void ClearWebLoadRequest();
37  void SetLoadedModel(Rendering::SceneModels::SceneModel& model);
38  void DispatchLoadCompleteNotication();
39  void DispatchLoadFailNotification();
40 
41  private:
42  std::string m_name;
43  std::string m_url;
45  bool m_isLoaded;
46  Eegeo::Web::IWebLoadRequest* m_pWebLoadRequest;
47  IAsyncModelObserver* m_pObserver;
48  bool m_destroyObserverOnCompletion;
49  };
50  }
51  }
52 }