►NG | Low-level classes |
NCodePage | Windows codepage conversion functions |
NIdn | Internationalised Domain Name encoding |
NRandom | An enclosing namespace for G::Random::rand() |
NRange | Utility functions for pair-of-integer ranges |
►NSlot | A callback mechanism that isolates event sinks from event sources |
CBinder | A functor class template that contains the target object pointer and method pointer, similar to c++20 bind_front(&T::fn,tp) |
CSignal | A slot holder, with connect() and emit() methods |
CSlot | A slot class template that is parameterised only on the target method's signature (with an implicit void return) and not on the target class |
►NStringList | Utility functions for lists of strings |
CFilter | Filters a list of strings with allow and deny lists |
CArg | A class which holds a represention of the argc/argv command line array, and supports simple command-line parsing |
CBase64 | A base64 codec class |
Cbasic_imembuf | An input streambuf that takes its data from a fixed-size const buffer |
Cbasic_omembuf | An output streambuf that writes to a fixed-size char buffer |
CBasicAddress | A structure that holds a network address as a string with no dependency on any low-level network library |
CBatchFile | A class for reading and writing windows-style startup batch files containing a single command-line, optionally using "start" |
CBrokenDownTime | An encapsulation of 'struct std::tm' |
CBuffer | A substitute for std::vector<char> that has more useful alignment guarantees and explicitly avoids default initialisation of each element |
CCallFrame | An object to represent a nested execution context |
CCallStack | A linked list of CallFrame pointers |
►CCleanup | A static interface for registering cleanup functions that are called when the process terminates abnormally |
CArg | Opaque leaky string pointer wrapper created by G::Cleanup::arg() |
CBlock | A RAII class to temporarily block signal delivery |
CConvert | A static class which provides string encoding conversion functions between UTF-8 and wchar_t |
CDaemon | A static interface for daemonising the calling process |
►CDate | A day-month-year date class |
CLocalTime | An overload discriminator class for Date constructors |
CDateTime | A static class that knows about timezone offsets |
CDirectory | An encapsulation of a file system directory that works with G::DirectoryIterator |
CDirectoryIterator | A iterator that returns unsorted filenames in a directory |
►CDirectoryList | A iterator similar to G::DirectoryIterator but doing all file i/o in one go and providing a sorted result |
CItem | A directory-entry item for G::DirectoryList |
CEnvironment | Holds a set of environment variables and also provides static methods to wrap getenv() and putenv() |
CException | A general-purpose exception class derived from std::exception and containing an error message |
CExecutableCommand | A structure representing an external program, holding a path and a set of arguments |
Cfbuf | A simple file streambuf using a "file descriptor" and three function pointers for read, write and close operations |
►CFile | A simple static class for dealing with files |
CAppend | An overload discriminator for G::File::open() |
CCreateExclusive | An overload discriminator for G::File::open() |
CStat | A portable 'struct stat' |
CText | An overload discriminator for G::File::open() |
Cformat | A simple version of boost::format for formatting strings in an i18n-friendly way |
CGetOpt | A command-line option parser |
►CHash | A class for creating HMACs using an arbitrary cryptographic hash function as per RFC-2104 |
CMasked | An overload discriminator for G::Hash::hmac() |
CHashState | Functions for representing the intermediate state of a hash function as a non-printable string |
CIdentity | A combination of user-id and group-id, with a very low-level interface to the get/set/e/uid/gid functions |
CLimits | A set of compile-time buffer sizes |
CLimits< G::Scale::Normal > | Normal specialisation of G::Limits |
CLimits< G::Scale::Small > | Small-memory specialisation of G::Limits |
►CLogOutput | Controls and implements low-level logging output, as used by G::Log |
CConfig | A configuration structure for G::LogOutput |
CInstance | A set of convenience functions for calling LogOutput methods on LogOutput::instance() |
CLogStream | A non-throwing copyable wrapper for std::ostream, used by G::LogOutput and associated logging macros |
►CMapFile | A class for reading, writing and editing key=value files, supporting variable expansion of percent-key-percent values, comments, creation of backup files, and logging |
CError | Exception class for G::MapFile |
►CMd5 | MD5 message digest class |
Cdigest_state | Holds the four parts of the md5 state |
Cdigest_stream_state | Holds the md5 state plus unprocessed residual data |
CMsg | Wrappers for sendmsg() and recvmsg() |
►CNewProcess | A class for creating new processes |
CConfig | Configuration structure for G::NewProcess |
CFd | Wraps up a file descriptor for passing to G::NewProcess |
CNewProcessWaitable | Holds the parameters and future results of a waitpid() system call |
COption | A structure representing a G::Options command-line option |
Coptional | A class template like a simplified c++17 std::optional |
COptionMap | A multimap-like container for command-line options and their values |
COptionParser | A parser for command-line arguments that operates according to an Options specification and returns an OptionValue multimap |
COptionReader | Provides a static function to read options from a config file |
COptions | A class to assemble a list of command-line options and provide access by name |
►COptionsUsage | Provides help text for a set of options |
CConfig | A configuration structure for G::OptionsUsage |
COptionValue | A simple structure encapsulating the value of a command-line option |
►CPam | A thin interface to the system PAM library, with two pure virtual methods that derived classes should implement: the converse() method supplies passwords etc |
CError | An exception class for G::Pam |
CItem | A structure used by G::Pam to hold conversation items |
CPath | A Path object represents a file system path |
CPidFile | A class for creating pid files |
►CProcess | A static interface for doing things with processes |
CId | Process-id class |
CUmask | Used to temporarily modify the process umask |
CReadWrite | An abstract interface for reading and writing from a non-blocking i/o channel |
CRoot | A class which acquires the process's special privileges on construction and releases them on destruction |
CScopeExit | A class that calls an exit function at the end of its scope |
CScopeExitSet | A class that sets a simple variable to a particular value at the end of its scope |
CSignalSafe | An empty structure that is used to indicate a signal-safe, reentrant implementation |
CStateMachine | A finite state machine class template |
►CStr | A static class which provides string helper functions |
CHex | Overload discrimiator for G::Str::toUWhatever() indicating hexadecimal strings |
CLimited | Overload discrimiator for G::Str::toUWhatever() requesting a range-limited result |
Cstring_view | A class like c++17's std::string_view |
CStringFieldIteratorT | A standard forward iterator for G::StringFieldT: |
CStringFieldT | A zero-copy string field iterator where the field separators are short fixed strings |
CStringTokenT | A zero-copy string token iterator where the token separators are runs of whitespace characters, with no support for escape characters |
CStringWrap | A word-wrap class |
CSystemTime | Represents a unix-epoch time with microsecond resolution |
CTest | A static interface for enabling test features at run-time |
Cthreading | Helper class for std::thread capabilities |
►CTime | A simple time-of-day (hh/mm/ss) class |
CLocalTime | An overload discriminator class for Time constructors |
CTimeInterval | An interval between two G::SystemTime values or two G::TimerTime values |
CTimerTime | A monotonically increasing subsecond-resolution timestamp, notionally unrelated to time_t |
CXtext | An xtext codec class, encoding space as "+20" etc |
►NGAuth | SASL authentication classes |
CCram | Implements the standard challenge-response authentication mechanism of RFC-2195 |
►CSaslClient | A class that implements the client-side SASL challenge/response concept |
CResponse | Result structure returned from GAuth::SaslClient::response |
CSaslClientSecrets | An interface used by GAuth::SaslClient to obtain a client id and its authentication secret |
CSaslServer | An interface for implementing the server-side SASL challenge/response concept |
CSaslServerBasic | An implementation of the SaslServer interface that does not use PAM |
CSaslServerFactory | Provides a factory function for SaslServer instances |
CSaslServerPam | An implementation of the SaslServer interface using PAM as the authentication mechanism |
CSaslServerSecrets | An interface used by GAuth::SaslServer to obtain authentication secrets |
CSecret | Encapsulates a userid/shared-secret/hash-function tuple from the secrets file |
CSecrets | Provides factory functions for client and server secrets objects |
CSecretsFile | A class to read authentication secrets from file, used by GAuth::Secrets |
CSecretsFileClient | A thin adapter between GAuth::SecretsFile and GAuth::SaslClientSecrets returned by GAuth::Secrets::newClientSecrets() |
CSecretsFileServer | A thin adapter between GAuth::SecretsFile and GAuth::SaslServerSecrets returned by GAuth::Secrets::newServerSecrets() |
►NGFilters | Message filter classes |
CCopyFilter | A concrete GSmtp::Filter class that copies the message to all pre-existing sub-directories of the spool directory |
CDeliveryFilter | A concrete GSmtp::Filter class that copies the message to multiple spool sub-directories according to the envelope recipient list |
CExecutableFilter | A Filter class that runs an external helper program |
CFilterChain | A Filter class that runs a sequence of sub-filters |
CFilterFactory | A FilterFactory implementation |
CMessageIdFilter | A filter that adds a RFC-822 Message-ID to the message content if it does not have one already |
CMxFilter | A concrete GSmtp::Filter class for message routing: if the message's 'forward-to' envelope field is set then the 'forward-to-address' field is populated with the result of a MX lookup |
►CMxLookup | A DNS MX lookup client |
CConfig | A configuration structure for GFilters::MxLookup |
CNetworkFilter | A Filter class that passes the name of a message file to a remote network server |
CNullFilter | A Filter class that does nothing |
CSimpleFilterBase | A GSmtp::Filter base class for filters that run synchronously |
CSpamFilter | A Filter class that passes the body of a message file to a remote process over the network and optionally stores the response back into the file |
CSplitFilter | A concrete GSmtp::Filter class for message routing: if the message has recipients for multiple domains then it is split up into a separate message for each domain, with the forward-to envelope field containing the domain name |
►NGNet | Network classes |
CAcceptInfo | A move-only class which is used to return a new()ed socket to calling code, together with associated address information |
►CAddress | The GNet::Address class encapsulates a TCP/UDP transport address |
CDomain | Overload discriminator for Address::supports() |
CNotLocal | Overload discriminator for Address::parse() |
CAddress4 | A 'sockaddr' wrapper class for IPv4 addresses |
CAddress6 | A 'sockaddr' wrapper class for IPv6 addresses |
CAddressLocal | A 'sockaddr' wrapper class for local-domain addresses |
CAddressStorage | A helper class for calling accept(), getsockname() and getpeername() and hiding the definition of sockaddr_storage |
►CClient | A class for making an outgoing connection to a remote server, with support for socket-level protocols such as TLS/SSL and SOCKS 4a |
CConfig | A structure containing GNet::Client configuration parameters |
CClientPtr | A smart pointer class for GNet::Client or similar |
CClientPtrBase | The non-template part of GNet::ClientPtr |
CConnection | An abstract interface which provides information about a network connection |
►CDatagramSocket | A derivation of GNet::Socket for a datagram socket |
CConfig | A configuration structure for GNet::DatagramSocket |
CDescriptor | A class that encapsulates a network socket file descriptor and an associated windows event handle |
CDnsbl | A minimal bridge to GNet::DnsBlock |
CDnsBlock | Implements DNS blocklisting, as per RFC-5782 |
CDnsBlockCallback | A callback interface for GNet::DnsBlock |
CDnsBlockResult | A result structure for GNet::DnsBlock, as delivered by the DnsBlockCallback interface |
CDnsBlockServerResult | A result structure for one DNSBL server |
CDnsMessage | A DNS message parser, with static factory functions for message composition |
CDnsMessageNameParser | An implementation class used by GNet::DnsMessage to parse compressed domain names |
CDnsMessageQuestion | Represents DNS question record |
CDnsMessageRecordType | A static class for mapping between a RR type name, such as "AAAA", and its corresponding numeric value |
CDnsMessageRequest | Represents a DNS query message |
CDnsMessageRR | Represents DNS response record |
CDnsMessageRRData | A trivial mix-in base class that simplifies method names when accessing data from a DnsMessageRR derived class |
CDone | An exception class that is caught separately by GNet::EventEmitter and GNet::TimerList so that onException() callbacks have their 'done' parameter set |
CEventEmitter | Provides static methods to raise an EventHandler event, as used by the various event loop implementations |
CEventHandler | A base class for classes that have a file descriptor and handle asynchronous events from the event loop |
CEventLogging | An interface for GNet classes that define a logging context string |
CEventLoggingContext | A class that sets the G::LogOuput::context() while in scope |
CEventLoop | An abstract base class for a singleton that keeps track of open sockets and their associated handlers |
►CEventState | A lightweight object containing an ExceptionHandler pointer, optional ExceptionSource pointer and optional EventLogging pointer |
CPrivate | Overload discriminator for GNet::EventState |
CEventStateUnbound | Used as a device to force factory methods to plumb-in an ExceptionSource pointer into the newly-created object as soon as its address is available, before the EventState propagates into base classes and sub-objects |
CExceptionHandler | An abstract interface for handling exceptions thrown out of event-loop callbacks (socket/future events and timer events) |
CExceptionSource | A mixin base class that identifies the source of an exception when delivered to GNet::ExceptionHandler |
CFutureEvent | A FutureEvent object can be used to send a one-shot event between threads via the event loop, resulting in a call to the relevant event handler |
CFutureEventHandler | A callback interface for GNet::FutureEvent |
►CInterfaces | A class for getting a list of network interfaces and their addresses |
CItem | Used by GNet::Interfaces to describe an interface address binding |
CInterfacesHandler | An interface for receiving notification of network changes |
CInterfacesNotifier | A pimple base-class used by GNet::Interfaces |
►CLineBuffer | A class that does line buffering, supporting auto-detection of line endings and fixed-size block extraction |
CConfig | A configuration structure for GNet::LineBuffer |
CLineBufferState | Provides information about the state of a line buffer |
CLineStore | A pair of character buffers, one kept by value and the other being an ephemeral extension |
CLineStoreIterator | An iterator class for GNet::LineStore |
CListener | An interface for a network listener |
CListeners | Represents a set of listening inputs which can be file-descriptor, interface or network address |
CLocal | A static class for getting information about the local machine's network name and address |
CLocation | A class that represents the remote target for out-going client connections |
CMonitor | A singleton for monitoring GNet::Client and GNet::ServerPeer connections |
►CMultiServer | A server that listens on more than one address using a facade pattern to multiple GNet::Server instances |
CServerInfo | A structure used in GNet::MultiServer::newPeer() |
CRawSocket | A derivation of GNet::SocketBase for a raw socket, typically of type AF_NETLINK or PF_ROUTE |
►CResolver | A class for synchronous or asynchronous network name to address resolution |
CCallback | An interface used for GNet::Resolver callbacks |
CConfig | A configuration structure for GNet::Resolver |
►CResolverFuture | A 'future' shared-state class for asynchronous name resolution that holds parameters and results of a call to getaddrinfo(), as performed by the run() method |
CResult | Result structure for GNet::ResolverFuture::get() |
►CServer | A network server class which listens on a specific port and spins off ServerPeer objects for each incoming connection |
CConfig | A configuration structure for GNet::Server |
►CServerPeer | An abstract base class for the GNet::Server's connection to a remote client |
CConfig | A configuration structure for GNet::ServerPeer |
CServerPeerInfo | A move-only structure used in GNet::Server::newPeer() and containing the new socket |
►CSocket | An internet-protocol socket class |
CAdopted | Overload discriminator class for GNet::Socket |
CConfig | A configuration structure for GNet::Socket |
►CSocketBase | A socket base class that holds a non-blocking socket file descriptor and interfaces to the event loop |
CAccepted | Overload discriminator class for GNet::SocketBase |
CRaw | Overload discriminator class for GNet::SocketBase |
CSocketBindError | Exception class for GNet::SocketBase bind failures |
►CSocketProtocol | An interface for implementing a low-level TLS/SSL protocol layer on top of a connected non-blocking socket |
CConfig | A configuration structure for GNet::SocketProtocol |
CSocketProtocolSink | An interface used by GNet::SocketProtocol to deliver data from a socket |
CSocks | Implements the SOCKS4a proxy connection protocol |
►CStreamSocket | A derivation of GNet::Socket for a stream socket |
CConfig | A configuration structure for GNet::StreamSocket |
CListener | Overload discriminator class for GNet::StreamSocket |
CTask | A class for running an exectuable in a separate process with an asychronous completion callback |
CTaskCallback | An abstract interface for callbacks from GNet::Task |
CTimer | A timer class template in which the timeout is delivered to the specified method |
CTimerBase | An interface used by GNet::TimerList to keep track of pending timeouts and to deliver timeout events |
CTimerList | A singleton which maintains a list of all Timer objects, and interfaces to the event loop on their behalf |
►NGPop | POP3 classes |
►CServer | A POP server class |
CConfig | A structure containing GPop::Server configuration parameters |
CServerPeer | Represents a connection from a POP client |
►CServerProtocol | Implements the POP server-side protocol |
CConfig | A structure containing configuration parameters for ServerProtocol |
CSecurity | An interface used by ServerProtocol to enable TLS |
CSender | An interface used by ServerProtocol to send protocol replies |
CText | An interface used by ServerProtocol to provide response text strings |
CServerProtocolText | A default implementation for the ServerProtocol::Text interface |
►CStore | A message store |
CConfig | Configuration structure for GPop::Store |
CStoreList | Represents the protocol's view of the pop store having 1-based message ids |
CStoreMessage | A structure representing a pop message |
CStoreUser | Holds the list of messages available to a particular pop user |
►NGSmtp | SMTP classes |
►CAdminServer | A server class which implements the emailrelay administration interface |
CConfig | A configuration structure for GSmtp::AdminServer |
CAdminServerPeer | A derivation of ServerPeer for the administration interface |
►CClient | A class which acts as an SMTP client, sending messages to a remote SMTP server |
CConfig | A structure containing GSmtp::Client configuration parameters |
CMessageDoneInfo | Signal parameters for GNet::Client::messageDoneSignal() |
►CClientProtocol | Implements the client-side SMTP protocol |
CConfig | A structure containing GSmtp::ClientProtocol configuration parameters |
CDoneInfo | Parameters for GSmtp::ClientProtocol::doneSignal() |
CSender | An interface used by ClientProtocol to send protocol messages |
CClientReply | Encapsulates SMTP replies from a remote client, or replies from a client filter, or the result of a TLS handshake |
►CFilter | An interface for processing a message file through a filter |
CConfig | Configuration passed to filter constructors |
CExit | Interprets an executable filter's exit code |
►CFilterFactoryBase | A factory interface for making GSmtp::Filter message processors |
CSpec | Filter specification tuple for GSmtp::FilterFactoryBase::newFilter() |
CForward | A class for forwarding messages from a message store that manages a GSmtp::Client instance, connecting and disconnecting as necessary to do routing and re-authentication |
►CProtocolMessage | An interface used by the ServerProtocol class to assemble and process an incoming message |
CFromInfo | Extra information from the SMTP MAIL-FROM command passed to GSmtp::ProtocolMessage::setFrom() |
CProcessedInfo | Parameters for GSmtp::ProtocolMessage::processedSignal() |
CToInfo | Extra information passed to GSmtp::ProtocolMessage::addTo() |
CProtocolMessageForward | A concrete implementation of the ProtocolMessage interface that stores incoming messages in the message store and then immediately forwards them on to the downstream server |
CProtocolMessageStore | A concrete implementation of the ProtocolMessage interface that stores incoming messages in the message store |
CRequestClient | A network client class that interacts with a remote server using a stateless line-based request/response protocol |
►CServer | An SMTP server class |
CConfig | A configuration structure for GSmtp::Server |
►CServerBufferIn | A helper class for GSmtp::ServerProtocol that does buffering of data received from the remote peer and apply()s it to the server protocol |
CConfig | A configuration structure for GSmtp::ServerBufferIn |
►CServerParser | A static class for SMTP command parsing, used by GSmtp::ServerProtocol as a mix-in base |
CAddressCommand | Mail-from or rcpt-to |
CConfig | A configuration structure for GSmtp::ServerParser |
CServerPeer | Handles a connection from a remote SMTP client |
►CServerProtocol | Implements the SMTP server-side protocol |
CConfig | A configuration structure for GSmtp::ServerProtocol |
CText | An interface used by GSmtp::ServerProtocol to provide response text strings |
►CServerSend | A simple mix-in class for GSmtp::ServerProtocol that sends protocol responses via a GSmtp::ServerSender |
CAdvertise | Configuration for the EHLO response |
CServerSender | An interface used by ServerProtocol to send protocol responses |
CServerText | A default implementation of the GSmtp::ServerProtocol::Text interface |
CSpamClient | A client class that interacts with a remote process using a protocol somewhat similar to the spamassassin spamc/spamd protocol |
►CVerifier | An asynchronous interface that verifies recipient 'to' addresses |
CConfig | Configuration passed to address verifier constructors |
CRequest | Verification request passed to various GSmtp::Verifier::verify() overrides |
►CVerifierFactoryBase | A factory interface for addresss verifiers |
CSpec | Verifier specification tuple for GSmtp::VerifierFactoryBase::newVerifier() |
CVerifierStatus | A structure returned by GSmtp::Verifier to describe the status of a 'rcpt-to' or 'vrfy' recipient |
►NGSsl | TLS/SSL transport layer security classes |
►NMbedTls | A namespace for implementing the GSsl interface using the mbedtls library |
CCertificate | Holds a mbedtls_x509_crt structure |
CConfig | Holds protocol version information, etc |
CContext | Holds a mbedtls_ssl_context structure |
CError | An exception class for GSsl::MbedTls classes |
CKey | Holds a mbedtls_pk_context structure |
CRng | Holds a mbedtls_ctr_drbg_context structure |
CSecureFile | An interface for reading a sensitive file and then overwriting its contents in memory |
CX | Initialises and frees an mbedtls object on construction and destruction |
►NOpenSSL | A namespace for implementing the GSsl interface using the OpenSSL library |
CCertificate | Holds a certificate taken from an OpenSSL X509 structure |
CCertificateChain | Holds a certificate chain taken from a stack of OpenSSL X509 structures |
CConfig | Holds protocol version information, etc |
CError | An exception class for GSsl::OpenSSL classes |
CDigester | A class for objects that can perform a cryptographic hash |
CDigesterImpBase | A base interface for GSsl::Digester pimple classes |
CLibrary | A singleton class for initialising the underlying TLS library |
CLibraryImpBase | A base interface for GSsl::Library pimple classes |
CProfile | A base interface for profile classes that work with concrete classes derived from GSsl::LibraryImpBase and GSsl::ProtocolImpBase |
CProtocol | A TLS protocol class |
CProtocolImpBase | A base interface for GSsl::Protocol pimple classes |
►NGStore | Message store classes |
CDirectoryReader | Used by GStore::FileStore, GStore::NewFile and GStore::StoredFile to claim read permissions for reading a directory |
CEnvelope | A structure containing the contents of an envelope file, with support for file reading, writing and copying |
►CFileDelivery | An implementation of the MessageDelivery interface that delivers message files to mailboxes |
CConfig | A configuration structure for GStore::FileDelivery |
CFileIterator | A GStore::MessageStore::Iterator for GStore::FileStore |
CFileReader | Used by GStore::FileStore, GStore::NewFile and GStore::StoredFile to claim read permissions for reading a file |
►CFileStore | A concrete implementation of the MessageStore interface dealing in paired flat files |
CConfig | Configuration structure for GStore::FileStore |
CFileOp | Low-level file-system operations for GStore::FileStore |
CFileWriter | Used by GStore::FileStore, GStore::NewFile and GStore::StoredFile to claim write permissions |
CMessageDelivery | An interface to deliver a message to its local recipients' mailboxes |
CMessageId | A somewhat opaque identifer for a GStore::MessageStore message id |
►CMessageStore | A class which allows SMTP messages to be stored and retrieved |
CIterator | A base class for GStore::MessageStore iterators |
CSmtpInfo | Information on the SMTP options used when submitted |
CNewFile | A concrete class implementing the GStore::NewMessage interface using files |
CNewMessage | An abstract class to allow the creation of a new message in the message store |
CStoredFile | A concete class implementing the GStore::StoredMessage interface for separate envelope and content files in a spool directory |
CStoredMessage | An abstract interface for messages which have come from the store |
►NGVerifiers | Address verifier classes |
CExecutableVerifier | A Verifier that runs an executable |
CInternalVerifier | The standard internal Verifier that accepts all mailbox names |
CNetworkVerifier | A Verifier that talks to a remote address verifier over the network |
CUserVerifier | A concrete Verifier class that verifies against the password database (ie |
CVerifierFactory | A VerifierFactory implementation |
NMain | Application-level classes |
Nstd | STL namespace |