mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-10-15 08:22:38 +00:00
22 lines
7.7 KiB
HTML
22 lines
7.7 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Common file watching utilities for configuration hot-reloading."><title>common_config::file_watcher - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-1ed95124.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="common_config" data-themes="" data-resource-suffix="" data-rustdoc-version="1.98.1 (48a229cea 2026-09-01)" data-channel="1.98.1" data-search-js="search-9944d736.js" data-stringdex-js="stringdex-2da4960a.js" data-settings-js="settings-170eb4bf.js" ><script src="../../static.files/storage-41dd4d93.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-417ebf0a.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-f7c3ffd8.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc mod"><a class="skip-main-content" href="#main-content">Skip to main content</a><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Module file_watcher</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../common_config/index.html">common_<wbr>config</a><span class="version">1.4.0-alpha.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module file_<wbr>watcher</a></h2><h3><a href="#structs">Module Items</a></h3><ul class="block"><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#constants" title="Constants">Constants</a></li><li><a href="#functions" title="Functions">Functions</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate common_<wbr>config</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content" tabindex="-1"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">common_config</a></div><h1>Module <span>file_<wbr>watcher</span> <button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/common_config/file_watcher.rs.html#15-639">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Common file watching utilities for configuration hot-reloading.</p>
|
||
<p>This module provides a generic file watcher that can be used to watch
|
||
files for changes and trigger callbacks when changes occur.</p>
|
||
<p>The watcher monitors the parent directory of each file rather than the
|
||
file itself. This ensures that file deletions and recreations are properly
|
||
tracked, which is common with editors that use atomic saves or when
|
||
configuration files are replaced.</p>
|
||
<p>If the path goes through symlinks (the file itself or any ancestor
|
||
directory), the directory holding each symlink is watched as well, so that
|
||
swapping a symlink anywhere in the chain (e.g. <code>ln -sfn secrets.2 secrets</code>,
|
||
as done by secret managers like sops-nix or Kubernetes volume mounts) is
|
||
detected. The chain is re-resolved after every relevant event and the set
|
||
of watched directories is updated accordingly.</p>
|
||
</div></details><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.FileWatcherBuilder.html" title="struct common_config::file_watcher::FileWatcherBuilder">File<wbr>Watcher<wbr>Builder</a></dt><dd>A builder for creating file watchers with flexible configuration.</dd><dt><a class="struct" href="struct.FileWatcherConfig.html" title="struct common_config::file_watcher::FileWatcherConfig">File<wbr>Watcher<wbr>Config</a></dt><dd>Configuration for the file watcher behavior.</dd><dt><a class="struct" href="struct.WatchTargets.html" title="struct common_config::file_watcher::WatchTargets">Watch<wbr>Targets</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Directories to watch and the directory entries whose events are relevant.</dd></dl><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><dl class="item-table"><dt><a class="constant" href="constant.MAX_SYMLINK_HOPS.html" title="constant common_config::file_watcher::MAX_SYMLINK_HOPS">MAX_<wbr>SYMLINK_<wbr>HOPS</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Maximum number of symlinks followed while resolving a single path. This
|
||
mirrors Linux’s <code>MAXSYMLINKS</code> and guards against symlink loops.</dd></dl><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><dl class="item-table"><dt><a class="fn" href="fn.entry_key.html" title="fn common_config::file_watcher::entry_key">entry_<wbr>key</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Key used to compare an event path with <a href="struct.WatchTargets.html#structfield.entries" title="field common_config::file_watcher::WatchTargets::entries"><code>WatchTargets::entries</code></a>.</dd><dt><a class="fn" href="fn.is_relevant_event.html" title="fn common_config::file_watcher::is_relevant_event">is_<wbr>relevant_<wbr>event</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Check if an event kind is relevant based on the configuration.</dd><dt><a class="fn" href="fn.rearm_watches.html" title="fn common_config::file_watcher::rearm_watches">rearm_<wbr>watches</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Re-resolves <code>file_paths</code> and updates the watched directories, returning
|
||
the new targets. Failures are logged and retried on the next event that
|
||
matches a chain entry.</dd><dt><a class="fn" href="fn.resolve_one.html" title="fn common_config::file_watcher::resolve_one">resolve_<wbr>one</a><span title="Restricted Visibility"> 🔒</span> </dt><dt><a class="fn" href="fn.resolve_watch_targets.html" title="fn common_config::file_watcher::resolve_watch_targets">resolve_<wbr>watch_<wbr>targets</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Resolves every path component by component, following symlinks, and
|
||
collects what has to be watched to notice any change of what the path
|
||
points to.</dd><dt><a class="fn" href="fn.warn_if_root.html" title="fn common_config::file_watcher::warn_if_root">warn_<wbr>if_<wbr>root</a><span title="Restricted Visibility"> 🔒</span> </dt><dd>Warns when the root directory is watched, which happens when a path goes
|
||
through a symlink directly under it (e.g. <code>/tmp</code>, <code>/var</code> or <code>/etc</code> on
|
||
macOS). On macOS the FSEvents backend then receives every event on the
|
||
volume and filters them in user space.</dd></dl></section></div></main></body></html> |