]> Sergey Matveev's repositories - public-inbox.git/commit
inboxidle: new class to detect inbox changes
authorEric Wong <e@yhbt.net>
Wed, 10 Jun 2020 07:04:01 +0000 (07:04 +0000)
committerEric Wong <e@yhbt.net>
Sat, 13 Jun 2020 07:55:45 +0000 (07:55 +0000)
commit34c1a6c16733adee3acfe5861096692f3ea55378
treef22f3a47a81d5023ce4152d6f6abc129b95a35e7
parent90f11ce471c53365a77896c847d0a39b0995b5b5
inboxidle: new class to detect inbox changes

This will be used to implement IMAP IDLE, first.

Eventually, it may be used to trigger other things:

* incremental internal updates for manifest.js.gz
* restart `git cat-file' processes on pack index unlink
* IMAP IDLE-like long-polling HTTP endpoint

And maybe more things we haven't thought of, yet.

It uses Linux::Inotify2 or IO::KQueue depending on what packages
are installed and what the kernel supports.  It falls back to
nanosecond-aware Time::HiRes::stat() (available with Perl 5.10.0+)
on systems lacking Linux::Inotify2 and IO::KQueue.

In the future, a pure Perl alternative to Linux::Inotify2 may be
supplied for users of architectures we already support signalfd
and epoll on.

v2 changes:
- avoid O_TRUNC on lock file
- change ctime on Linux systems w/o inotify
- fix naming of comments and fields
MANIFEST
lib/PublicInbox/FakeInotify.pm [new file with mode: 0644]
lib/PublicInbox/In2Tie.pm [new file with mode: 0644]
lib/PublicInbox/Inbox.pm
lib/PublicInbox/InboxIdle.pm [new file with mode: 0644]
lib/PublicInbox/KQNotify.pm [new file with mode: 0644]
lib/PublicInbox/Lock.pm
t/inbox_idle.t [new file with mode: 0644]