[Citadel Development] Re: connecting external applications to the autopurger...
doesn't the autopurger do the final clean up of these at nite too while on delete it just tags them deleted? ok, overwriting would be a problem, but would that message have the same citadel id? I'd primarily want something so an external application could do clean up of its database, so sort of writing a parseable journal of what we did would be sufficient imho. I guess writing a journal file while cleaning up our database can't be that expensive...
[Citadel Development] Re: connecting external applications to the autopurger...
For a manual delete, we remove the message number from the room's msglist and then write a record to refcount_adjustments.dat containing the msgnum and the number -1 to indicate that the message has been removed from one room. When the autopurger runs, one of the last things it does is to process that file in its entirety. Any message whose reference count reaches zero is then deleted from the database (after being removed from the full text index, of course).
[Citadel Development] Re: connecting external applications to the autopurger...
That sounds expensive. The autopurger lives in modules/expire/serv_expire.c Do you want notifications of a message's removal from disk, or from a particular room? If it is the latter then I suppose we could write out a flat file as we do the purge, and process it asynchronously later ... but what about a message which is manually deleted, or superseded by an incoming message with an identical EUID? Either action could end up making a user wait around while extra processing takes place.