Пример #1
0
            public override void OnReceive(Context context, Intent intent)
            {
                Log.To.Sync.D(Tag + ".OnReceive", "Received intent: {0}", intent.ToString());

                if (_ignoreNotifications)
                {
                    Log.To.Sync.D(Tag + ".OnReceive", "Ignoring received intent: {0}", intent.ToString());
                    _ignoreNotifications = false;
                    return;
                }

                Log.To.Sync.D(Tag + ".OnReceive", "Received intent: {0}", intent.ToString());

                var manager     = (ConnectivityManager)context.GetSystemService(Context.ConnectivityService);
                var networkInfo = manager.ActiveNetworkInfo;
                var status      = networkInfo == null || !networkInfo.IsConnected
                    ? NetworkReachabilityStatus.Unreachable
                    : NetworkReachabilityStatus.Reachable;

                if (!status.Equals(_lastStatus))
                {
                    _callback(status);
                }

                lock (lockObject)
                {
                    _lastStatus = status;
                }
            }
            public override void OnReceive(Context context, Intent intent)
            {
                Log.D(Tag + ".OnReceive", "Received intent: {0}", intent.ToString());

                if (_ignoreNotifications)
                {
                    Log.D(Tag + ".OnReceive", "Ignoring received intent: {0}", intent.ToString());
                    _ignoreNotifications = false;
                    return;
                }

                Log.D(Tag + ".OnReceive", "Received intent: {0}", intent.ToString());

                var status = intent.GetBooleanExtra(ConnectivityManager.ExtraNoConnectivity, false)
                    ? NetworkReachabilityStatus.Unreachable
                    : NetworkReachabilityStatus.Reachable;

                if (!status.Equals(_lastStatus))
                {
                    _callback(status);
                }

                lock (lockObject)
                {
                    _lastStatus = status;
                }
            }
Пример #3
0
        void InvokeNetworkChangeEvent(NetworkReachabilityStatus status)
        {
            var evt = _statusChanged;

            if (evt == null)
            {
                return;
            }
            var eventArgs = new NetworkReachabilityChangeEventArgs(status);

            evt(this, eventArgs);
        }
Пример #4
0
        public void TestReachability()
        {
            try {
                var status = NetworkReachabilityStatus.Unknown;
                var e      = new NetworkReachabilityChangeEventArgs(status);
                NetworkReachabilityStatus s = NetworkReachabilityStatus.Unknown;

                var _reachability = new Reachability();

                _reachability.StatusChanged += (sender, args) => s = args.Status;
                _reachability.Start();

                e.Status.Should().Be(s);

                var method = ReachabilityType.GetMethod("InvokeNetworkChangeEvent", BindingFlags.NonPublic | BindingFlags.Instance);
                var res    = method.Invoke(_reachability, new object[1] {
                    s
                });

                NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
                method = ReachabilityType.GetMethod("IsInterfaceValid", BindingFlags.NonPublic | BindingFlags.Static);
                foreach (var n in nics)
                {
                    res = method.Invoke(null, new object[1] {
                        n
                    });
                }

                var asender = new object();
                method = ReachabilityType.GetMethod("OnNetworkChange", BindingFlags.NonPublic | BindingFlags.Instance);
                res    = method.Invoke(_reachability, new object[2] {
                    asender, e
                });

                var ReplicatorType = typeof(Replicator);
                var targetEndpoint = new URLEndpoint(new Uri("ws://192.168.0.11:4984/app"));
                var config         = new ReplicatorConfiguration(Db, targetEndpoint);
                using (Replicator replicator = new Replicator(config)) {
                    method = ReplicatorType.GetMethod("ReachabilityChanged", BindingFlags.NonPublic | BindingFlags.Instance);
                    res    = method.Invoke(replicator, new object[2] {
                        asender, e
                    });
                }
            }
            catch { }
        }
            public override void OnReceive(Context context, Intent intent)
            {
                Log.D(Tag + ".OnReceive", "Received intent: {0}", intent.ToString());

                if (_ignoreNotifications) {
                    Log.D(Tag + ".OnReceive", "Ignoring received intent: {0}", intent.ToString());
                    _ignoreNotifications = false;
                    return;
                }

                Log.D(Tag + ".OnReceive", "Received intent: {0}", intent.ToString());

                var manager = (ConnectivityManager)context.GetSystemService(Context.ConnectivityService);
                var networkInfo = manager.ActiveNetworkInfo;
                var status = networkInfo == null || !networkInfo.IsConnected
                    ? NetworkReachabilityStatus.Unreachable
                    : NetworkReachabilityStatus.Reachable;

                if (!status.Equals(_lastStatus))
                {
                    _callback(status);
                }

                lock(lockObject) 
                {
                    _lastStatus = status;
                }
            }
 void InvokeNetworkChangeEvent(NetworkReachabilityStatus status)
 {
     var evt = _statusChanged;
     if (evt == null)
     {
         return;
     }
     var eventArgs = new NetworkReachabilityChangeEventArgs(status);
     evt(this, eventArgs);
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="status">The current network reachability status</param>
 public NetworkReachabilityChangeEventArgs(NetworkReachabilityStatus status)
 {
     Status = status;
 }
 public NetworkReachabilityChangeEventArgs (NetworkReachabilityStatus status)
 {
     Status = status;
 }
        internal void InvokeNetworkChangeEvent(NetworkReachabilityStatus status)
        {
            var eventArgs = new NetworkReachabilityChangeEventArgs(status);

            StatusChanged?.Invoke(this, eventArgs);
        }