# Copyright (C) 2020-2021 all contributors # License: AGPL-3.0+ # used to ensure PublicInbox::DS can call fileno() as a function # on Linux::Inotify2 objects package PublicInbox::In2Tie; use strict; use Symbol qw(gensym); sub io { my $in2 = $_[0]; $in2->blocking(0); if ($in2->can('on_overflow')) { # broadcasts everything on overflow $in2->on_overflow(undef); } my $io = gensym; tie *$io, __PACKAGE__, $in2; $io; } sub TIEHANDLE { my ($class, $in2) = @_; bless \$in2, $class; # a scalar reference to an existing reference } # this calls Linux::Inotify2::fileno sub FILENO { ${$_[0]}->fileno } 1;