You.i Engine
YiConnectivity.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_CONNECTIVITY_H_
3 #define _YI_CONNECTIVITY_H_
4 
5 
6 #include "framework/YiPredef.h"
8 #include "network/YiUrl.h"
9 #include "signal/YiSignal.h"
10 #include "utility/YiTimer.h"
11 
42 {
43 public:
47  enum TYPE
48  {
52  LOCAL_NETWORK = 0x01,
54  INTERNET = 0x02,
57  };
58 
60  virtual ~CYIConnectivity();
61 
69  void StartPeriodicChecker();
70 
76  void StopPeriodicChecker();
77 
81  bool IsCheckerRunning() const;
82 
88  bool IsWaitingOnNetwork() const;
89 
93  void ProbeState();
94 
103  TYPE GetState() const;
104 
108  void SetApplicationURL(const CYIUrl &url);
109 
113  void SetPeriodicCheckInterval(uint64_t uIntervalMs);
114 
120  void SetNetworkCheckTimeout(uint64_t uTimeoutMs);
121 
126 
131 
132 
133 private:
134  void SendRequests();
135  void CancelRequests();
136  void CancelInternetRequest();
137  void CancelAppRequest();
138  void OnCheckerTimeout();
139 
140  void OnInternetRequestSucceeded();
141  void OnInternetRequestFailed(const std::shared_ptr<CYIHTTPRequest> &pRequest, const HTTP_STATUS_CODE eCode);
142  void OnAppRequestSucceeded();
143  void OnAppRequestFailed(const std::shared_ptr<CYIHTTPRequest> &pRequest, const HTTP_STATUS_CODE eCode);
144 
145  void OnConnectionPartChecked();
146 
147  CYITimer m_periodicCheckerTimer;
148 
149  TYPE m_eState;
150  CYIUrl m_appURL;
151  uint64_t m_uCheckIntervalMs;
152  uint64_t m_uCheckTimeoutMs;
153  bool m_bProbeRequested;
154  int32_t m_nCheckedBits;
155  int32_t m_nConnectivityBits;
156 
157  std::shared_ptr<CYIHTTPRequest> m_pInternetRequest;
158  std::shared_ptr<CYIHTTPRequest> m_pAppRequest;
159 };
160 
165 #endif // _YI_CONNECTIVITY_H_
Definition: YiConnectivity.h:56
virtual ~CYIConnectivity()
TYPE
Definition: YiConnectivity.h:47
void SetApplicationURL(const CYIUrl &url)
CYISignal< TYPE > ProbeCompleted
Definition: YiConnectivity.h:130
void StopPeriodicChecker()
The base class for an object accessible from script source code.
Definition: YiScriptableObject.h:28
void SetNetworkCheckTimeout(uint64_t uTimeoutMs)
A low-precision timer driven by the update loop.
Definition: YiTimer.h:29
bool IsCheckerRunning() const
bool IsWaitingOnNetwork() const
void StartPeriodicChecker()
A class used to encapsulate an URL.
Definition: YiUrl.h:24
Definition: YiSignalHandler.h:174
HTTP_STATUS_CODE
Definition: YiHTTPService.h:20
A class used to perform active network connectivity checks.
Definition: YiConnectivity.h:41
Definition: YiConnectivity.h:50
void SetPeriodicCheckInterval(uint64_t uIntervalMs)
Definition: YiConnectivity.h:52
Definition: YiConnectivity.h:54
CYISignal< TYPE > StateChanged
Definition: YiConnectivity.h:125
TYPE GetState() const