# Class Filesystem.Monitor.basic

Inheritance graph

Description

  Basic filesystem monitor.

  This module is intended to be used for incremental scanning of a filesystem.

  Supports FSEvents on MacOS X and Inotify on Linux to provide low overhead monitoring; other systems use a less efficient polling approach.

See also

  Filesystem.Monitor.symlinks, System.FSEvents, System.Inotify

Variable backend

  ``protected` `Pike.Backend` Filesystem.Monitor.basic.backend`

Description

  Backend to use.

  If `0` (zero) - use the default backend.

Variable co_id

  ``protected` `mixed` Filesystem.Monitor.basic.co_id`

Description

  Call-out identifier for backend_check() if in nonblocking mode.

  Set to `1` when non_blocking mode without call_outs is in use.

See also

  set_nonblocking(), set_blocking()

Constant default_file_interval_factor

  ```protected` constant` `int` Filesystem.Monitor.basic.`default_file_interval_factor``

Description

  The default factor to multiply default_max_dir_check_interval with to get the maximum number of seconds between checks of files.

  The value can be changed by calling create().

  The value can be overridden for individual files or directories by calling monitor().

  Overload this constant to change the default.

Constant default_max_dir_check_interval

  ```protected` constant` `int` Filesystem.Monitor.basic.`default_max_dir_check_interval``

Description

  The default maximum number of seconds between checks of directories in seconds.

  This value is multiplied with default_file_interval_factor to get the corresponding default maximum number of seconds for files.

  The value can be changed by calling create().

  The value can be overridden for individual files or directories by calling monitor().

  Overload this constant to change the default.

Constant default_stable_time

  ```protected` constant` `int` Filesystem.Monitor.basic.`default_stable_time``

Description

  The default minimum number of seconds without changes for a change to be regarded as stable (see stable_data_change().

Variable monitor_mutex

  ``protected` `Thread.Mutex` Filesystem.Monitor.basic.monitor_mutex`

Description

  Mutex controlling access to monitor_queue.

Variable monitor_queue

  ``protected` `ADT.Heap` Filesystem.Monitor.basic.monitor_queue`

Description

  Heap containing active Monitors that need polling.

  The heap is sorted on `Monitor()->next_poll`.

Variable monitors

  ``protected` `mapping`(`string`:`Monitor`) Filesystem.Monitor.basic.monitors`

Description

  Mapping from monitored path to corresponding Monitor.

  The paths are normalized to `canonic_path(path)`,

Note

  All filesystems are handled as if case-sensitive. This should not be a problem for case-insensitive filesystems as long as case is maintained.

Method create

  `Filesystem.Monitor.basic Filesystem.Monitor.basic(`int`|`void` `max_dir_check_interval`, `int`|`void` `file_interval_factor`, `int`|`void` `stable_time`)`

Description

  Create a new monitor.

Parameter `max_dir_check_interval`

  Override of default_max_dir_check_interval.

Parameter `file_interval_factor`

  Override of default_file_interval_factor.

Parameter `stable_time`

  Override of default_stable_time.