From 6171cb0d7fe0ac8f6352b8d3b9b87d56c56cf791 Mon Sep 17 00:00:00 2001 From: dakkar Date: Thu, 26 Dec 2019 20:13:58 +0000 Subject: restructure store, extract server now Store has a set of Index, which actually do the indexing Store also runs the scan-dir (this may not be ideal, but will do for now) Server handles I/O --- bayes | 46 ++++++++-------------------------------------- 1 file changed, 8 insertions(+), 38 deletions(-) (limited to 'bayes') diff --git a/bayes b/bayes index e3814fc..0bb9d3e 100644 --- a/bayes +++ b/bayes @@ -1,47 +1,17 @@ #!/usr/bin/env perl6 use v6.d.PREVIEW; use lib 'lib'; -use MaildirIndexer::ScanDir; use MaildirIndexer::Store; -use MaildirIndexer::Parser; +use MaildirIndexer::Server; +use MaildirIndexer::Index::ByRef; 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, + my $store = MaildirIndexer::Store.new( + :$maildir, + indices => MaildirIndexer::Index::ByRef.new, ); - 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"); - } - } - } - } + my $server = MaildirIndexer::Server.new(:$store); + $store.start(); + $server.serve() } -- cgit v1.2.3