Exemple #1
0
        void StartWriteMonitor()
        {
            NSUrl fileURL = TestFileUrl;

            var stream         = File.Create(fileURL.Path);
            int fileDescriptor = GetFileDescriptor(stream);

            dispatchSource = new DispatchSource.WriteMonitor(fileDescriptor, DispatchQueue.MainQueue);

            dispatchSource.SetRegistrationHandler(() => {
                PrintResult(textView, "Write monitor registered");
            });

            dispatchSource.SetEventHandler(() => {
                string message = string.Format("Write monitor: {0} was opened in write mode", fileURL.LastPathComponent.ToString());
                PrintResult(textView, message);
                dispatchSource.Cancel();
                stream.Close();
            });

            dispatchSource.SetCancelHandler(() => {
                PrintResult(textView, "Write monitor cancelled");
            });

            dispatchSource.Resume();
        }
        private void StartVnodeMonitor()
        {
            var fileUrl = TestFileUrl;

            var testFileStream = File.Create(fileUrl.Path);
            int fileDescriptor = GetFileDescriptor(testFileStream);

            var dispatchSourceMonitor = new DispatchSource.VnodeMonitor(fileDescriptor,
                                                                        VnodeMonitorKind.Delete | VnodeMonitorKind.Extend | VnodeMonitorKind.Write,
                                                                        DispatchQueue.MainQueue);

            dispatchSourceMonitor.SetRegistrationHandler(() => PrintResult("Vnode monitor registered"));
            dispatchSourceMonitor.SetEventHandler(() =>
            {
                var observedEvents = dispatchSourceMonitor.ObservedEvents;
                var message        = $"Vnode monitor event for {fileUrl.LastPathComponent}: {observedEvents}";
                PrintResult(message);

                CancelDispatchSource();
                testFileStream.Close();
            });

            dispatchSourceMonitor.SetCancelHandler(() => PrintResult("Vnode monitor cancelled"));

            dispatchSource = dispatchSourceMonitor;
            dispatchSource.Resume();
        }
Exemple #3
0
        void TestReadMonitor()
        {
            NSUrl fileURL = TestFileUrl;

            File.WriteAllText(fileURL.Path, "Roses are red");
            var stream         = File.OpenRead(fileURL.Path);
            int fileDescriptor = GetFileDescriptor(stream);

            dispatchSource = new CoreFoundation.DispatchSource.ReadMonitor(fileDescriptor, DispatchQueue.MainQueue);

            dispatchSource.SetRegistrationHandler(() => {
                PrintResult(textView, "Read monitor registered");
            });

            dispatchSource.SetEventHandler(() => {
                PrintResult(textView, string.Format("Read monitor: {0} was opened in read mode", fileURL.LastPathComponent));
                dispatchSource.Cancel();
                stream.Close();
            });

            dispatchSource.SetCancelHandler(() => {
                PrintResult(textView, "Read monitor cancelled");
            });

            dispatchSource.Resume();
        }
        void TestReadMonitor()
        {
            NSUrl fileURL        = TestFileUrl;
            int   fileDescriptor = 0;

            using (var stream = new FileStream(fileURL.Path, FileMode.OpenOrCreate, FileAccess.Read, FileShare.None)) {
                fileDescriptor = GetFileDescriptor(stream);
            }

            dispatchSource = new DispatchSource.ReadMonitor(fileDescriptor, DispatchQueue.MainQueue);

            dispatchSource.SetRegistrationHandler(() => {
                PrintResult(textView, "Read monitor registered");
            });

            dispatchSource.SetEventHandler(() => {
                PrintResult(textView, string.Format("Read monitor: {0} was opened in read mode", fileURL.LastPathComponent));
                dispatchSource.Cancel();
            });

            dispatchSource.SetCancelHandler(() => {
                PrintResult(textView, "Read monitor cancelled");
            });

            dispatchSource.Resume();
        }
 public override void ViewWillDisappear(bool animated)
 {
     base.ViewWillDisappear(animated);
     dispatchSource.Cancel();
     dispatchSource.Dispose();
     dispatchSource = null;
 }
