diff options
author | Eric Wong <e@80x24.org> | 2022-10-04 19:12:35 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2022-10-05 21:15:26 +0000 |
commit | 6dec9bf8c0e1b859703d7a5dfb87052cf4e87846 (patch) | |
tree | 7d0e0c7bf96da3a3fe494eaaaaf1c714b5aa1775 /lib/PublicInbox/GitAsyncCat.pm | |
parent | a002384a74382df2649d6a1f8dfba4f291af032e (diff) | |
download | public-inbox-6dec9bf8c0e1b859703d7a5dfb87052cf4e87846.tar.gz |
This will allow it to easily map a single coderepo to multiple inboxes (or multiple coderepos to any number of inboxes). For now, this is just a summary, but $REPO/$OID/s/ support will be added, along with archive downloads. Indexing of coderepos will probably be supported via -extindex, only.
Diffstat (limited to 'lib/PublicInbox/GitAsyncCat.pm')
-rw-r--r-- | lib/PublicInbox/GitAsyncCat.pm | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/PublicInbox/GitAsyncCat.pm b/lib/PublicInbox/GitAsyncCat.pm index b32c2fd3..613dbf7e 100644 --- a/lib/PublicInbox/GitAsyncCat.pm +++ b/lib/PublicInbox/GitAsyncCat.pm @@ -45,6 +45,16 @@ sub event_step { } } +sub watch_cat { + my ($git) = @_; + $git->{async_cat} //= do { + my $self = bless { git => $git }, __PACKAGE__; + $git->{in}->blocking(0); + $self->SUPER::new($git->{in}, EPOLLIN|EPOLLET); + \undef; # this is a true ref() + }; +} + sub ibx_async_cat ($$$$) { my ($ibx, $oid, $cb, $arg) = @_; my $git = $ibx->{git} // $ibx->git; @@ -60,12 +70,7 @@ sub ibx_async_cat ($$$$) { \undef; } else { # read-only end of git-cat-file pipe $git->cat_async($oid, $cb, $arg); - $git->{async_cat} //= do { - my $self = bless { git => $git }, __PACKAGE__; - $git->{in}->blocking(0); - $self->SUPER::new($git->{in}, EPOLLIN|EPOLLET); - \undef; # this is a true ref() - }; + watch_cat($git); } } |