added iOS source code
[wl-app.git] / iOS / Pods / Realm / include / sync / impl / apple / network_reachability_observer.hpp
diff --git a/iOS/Pods/Realm/include/sync/impl/apple/network_reachability_observer.hpp b/iOS/Pods/Realm/include/sync/impl/apple/network_reachability_observer.hpp
new file mode 100644 (file)
index 0000000..f782563
--- /dev/null
@@ -0,0 +1,69 @@
+////////////////////////////////////////////////////////////////////////////
+//
+// Copyright 2016 Realm Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////
+
+#ifndef REALM_OS_NETWORK_REACHABILITY_OBSERVER_HPP
+#define REALM_OS_NETWORK_REACHABILITY_OBSERVER_HPP
+
+#include <functional>
+#include <string>
+
+#include <realm/util/cf_ptr.hpp>
+#include <realm/util/optional.hpp>
+
+#include "sync/impl/network_reachability.hpp"
+
+#if NETWORK_REACHABILITY_AVAILABLE
+
+#include "sync/impl/apple/system_configuration.hpp"
+
+namespace realm {
+namespace _impl {
+
+enum NetworkReachabilityStatus {
+    NotReachable,
+    ReachableViaWiFi,
+    ReachableViaWWAN
+};
+
+class NetworkReachabilityObserver {
+public:
+    NetworkReachabilityObserver(util::Optional<std::string> hostname,
+                                std::function<void (const NetworkReachabilityStatus)> handler);
+
+    ~NetworkReachabilityObserver();
+
+    NetworkReachabilityStatus reachability_status() const;
+
+    bool start_observing();
+    void stop_observing();
+
+private:
+    void reachability_changed();
+
+    util::CFPtr<SCNetworkReachabilityRef> m_reachability_ref;
+    NetworkReachabilityStatus m_previous_status;
+    dispatch_queue_t m_callback_queue;
+    std::function<void (const NetworkReachabilityStatus)> m_change_handler;
+};
+
+} // namespace _impl
+} // namespace realm
+
+#endif // NETWORK_REACHABILITY_AVAILABLE
+
+#endif // REALM_OS_NETWORK_REACHABILITY_OBSERVER_HPP