Exemple #6
0
        void StartVnodeMonitor()
        {
            NSUrl fileURL = TestFileUrl;

            var stream         = File.Create(fileURL.Path);
            int fileDescriptor = GetFileDescriptor(stream);

            dispatchSource = new DispatchSource.VnodeMonitor(fileDescriptor,
                                                             VnodeMonitorKind.Delete | VnodeMonitorKind.Extend | VnodeMonitorKind.Write,
                                                             DispatchQueue.MainQueue
                                                             );

            dispatchSource.SetRegistrationHandler(() => {
                PrintResult(textView, "Vnode monitor registered");
            });

            dispatchSource.SetEventHandler(() => {
                var observedEvents = ((DispatchSource.VnodeMonitor)dispatchSource).ObservedEvents;
                string message     = string.Format("Vnode monitor event for {0}: {1}", fileURL.LastPathComponent, observedEvents.ToString());
                PrintResult(textView, message);
                dispatchSource.Cancel();
                stream.Close();
            });

            dispatchSource.SetCancelHandler(() => {
                PrintResult(textView, "Vnode monitor cancelled");
            });

            dispatchSource.Resume();
        }
 private void CancelDispatchSource()
 {
     if (dispatchSource != null)
     {
         dispatchSource.Cancel();
         dispatchSource.Dispose();
         dispatchSource = null;
     }
 }
        private void StartTimer()
        {
            var dispatchSourceTimer = new DispatchSource.Timer(DispatchQueue.MainQueue);

            var delay  = 2 * NanosecondsInSecond;
            var leeway = 5 * NanosecondsInSecond;

            dispatchSourceTimer.SetTimer(DispatchTime.Now, delay, leeway);
            dispatchSourceTimer.SetRegistrationHandler(() => PrintResult("Timer registered"));
            dispatchSourceTimer.SetEventHandler(() => PrintResult("Timer tick"));
            dispatchSourceTimer.SetCancelHandler(() => PrintResult("Timer stopped"));

            dispatchSource = dispatchSourceTimer;
            dispatchSource.Resume();
        }
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
            if (testFileUrl != null)
            {
                testFileUrl.Dispose();
                testFileUrl = null;
            }

            if (dispatchSource != null)
            {
                dispatchSource.Dispose();
                dispatchSource = null;
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            // Perform any additional setup after loading the view, typically from a nib.

            dispatchSource = new DispatchSource.VnodeMonitor(documentsPath, VnodeMonitorKind.Delete | VnodeMonitorKind.Extend | VnodeMonitorKind.Write, DispatchQueue.MainQueue);
            dispatchSource.SetRegistrationHandler(() => {
                Console.WriteLine("Vnode monitor registered");
            });
            dispatchSource.SetEventHandler(() => {
                UpdateFilesList();
            });

            dispatchSource.Resume();
        }
        private void StartMemoryMonitor()
        {
            var dispatchSourcePressure = new DispatchSource.MemoryPressure(MemoryPressureFlags.Critical | MemoryPressureFlags.Warn | MemoryPressureFlags.Normal,
                                                                           DispatchQueue.MainQueue);

            dispatchSourcePressure.SetRegistrationHandler(() => PrintResult("Memory monitor registered"));
            dispatchSourcePressure.SetEventHandler(() =>
            {
                var pressureLevel = dispatchSourcePressure.PressureFlags;
                PrintResult($"Memory worning of level: {pressureLevel}");
                CancelDispatchSource();
            });

            dispatchSourcePressure.SetCancelHandler(() => PrintResult("Memory monitor cancelled"));

            dispatchSource = dispatchSourcePressure;
            dispatchSource.Resume();
        }
        private void StartWriteMonitor()
        {
            var fileUrl        = TestFileUrl;
            var stream         = new FileStream(fileUrl.Path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
            int fileDescriptor = GetFileDescriptor(stream);

            dispatchSource = new DispatchSource.WriteMonitor(fileDescriptor, DispatchQueue.MainQueue);
            dispatchSource.SetRegistrationHandler(() => PrintResult("Write monitor registered"));
            dispatchSource.SetEventHandler(() =>
            {
                PrintResult($"Write monitor: {fileUrl.LastPathComponent} was opened in write mode");
                CancelDispatchSource();

                stream.Dispose();
                stream = null;
            });

            dispatchSource.SetCancelHandler(() => PrintResult("Write monitor cancelled"));
            dispatchSource.Resume();
        }
        private void TestReadMonitor()
        {
            var fileUrl        = TestFileUrl;
            int fileDescriptor = 0;

            using (var stream = new FileStream(fileUrl.Path, FileMode.OpenOrCreate, FileAccess.Read, FileShare.None))
            {
                fileDescriptor = GetFileDescriptor(stream);
            }

            dispatchSource = new DispatchSource.ReadMonitor(fileDescriptor, DispatchQueue.MainQueue);
            dispatchSource.SetRegistrationHandler(() => PrintResult("Read monitor registered"));
            dispatchSource.SetEventHandler(() =>
            {
                PrintResult($"Read monitor: {fileUrl.LastPathComponent} was opened in read mode");
                CancelDispatchSource();
            });

            dispatchSource.SetCancelHandler(() => PrintResult("Read monitor cancelled"));
            dispatchSource.Resume();
        }
Exemple #14
0
        void StartMemoryMonitor()
        {
            dispatchSource = new DispatchSource.MemoryPressure(
                MemoryPressureFlags.Critical | MemoryPressureFlags.Warn | MemoryPressureFlags.Normal,
                DispatchQueue.MainQueue);

            dispatchSource.SetRegistrationHandler(() => {
                PrintResult(textView, "Memory monitor registered");
            });

            dispatchSource.SetEventHandler(() => {
                var pressureLevel = ((DispatchSource.MemoryPressure)dispatchSource).PressureFlags;
                PrintResult(textView, string.Format("Memory worning of level: {0}", pressureLevel));
                tableView.UserInteractionEnabled = true;
                dispatchSource.Cancel();
            });

            dispatchSource.SetCancelHandler(() => {
                PrintResult(textView, "Memory monitor cancelled");
            });

            dispatchSource.Resume();
        }
Exemple #15
0
        void StartTimer()
        {
            dispatchSource = new DispatchSource.Timer(DispatchQueue.MainQueue);

            long delay  = 2 * NanosecondsInSecond;
            long leeway = 5 * NanosecondsInSecond;

            ((DispatchSource.Timer)dispatchSource).SetTimer(DispatchTime.Now, delay, leeway);

            dispatchSource.SetRegistrationHandler(() => {
                PrintResult(textView, "Timer registered");
            });

            dispatchSource.SetEventHandler(() => {
                PrintResult(textView, "Timer tick");
            });

            dispatchSource.SetCancelHandler(() => {
                PrintResult(textView, "Timer stopped");
            });

            dispatchSource.Resume();
        }
		void StartMemoryMonitor ()
		{
			dispatchSource = new DispatchSource.MemoryPressure (
				MemoryPressureFlags.Critical | MemoryPressureFlags.Warn | MemoryPressureFlags.Normal, 
				DispatchQueue.MainQueue);

			dispatchSource.SetRegistrationHandler (() => {
				PrintResult (textView, "Memory monitor registered");
			});

			dispatchSource.SetEventHandler (() => {
				var pressureLevel = ((DispatchSource.MemoryPressure)dispatchSource).PressureFlags;
				PrintResult (textView, string.Format ("Memory worning of level: {0}", pressureLevel));
				tableView.UserInteractionEnabled = true;
				dispatchSource.Cancel ();
			});

			dispatchSource.SetCancelHandler (() => {
				PrintResult (textView, "Memory monitor cancelled");
			});

			dispatchSource.Resume ();
		}
		void StartVnodeMonitor ()
		{
			NSUrl fileURL = TestFileUrl;

			testFileStream = File.Create (fileURL.Path);
			int fileDescriptor = GetFileDescriptor (testFileStream);

			dispatchSource = new DispatchSource.VnodeMonitor (fileDescriptor,
				VnodeMonitorKind.Delete | VnodeMonitorKind.Extend | VnodeMonitorKind.Write,
				DispatchQueue.MainQueue
			);

			dispatchSource.SetRegistrationHandler (() => {
				PrintResult (textView, "Vnode monitor registered");
			});

			dispatchSource.SetEventHandler (() => {
				var observedEvents = ((DispatchSource.VnodeMonitor)dispatchSource).ObservedEvents;
				string message = string.Format ("Vnode monitor event for {0}: {1}", fileURL.LastPathComponent, observedEvents);
				PrintResult (textView, message);
				dispatchSource.Cancel ();
				testFileStream.Close ();
			});

			dispatchSource.SetCancelHandler (() => {
				PrintResult (textView, "Vnode monitor cancelled");
			});

			dispatchSource.Resume ();
		}
		void StartTimer ()
		{
			dispatchSource = new DispatchSource.Timer (DispatchQueue.MainQueue);

			long delay = 2 * NanosecondsInSecond;
			long leeway = 5 * NanosecondsInSecond;

			((DispatchSource.Timer)dispatchSource).SetTimer (DispatchTime.Now, delay, leeway);

			dispatchSource.SetRegistrationHandler (() => {
				PrintResult (textView, "Timer registered");
			});

			dispatchSource.SetEventHandler (() => {
				PrintResult (textView, "Timer tick");
			});

			dispatchSource.SetCancelHandler (() => {
				PrintResult (textView, "Timer stopped");
			});

			dispatchSource.Resume ();
		}
		void StartWriteMonitor ()
		{
			NSUrl fileURL = TestFileUrl;
			var stream = new FileStream (fileURL.Path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
			int fileDescriptor = GetFileDescriptor (stream);

			dispatchSource = new DispatchSource.WriteMonitor (fileDescriptor, DispatchQueue.MainQueue);

			dispatchSource.SetRegistrationHandler (() => {
				PrintResult (textView, "Write monitor registered");
			});

			dispatchSource.SetEventHandler (() => {
				string message = string.Format ("Write monitor: {0} was opened in write mode", fileURL.LastPathComponent);
				PrintResult (textView, message);
				dispatchSource.Cancel ();
				stream.Close ();
			});

			dispatchSource.SetCancelHandler (() => {
				PrintResult (textView, "Write monitor cancelled");
			});

			dispatchSource.Resume ();
		}
		void TestReadMonitor ()
		{
			NSUrl fileURL = TestFileUrl;
			int fileDescriptor = 0;

			using (var stream = new FileStream (fileURL.Path, FileMode.OpenOrCreate, FileAccess.Read, FileShare.None)) {
				fileDescriptor = GetFileDescriptor (stream);
			}

			dispatchSource = new DispatchSource.ReadMonitor (fileDescriptor, DispatchQueue.MainQueue);

			dispatchSource.SetRegistrationHandler (() => {
				PrintResult (textView, "Read monitor registered");
			});

			dispatchSource.SetEventHandler (() => {
				PrintResult (textView, string.Format ("Read monitor: {0} was opened in read mode", fileURL.LastPathComponent));
				dispatchSource.Cancel ();
			});

			dispatchSource.SetCancelHandler (() => {
				PrintResult (textView, "Read monitor cancelled");
			});

			dispatchSource.Resume ();
		}
		void TestReadMonitor ()
		{
			NSUrl fileURL = TestFileUrl;

			File.WriteAllText (fileURL.Path, "Roses are red");
			var stream = File.OpenRead (fileURL.Path);
			int fileDescriptor = GetFileDescriptor (stream);

			dispatchSource = new CoreFoundation.DispatchSource.ReadMonitor (fileDescriptor, DispatchQueue.MainQueue);

			dispatchSource.SetRegistrationHandler (() => {
				PrintResult (textView, "Read monitor registered");
			});

			dispatchSource.SetEventHandler (() => {
				PrintResult (textView, string.Format ("Read monitor: {0} was opened in read mode", fileURL.LastPathComponent));
				dispatchSource.Cancel ();
				stream.Close ();
			});

			dispatchSource.SetCancelHandler (() => {
				PrintResult (textView, "Read monitor cancelled");
			});

			dispatchSource.Resume ();
		}