Re: Patch: add header flag "calendar"
- From: José Dapena Paz <jdapena igalia com>
- To: Philip Van Hoof <spam pvanhoof be>
- Cc: tinymail-devel-list <tinymail-devel-list gnome org>
- Subject: Re: Patch: add header flag "calendar"
- Date: Tue, 22 Dec 2009 14:08:46 +0100
El mar, 22-12-2009 a las 13:33 +0100, Philip Van Hoof escribió:
> This way, however, you enlarge TnyHeader's size by at least 4 bytes (an
> entire pointer). Why? You are just storing a single bit.
The added space is exactly one pointer in CamelMessageInfoBase.
>
> You're apparently also adding a TnyHeaderSupportFlags, which is another
> 4 bytes. So that's 8 bytes to store a single bit.
No, it's implementation detail. The support flags are not stored, but
simply an override of the get_user_flag in camel. No actual storage.
>
> Why not simply use one of the least significant bits of the existing
> flags field?
I don't get what you're proposing. We need to add a place to store a
list of flags, or any other object structure that can handle a list of
strings. Adding an arbitrary flag was discarded (this was what I
proposed in previous patch).
>
> I can't approve this either. Those TnyHeader instances occur very often.
> So increasing its size by 8 bytes isn't acceptable.
The increase is 4 bytes. But anyway, there's no easy way to avoid this.
In fact it's a increase of 4 bytes on top of already 56 bytes of
previous format.
Another possibility is make the default implementation of camel-lite
provide no user flag (and then, we don't need any storage in message
info base). Would it be ok? I will only need these user flags in a
specific camel backend, so removing support for generic camel folder
summary, imap and pop, would be ok.
>
> On Tue, 2009-12-22 at 11:52 +0100, José Dapena Paz wrote:
> > El vie, 18-12-2009 a las 13:04 +0100, Philip Van Hoof escribió:
> > > On Fri, 2009-12-18 at 12:36 +0100, José Dapena Paz wrote:
> > >
> > > > Then we need to find a different way. The approach taken in camel is
> > > > storing this kind of information in the user flags, which is not
> > > > supported in camel lite (and also, not exposed in any way to tinymail).
> > > > As far as I remember, this is one of the things removed to keep small
> > > > tinymail/camel-lite folder summary storage.
> > > >
> > > > Or we can just add the user flags in this way:
> > > > * CamelMessageInfo: same API
> > > > * Add API to TnyHeader to get/set these flags
> > > > * Add a way to know the degree of support for these flags in the header
> > > > (no support, only memory storage, both memory and persistent storage).
> > > >
> > > > void tny_header_set_user_flag (TnyHeader *header, const gchar *name, gboolean flag)
> > > > void tny_header_get_user_flags (TnyHeader *header, TnyList *flags);
> > > >
> > > > TnyHeaderSupportFlagsType tny_header_support_user_flags (TnyHeader *header);
> > > > ^----- How could this be better implemented? :m
> > > >
> > > > Same for camel. We recover the userflags field. By default we would
> > > > only support storage in memory, and we could allow to set in some way if
> > > > support is also available to storage in disk. This info would be stored
> > > > in the CamelFolderSummary. This way, if we have (as we have now) some
> > > > provider that don't use the camel-lite summary, and provides special
> > > > flags, we could add access to it.
> > >
> > >
> > > This sounds good to me
> >
> > This patch implements the proposal for user flags. Finally it's a bit
> > different: we have a method tny_header_get_user_flag, and no way to
> > retrieve all the available headers. This is just to mimic the behavior
> > of the camel backend.
> >
> > Also, default implementation in camel is not persistent (and then, no
> > changes in summary format). But other backends may implement persistent
> > storage or some or all user flags.
> >
> > Attached is the patch implementation.
> >
> >
> > >
> > >
> >
> >
>
--
José Dapena Paz <jdapena igalia com>
Igalia
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]