<feed xmlns='http://www.w3.org/2005/Atom'>
<title>notmuch/lib/messages.c, branch 0.3</title>
<subtitle>thread-based email index, search, and tagging</subtitle>
<id>https://git.notmuchmail.org/git/notmuch/atom?h=0.3</id>
<link rel='self' href='https://git.notmuchmail.org/git/notmuch/atom?h=0.3'/>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/'/>
<updated>2010-03-09T17:22:29Z</updated>
<entry>
<title>lib: Rename iterator functions to prepare for reverse iteration.</title>
<updated>2010-03-09T17:22:29Z</updated>
<author>
<name>Carl Worth</name>
<email>cworth@cworth.org</email>
</author>
<published>2010-03-09T17:22:29Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=4e5d2f22db290a830c0267f34b519c6138af00ed'/>
<id>urn:sha1:4e5d2f22db290a830c0267f34b519c6138af00ed</id>
<content type='text'>
We rename 'has_more' to 'valid' so that it can function whether
iterating in a forward or reverse direction. We also rename
'advance' to 'move_to_next' to setup parallel naming with
the proposed functions 'move_to_first', 'move_to_last', and
'move_to_previous'.
</content>
</entry>
<entry>
<title>lib: New function to collect tags from a list of messages.</title>
<updated>2009-11-26T15:06:04Z</updated>
<author>
<name>Jan Janak</name>
<email>jan@ryngle.com</email>
</author>
<published>2009-11-25T03:30:21Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=523a6f67ecc94efd37dcdf570d66edc62497a8fb'/>
<id>urn:sha1:523a6f67ecc94efd37dcdf570d66edc62497a8fb</id>
<content type='text'>
This patch adds a new function that can be used to collect a list of
unique tags from a list of messages. 'notmuch search-tags' uses the
function to get a list of tags from messages matching a search-term,
but it has the potential to be used elsewhere so we put it in the lib.

Signed-off-by: Jan Janak &lt;jan@ryngle.com&gt;
</content>
</entry>
<entry>
<title>lib/messages.c: Make message searches stream as well.</title>
<updated>2009-11-24T19:33:09Z</updated>
<author>
<name>Carl Worth</name>
<email>cworth@cworth.org</email>
</author>
<published>2009-11-24T05:47:24Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=70962fabf9c57cda5af26c28894fc9371fd085f2'/>
<id>urn:sha1:70962fabf9c57cda5af26c28894fc9371fd085f2</id>
<content type='text'>
Xapian provides an interator-based interface to all search results.
So it was natural to make notmuch_messages_t be iterator-based as
well. Which we did originally.

But we ran into a problem when we added two APIs, (_get_replies and
_get_toplevel_messages), that want to return a messages iterator
that's *not* based on a Xapian search result. My original compromise
was to use notmuch_message_list_t as the basis for all returned
messages iterators in the public interface.

This had the problem of introducing extra latency at the beginning
of a search for messages, (the call would block while iterating over
all results from Xapian, converting to a message list).

In this commit, we remove that initial conversion and instead provide
two alternate implementations of notmuch_messages_t (one on top of a
Xapian iterator and one on top of a message list).

With this change, I tested a "notmuch search" returning *many* results
as previously taking about 7 seconds before results started appearing,
and now taking only 2 seconds.
</content>
</entry>
<entry>
<title>add_message: Don't add any self-references to the database.</title>
<updated>2009-11-18T01:55:37Z</updated>
<author>
<name>Carl Worth</name>
<email>cworth@cworth.org</email>
</author>
<published>2009-11-18T01:20:32Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=64c03ae97f2f5294c60ef25d7f41849864e6ebd3'/>
<id>urn:sha1:64c03ae97f2f5294c60ef25d7f41849864e6ebd3</id>
<content type='text'>
In our scheme it's illegal for any message to refer to itself, (nor
would it be useful for anything anyway). Cut these self-references off
at the source, before they trip up any internal errors.
</content>
</entry>
<entry>
<title>lib/messages: Add new notmuch_message_list_t to internal interface.</title>
<updated>2009-11-16T04:31:30Z</updated>
<author>
<name>Carl Worth</name>
<email>cworth@cworth.org</email>
</author>
<published>2009-11-16T04:29:13Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=f970d8078cc29f876bebe02937307a5a8f2d394f'/>
<id>urn:sha1:f970d8078cc29f876bebe02937307a5a8f2d394f</id>
<content type='text'>
Previously, the notmuch_messages_t object was a linked list built on
top of a linked-list node with the odd name of notmuch_message_list_t.

Now, we've got much more sane naming with notmuch_message_list_t being
a list built on a linked-list node named notmuch_message_node_t. And
now the public notmuch_messages_t object is a separate iterator based
on notmuch_message_node_t. This means the interfaces for the new
notmuch_message_list_t object are now made available to the library
internals.
</content>
</entry>
<entry>
<title>lib: Move notmuch_messages_t code from query.cc to new messages.c</title>
<updated>2009-11-15T07:05:17Z</updated>
<author>
<name>Carl Worth</name>
<email>cworth@cworth.org</email>
</author>
<published>2009-11-15T07:05:17Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=d3349358c6a5048559bd2a4faebe476ebd222170'/>
<id>urn:sha1:d3349358c6a5048559bd2a4faebe476ebd222170</id>
<content type='text'>
The new object is simply a linked-list of notmuch_message_t objects,
(unlike the old object which contained a couple of Xapian iterators).
This works now by the query code immediately iterator over all results
and creating notmuch_message_t objects for them, (rather than waiting
to create the objects until the notmuch_messages_get call as we did
earlier).

The point of this change is to allow other instances of lists of
messages, (such as in notmuch_thread_t), that are not directly related
to Xapian search results.
</content>
</entry>
</feed>
