def build_message docid
@index_mutex.synchronize do
doc = @index[docid] or return
source = SourceManager[doc[:source_id].to_i]
raise "invalid source #{doc[:source_id]}" unless source
fake_header = {
"date" => Time.at(doc[:date].to_i),
"subject" => unwrap_subj(doc[:subject]),
"from" => doc[:from],
"to" => doc[:to].split.join(", "),
"message-id" => doc[:message_id],
"references" => doc[:refs].split.map { |x| "<#{x}>" }.join(" "),
}
m = Message.new :source => source, :source_info => doc[:source_info].to_i,
:labels => doc[:label].to_set_of_symbols,
:snippet => doc[:snippet]
m.parse_header fake_header
m
end
end