Per-message classes
-------------------
-* PublicInbox::MIME - Email::MIME subclass
- Common abbreviation: $mime
+* PublicInbox::Eml - Email::MIME-like class
+ Common abbreviation: $mime, $eml
Used by: PublicInbox::WWW, PublicInbox::SearchIdx
- An representation of an entire email, multipart or not. It's
- a subclass of Email::MIME to workaround bugs in old
- Email::MIME versions. An option to use libgmime or libmailutils
- may be supported in the future for performance and memory use.
+ An representation of an entire email, multipart or not.
+ An option to use libgmime or libmailutils may be supported
+ in the future for performance and memory use.
This can be a memory hog with big messages and giant
attachments, so our PublicInbox::WWW interface only keeps
Our PublicInbox::V2Writable class may have two objects of this
type in memory at-a-time for deduplication.
-* PublicInbox::SearchMsg - small message skeleton
+ In public-inbox 1.4 and earlier, Email::MIME and its subclass,
+ PublicInbox::MIME were used. Despite still slurping,
+ PublicInbox::Eml is faster and uses less memory due to
+ lazy header parsing and lazy subpart instantiation with
+ shorter object lifetimes.
+
+* PublicInbox::Smsg - small message skeleton
Used by: PublicInbox::{NNTP,WWW,SearchIdx}
Common abbreviation: $smsg
There may be hundreds or thousands of these objects in memory
at-a-time, so fields are pruned if unneeded.
-* PublicInbox::SearchThread::Msg - container for message threading
+* PublicInbox::SearchThread::Msg - subclass of Smsg
Common abbreviation: $cont or $node
Used by: PublicInbox::WWW
- The container we use for a non-recursive[1] variant of
+ The structure we use for a non-recursive[1] variant of
JWZ's algorithm: <https://www.jwz.org/doc/threading.html>.
- This holds a $smsg and is only used for message threading.
- This wrapper class may go away in the future and handled
- directly by PublicInbox::SearchMsg to save memory.
+ Nowadays, this is a re-blessed $smsg with additional fields.
As with $smsg objects, there may be hundreds or thousands
of these objects in memory at-a-time.
given PublicInbox::Config which may be instantiated more than
once in the future.
-* PublicInbox::ParentPipe
-
- Per-worker process class to detect shutdown of master process.
- This is not used if using -W0 to disable worker processes
- in public-inbox-httpd or public-inbox-nntpd.
+* PublicInbox::EOFpipe
- This is a per-worker singleton.
+ Used throughout to trigger a callback when a pipe(7) is closed.
+ This is frequently used to portably detect process exit without
+ relying on a catch-all waitpid(-1, ...) call.