From 12269c757d9ffcf93ba23a39c8e12cd222c5ae82 Mon Sep 17 00:00:00 2001 From: Ben Burwell Date: Sat, 12 Oct 2019 22:17:29 -0400 Subject: Add threading support for maildir --- worker/maildir/worker.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'worker/maildir/worker.go') diff --git a/worker/maildir/worker.go b/worker/maildir/worker.go index 1df4e09..7bd7cbd 100644 --- a/worker/maildir/worker.go +++ b/worker/maildir/worker.go @@ -170,6 +170,8 @@ func (w *Worker) handleMessage(msg types.WorkerMessage) error { return w.handleOpenDirectory(msg) case *types.FetchDirectoryContents: return w.handleFetchDirectoryContents(msg) + case *types.FetchDirectoryThreaded: + return w.handleDirectoryThreaded(msg) case *types.CreateDirectory: return w.handleCreateDirectory(msg) case *types.FetchMessageHeaders: @@ -291,6 +293,19 @@ func (w *Worker) handleFetchDirectoryContents( return nil } +func (w *Worker) handleDirectoryThreaded(msg *types.FetchDirectoryThreaded) error { + threads, err := w.c.ScanThreads(*w.selected) + if err != nil { + w.worker.Logger.Printf("error scanning threads: %v", err) + return err + } + w.worker.PostMessage(&types.DirectoryThreaded{ + Message: types.RespondTo(msg), + Threads: threads, + }, nil) + return nil +} + func (w *Worker) sort(uids []uint32, criteria []*types.SortCriterion) ([]uint32, error) { if len(criteria) == 0 { return uids, nil -- cgit v1.2.3