]> code.octet-stream.net Git - netwatcher/blobdiff - src/watch_win.rs
Groundwork for watching interface changes on Linux
[netwatcher] / src / watch_win.rs
index 67e0d4c88fc27d3216a5760a2d7ddc13afb294bb..a225f4a20c16c95f0cae051681345b21f0d96c15 100644 (file)
@@ -19,14 +19,14 @@ use crate::Error;
 use crate::List;
 use crate::Update;
 
 use crate::List;
 use crate::Update;
 
-pub struct WatchState {
+struct WatchState {
     /// The last result that we captured, for diffing
     prev_list: List,
     /// User's callback
     cb: Box<dyn FnMut(Update) + 'static>,
 }
 
     /// The last result that we captured, for diffing
     prev_list: List,
     /// User's callback
     cb: Box<dyn FnMut(Update) + 'static>,
 }
 
-pub struct WatchHandle {
+pub(crate) struct WatchHandle {
     hnd: HANDLE,
     _state: Pin<Box<Mutex<WatchState>>>,
 }
     hnd: HANDLE,
     _state: Pin<Box<Mutex<WatchState>>>,
 }
@@ -63,7 +63,7 @@ pub(crate) fn watch_interfaces<F: FnMut(Update) + 'static>(
             // Trigger an initial update.
             // This is allowed to race with true updates because it
             // will always calculate a diff and discard no-ops.
             // Trigger an initial update.
             // This is allowed to race with true updates because it
             // will always calculate a diff and discard no-ops.
-            handle_notif(&mut *state.lock().unwrap());
+            handle_notif(&mut state.lock().unwrap());
             // Then return the handle
             Ok(WatchHandle { hnd, _state: state })
         }
             // Then return the handle
             Ok(WatchHandle { hnd, _state: state })
         }
@@ -81,7 +81,10 @@ unsafe extern "system" fn notif(
 ) {
     let state_ptr = ctx as *const Mutex<WatchState>;
     unsafe {
 ) {
     let state_ptr = ctx as *const Mutex<WatchState>;
     unsafe {
-        let state_guard = &mut *state_ptr.as_ref().unwrap().lock().unwrap();
+        let state_guard = &mut *state_ptr.as_ref()
+            .expect("callback ctx should never be null")
+            .lock()
+            .unwrap();
         handle_notif(state_guard);
     }
 }
         handle_notif(state_guard);
     }
 }