diff options
author | dakkar <dakkar@thenautilus.net> | 2019-12-26 20:13:58 +0000 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2019-12-26 20:13:58 +0000 |
commit | 6171cb0d7fe0ac8f6352b8d3b9b87d56c56cf791 (patch) | |
tree | 98b6f42a0ab9939f78134b27f780261211845968 /bayes | |
parent | test email (diff) | |
download | MaildirIndexer-6171cb0d7fe0ac8f6352b8d3b9b87d56c56cf791.tar.gz MaildirIndexer-6171cb0d7fe0ac8f6352b8d3b9b87d56c56cf791.tar.bz2 MaildirIndexer-6171cb0d7fe0ac8f6352b8d3b9b87d56c56cf791.zip |
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
Diffstat (limited to 'bayes')
-rw-r--r-- | bayes | 46 |
1 files changed, 8 insertions, 38 deletions
@@ -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<utf8-c8>, + 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() } |