#!/usr/bin/env perl6 use v6.d.PREVIEW; use lib 'lib'; use MaildirIndexer::ScanDir; use MaildirIndexer::Store; use MaildirIndexer::Parser; sub MAIN($maildir) { my $store = MaildirIndexer::Store.new; my $file-supply = scan-dir($maildir); my $file-channel = $file-supply.Channel; for ^10 { start react { whenever $file-channel -> $file { if $file.e && $file.f { $store.add-file($file); } elsif !$file.e { $store.del-file($file); } } } } my $listener = IO::Socket::Async.listen( '127.0.0.1', 9000, :enc, ); react { whenever signal(SIGINT) { exit } whenever signal(SIGHUP) { $store.dump(); } whenever $listener -> $conn { LEAVE { $conn.close } with parse-email($conn) -> $email { with $store.mailbox-for-email($email) -> $mailbox { await $conn.print("$mailbox\x0d\x0a"); } } } } }