The C++ framework for developing highly scalable, high performance servers on Windows platforms.

RAII - Resource Acquisition Is Initialization
[Patterns with a small 'p']

Collaboration diagram for RAII - Resource Acquisition Is Initialization:

Detailed Description

This simple idiom relies on the lifetime of an object to control the lifetime of an associated resource. In essence, the resource is released when the object is destroyed. This gives us simple, scope-based usage of resources that is safe in the presence of exceptions and multiple function exit points. See here for more details.

This section contains links to the code that implements this concept.


Modules

 Smart Pointer
 A smart pointer is a generic term for an object that helps with RAII style 'scope based' designs. The 'smart pointer' usually takes ownership of a 'bare' pointer and takes responsibility for destroying the 'bare' pointer when the 'smart pointer' goes out of scope. See here for more details.

This section contains links to the code that implements this concept.

Classes

class  CDebugTrace::LogInstaller
 A class that takes an instance of ILogMessages and installs it as the message log used by the CDebugTrace class and then removes it and reinstalls the previous log in its destructor. It can, therefore, be used to support scope based log installation and removal. More...
class  CEventOwner
 A class that manages an instance of CEvent in a scope based style. More...
class  ISingleWriterMultipleReaderLock::Reader
 A class that locks an instance of ISingleWriterMultipleReaderLock for read access. That is it calls EnterToRead() in the constructor and Leave() in the destructor and can therefore be used to support scope based locking and unlocking. More...
class  ISingleWriterMultipleReaderLock::Writer
 A class that locks an instance of ISingleWriterMultipleReaderLock for write access. That is it calls EnterToWrite() in the constructor and Leave() in the destructor and can therefore be used to support scope based locking and unlocking. More...
class  ISingleWriterMultipleReaderLock::ConditionalOwner
 A base class to support the ConditionalReader and ConditionalWriter classes. More...
class  ISingleWriterMultipleReaderLock::ConditionalReader
 A class that may lock an instance of ISingleWriterMultipleReaderLock for read access. That is it calls EnterToRead() in the constructor and Leave() in the destructor if locked is true and can therefore be used to support scope based locking and unlocking. More...
class  ISingleWriterMultipleReaderLock::ConditionalWriter
 A class that may lock an instance of ISingleWriterMultipleReaderLock for write access. That is it calls EnterToWrite() in the constructor and Leave() in the destructor if locked is true and can therefore be used to support scope based locking and unlocking. More...
class  ISingleWriterMultipleReaderLock::PotentialOwner
 A base class to support the PotentialReader and PotentialWriter classes. More...
class  ISingleWriterMultipleReaderLock::PotentialReader
 A class that may lock an instance of ISingleWriterMultipleReaderLock for read access. If you call EnterToRead() or TryEnterToRead() on this class it will keep track of the fact that the lock has been entered and will call Leave() in the destructor. This can therefore be used to support scope based locking and unlocking of instances of ISingleWriterMultipleReaderLock. More...
class  ISingleWriterMultipleReaderLock::PotentialWriter
 A class that may lock an instance of ISingleWriterMultipleReaderLock for write access. If you call EnterToWrite() or TryEnterToWrite() on this class it will keep track of the fact that the lock has been entered and will call Leave() in the destructor. This can therefore be used to support scope based locking and unlocking of instances of ISingleWriterMultipleReaderLock. More...
class  TLockableObjectOwner
 A class that takes ownership of a lockable object. That is it calls Lock() in the constructor and Unlock() in the destructor and can therefore be used to support scope based locking and unlocking of instances of the object. More...
class  TLockableObjectConditionalOwner
 A class that may take ownership of a lockable object. That is it calls Lock() in the constructor and Unlock() in the destructor (but only if locked passed as true to the constructor) and can therefore be used to support scope based locking and unlocking of instances of the object. More...
class  TLockableObjectPotentialOwner
 A class that could take ownership of an instance of a lockable object. If you call Lock() or TryLock() on this class it will keep track of the fact that the lockable object has been locked and will call Unlock() in the destructor. This can therefore be used to support scope based locking and unlocking of instances of the object. More...
class  CWaitableCounter::Incrementer
 A class that provides support for scope based incrementing of a waitable counter. The count is incremented for the life of the Incrementer; that is, it is incremented in the constructor of the and decremented in the destrutor. More...
class  CWaitableCounter::Decrementer
 A class that provides support for scope based decrementing of a waitable counter. The count is decreased for the life of the Decrementer; that is, it is decremented in the constructor of the and incremented in the destrutor. More...
class  CFileDeleter
class  ILimitConnections::Creator
 A class that takes ownership of an attempt at connection creation. That is if you call CanCreateConnection() through it and then do not call ConnectionCreated() then the destructor will assume something went awry and call ReleaseConnection(). This class can therefore be used to support scope based connection creation. More...
class  CUsesMSWinSockExtensions
 This class acts as a dynamic function loader for the MS Winsock extension functions via a WSAIoctl() call with SIO_GET_EXTENSION_FUNCTION_POINTER. The assumption is made that all sockets passed to this class will be from the same underlying provider (or, at the very least, all sockets passed to a particular extension function will be from the same provider). More...
class  CSocket
 A slightly confused class that acts as both a scope based wrapper around a SOCKET and that also provides static member functions that enable you to call wrapped socket functions on a bare SOCKET. More...
class  CUsesMSWinSockExtensions
 This class acts as a dynamic function loader for the MS Winsock extension functions via a WSAIoctl() call with SIO_GET_EXTENSION_FUNCTION_POINTER. The assumption is made that all sockets passed to this class will be from the same underlying provider (or, at the very least, all sockets passed to a particular extension function will be from the same provider). More...
class  CUsesWinsock
 A simple object to support scope based Winsock initialisation and uninitialisation. Create an instance of this at the scope where you want Winsock to be available and it will be automatically uninitialised when the scope ends. More...
class  CMultipleFileDeleter
class  CTempDirectory
 A class which wraps the operating system GetTempPath() API and which creates and removes temporary directories in a scope based style. Directories are created in the form: TEMP_PATH\prefix + "-" + time(0). More...
class  CUsesCOM
 A simple object to support scope based COM initialisation and uninitialisation. Create an instance of this at the scope where you want COM to be available and it will be automatically uninitialised when the scope ends. More...


Generated on Sun Sep 12 19:06:49 2021 for The Server Framework - v7.4 by doxygen 1.5.3