]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiToMail.pm
ipc: wq_do => wq_io_do
[public-inbox.git] / lib / PublicInbox / LeiToMail.pm
index f925086098518f3de4bc1cc22dc64d0fb3e91250..3f65e9e99f5d1f9ac0a2250adb31a934d9f19532 100644 (file)
@@ -365,6 +365,7 @@ sub new {
        } else {
                die "bad mail --format=$fmt\n";
        }
+       $self->{dst} = $dst;
        $lei->{dedupe} = PublicInbox::LeiDedupe->new($lei);
        $self;
 }
@@ -471,15 +472,27 @@ sub ipc_atfork_child {
                close $zpipe->[0];
        }
        $self->{wcb} = $self->write_cb($lei);
+       $SIG{__WARN__} = PublicInbox::Eml::warn_ignore_cb();
        $self->SUPER::ipc_atfork_child;
 }
 
-sub write_mail { # via ->wq_do
+sub lock_free {
+       $_[0]->{base_type} =~ /\A(?:maildir|mh|imap|jmap)\z/ ? 1 : 0;
+}
+
+sub poke_dst {
+       my ($self) = @_;
+       if ($self->{base_type} eq 'maildir') {
+               my $t = time + 1;
+               utime($t, $t, "$self->{dst}/cur");
+       }
+}
+
+sub write_mail { # via ->wq_io_do
        my ($self, $git_dir, $smsg) = @_;
-       my $not_done = delete $self->{0} // die 'BUG: $not_done missing';
        my $git = $self->{"$$\0$git_dir"} //= PublicInbox::Git->new($git_dir);
        git_async_cat($git, $smsg->{blob}, \&git_to_mail,
-                               [$self->{wcb}, $smsg, $not_done]);
+                               [$self->{wcb}, $smsg]);
 }
 
 sub wq_atexit_child {