From d2d46640db09a932c1421eac2bfad003166f45f4 Mon Sep 17 00:00:00 2001 From: Sergey Abramchuk Date: Mon, 17 Jul 2017 20:22:03 +0300 Subject: [PATCH] Implement abstract tracker class --- OpenVPN Adapter/OpenVPNReachabilityTracker.h | 21 ++++++++++++ OpenVPN Adapter/OpenVPNReachabilityTracker.mm | 33 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 OpenVPN Adapter/OpenVPNReachabilityTracker.h create mode 100644 OpenVPN Adapter/OpenVPNReachabilityTracker.mm diff --git a/OpenVPN Adapter/OpenVPNReachabilityTracker.h b/OpenVPN Adapter/OpenVPNReachabilityTracker.h new file mode 100644 index 0000000..d734aaa --- /dev/null +++ b/OpenVPN Adapter/OpenVPNReachabilityTracker.h @@ -0,0 +1,21 @@ +// +// OpenVPNReachabilityTracker.h +// OpenVPN Adapter +// +// Created by Sergey Abramchuk on 17.07.17. +// +// + +#import + +using namespace openvpn; + +class OpenVPNReachabilityTracker : public ReachabilityTracker { + OpenVPNReachabilityTracker(const bool enable_internet, const bool enable_wifi, void* handler); + + virtual void reachability_tracker_event(const ReachabilityBase& rb, SCNetworkReachabilityFlags flags) override; + +private: + void* handler; + +}; diff --git a/OpenVPN Adapter/OpenVPNReachabilityTracker.mm b/OpenVPN Adapter/OpenVPNReachabilityTracker.mm new file mode 100644 index 0000000..a84cb38 --- /dev/null +++ b/OpenVPN Adapter/OpenVPNReachabilityTracker.mm @@ -0,0 +1,33 @@ +// +// OpenVPNReachabilityTracker.m +// OpenVPN Adapter +// +// Created by Sergey Abramchuk on 17.07.17. +// +// + +#import "OpenVPNReachability+Internal.h" +#import "OpenVPNReachabilityTracker.h" + +OpenVPNReachabilityTracker::OpenVPNReachabilityTracker(const bool enable_internet, const bool enable_wifi, void* handler) : ReachabilityTracker(enable_internet, enable_wifi) { + this->handler = handler; +} + +void OpenVPNReachabilityTracker::reachability_tracker_event(const ReachabilityBase& rb, SCNetworkReachabilityFlags flags) { + OpenVPNReachability* handler = (__bridge OpenVPNReachability* )this->handler; + + ReachabilityInterface::Status status = rb.status(); + switch (status) { + case ReachabilityInterface::NotReachable: + [handler updateReachabilityStatus:OpenVPNReachabilityStatusNotReachable]; + break; + + case ReachabilityInterface::ReachableViaWiFi: + [handler updateReachabilityStatus:OpenVPNReachabilityStatusReachableViaWiFi]; + break; + + case ReachabilityInterface::ReachableViaWWAN: + [handler updateReachabilityStatus:OpenVPNReachabilityStatusReachableViaWWAN]; + break; + } +}