]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/In2Tie.pm
imap+nntp: share COMPRESS implementation
[public-inbox.git] / lib / PublicInbox / In2Tie.pm
index db1dc1045c14b52480ba5189d589593d76137a02..ffe26a44ab3d9e38d46447fd69543e0a9d4e5c8d 100644 (file)
@@ -1,10 +1,23 @@
-# Copyright (C) 2020 all contributors <meta@public-inbox.org>
+# Copyright (C) 2020-2021 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 
 # 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) = @_;