Implement init/deinit of inotify system

Use RAII to handle inotify resource lifetime, i.e. initialize with actor
creation and deinitialize with actor deletion.
This commit is contained in:
T. R. Bernstein
2026-03-11 17:25:27 +01:00
parent 1a7e5ca5de
commit 098339f9d1
6 changed files with 65 additions and 2 deletions

View File

@@ -1,2 +1,16 @@
actor Inotify {
import CInotify
public actor Inotify {
private let fd: Int32
public init() throws {
self.fd = inotify_init1(Int32(IN_NONBLOCK | IN_CLOEXEC))
guard self.fd >= 0 else {
throw InotifyError.initFailed(errno: cinotify_get_errno())
}
}
deinit {
cinotify_deinit(self.fd)
}
}