UCommon
|
Any ucommon streaming classes that are built from std::streamio facilities and that support ANSI C++ stream operators. More...
#include <ucommon/platform.h>
#include <ucommon/protocols.h>
#include <ucommon/thread.h>
#include <ucommon/socket.h>
#include <ucommon/fsys.h>
#include <ucommon/shell.h>
#include <iostream>
#include <fstream>
Go to the source code of this file.
Namespaces | |
ucommon | |
Common namespace for all ucommon objects. | |
Functions | |
class | ucommon::__attribute__ ((visibility("default"))) ExclusiveProtocol |
An exclusive locking protocol interface base. More... | |
std::__attribute__ ((visibility("default"))) iostream &null | |
An exclusive locking protocol interface base. More... | |
std::string & | ucommon::operator+ (std::string &target, String &source) |
std::string & | ucommon::operator+= (std::string &target, String &source) |
std::ostream & | ucommon::operator<< (std::ostream &out, const PrintProtocol &format) |
std::ostream & | ucommon::operator<< (std::ostream &out, const string_t &str) |
std::ostream & | ucommon::operator<< (std::ostream &out, const stringlist_t &list) |
std::ostream & | ucommon::operator<< (std::ostream &os, Socket::address &addr) |
std::istream & | ucommon::operator>> (std::istream &inp, InputProtocol &format) |
std::istream & | ucommon::operator>> (std::istream &inp, string_t &str) |
std::istream & | ucommon::operator>> (std::istream &in, stringlist_t &list) |
Any ucommon streaming classes that are built from std::streamio facilities and that support ANSI C++ stream operators.
Definition in file stream.h.
std::__attribute__ | ( | (visibility("default")) | ) |
An exclusive locking protocol interface base.
A copy-on-write utf8 string class that operates by reference count.
A core class of ut8 encoded string functions.
Smart pointer base class for auto-retained objects.
Timer class to use when scheduling realtime events.
An abstract class for defining classes that operate as a thread.
A generic and portable implementation of Read/Write locking.
Common stream buffer for std C++ i/o classes.
A bound socket used to listen for inbound socket connections.
A class to hold internet segment routing rules.
Cryptographically relevant random numbers.
A cryptographic message authentication code class.
A cryptographic digest class.
A generic data ciphering class.
Common secure socket support.
Key data protocol used for things like maps and ordered lists.
A common base class for all managed objects.
Used for processing input.
Used for forming stream output.
A redirection base class for the memory protocol.
A sparse array of managed objects.
A base class for reference counted objects.
A number manipulation class.
A memory protocol pager for private heap manager.
Construct or access a named section of memory.
Common base class for all objects that can be formed into a linked list.
Convenience class for library plugins.
A container for generic and o/s portable threadsafe file system functions.
The Time class uses a integer representation of the current time.
The Date class uses a julian date representation of the current year, month, and day.
Automatically return a sequence of untyped objects.
Automatic integer counting class.
The condition Var allows multiple conditions to share a mutex.
Condition Mutex to pair with conditionals.
Generic atomic class for referencing atomic objects and static functions.
A kind of smart pointer object to support shared locking protocol.
An exclusive locking access interface base.
This is an abstract class to form objects that will operate under an exclusive lock while being actively referenced by a smart pointer.
This object initiates a shared lock for the object being referenced when it is instantiated, and releases the shared lock when it is destroyed. You would pass the pointer an object that has the Shared as a base class.
We have an atomic counter and spinlock, and in the future we may add other atomic classes and atomic manipulations needed to create lockfree data structures. The atomic classes use mutexes if no suitable atomic code is available.
Separating the mutex means we can apply it either paired with a condition variable, or shared among multiple condition variables.
This can be used to form specialized thread synchronizing classes such as ordered sempahores, or to create thread completion lists.
This is an automatic counting object that is used to retrieve a new integer value between 0 and n each time the object is referenced. When reaching the last n value, the object restarts at 0, and so is used to retrieve a sequence of values in order.
This is an automatic counter based class which returns the next pointer in an array of pointers and restarts the list when reaching the end. This is used to support the sequence template.
This is then manipulated in several forms and may be exported as needed.
This is then manipulated in several forms and may be exported as needed. The time object can represent an instance in time (hours, minutes, and seconds) in a 24 hour period or can represent a duration. Millisecond accuracy can be offered.
These are based roughly on their posix equivilents. For libpth, the system calls are wrapped. The native file descriptor or handle may be used, but it is best to use "class fsys" instead because it can capture the errno of a file operation in a threadsafe and platform independent manner, including for mswindows targets.
This base class is used directly for objects that can be formed into a single linked list. It is also used directly as a type for a pointer to the start of list of objects that are linked together as a list.
A logical name is used which might map to something that is invoked from a call like shm_open or a named w32 mapped swap segment. This is meant to support mapping a vector onto shared memory and is often used as a supporting class for our shared memory access templates.
This is used to allocate in an optimized manner, as it assumes no mutex locks are held or used as part of it's own internal processing. It also is designed for optimized performance.
The mempager uses a strategy of allocating fixed size pages as needed from the real heap and allocating objects from these pages as needed. A new page is allocated from the real heap when there is insufficient space in the existing page to complete a request. The largest single memory allocation one can make is restricted by the page size used, and it is best to allocate objects a significant fraction smaller than the page size, as fragmentation occurs at the end of pages when there is insufficient space in the current page to complete a request.
This is used to extract, convert, and manage simple numbers that are represented in C ascii strings in a very quick and optimal way. This class modifies the string representation each time the value is changed. No math expressions or explicit comparison operators are supported for the Numbers class because these are best done by casting to long first.
Reference counted objects keep track of how many objects refer to them and fall out of scope when they are no longer being referred to. This can be used to achieve automatic heap management when used in conjunction with smart pointers.
This might be used as a simple array class for reference counted objects. This class assumes that objects in the array exist when assigned, and that gaps in the array are positions that do not reference any object. Objects are automatically created (create on access/modify when an array position is referenced for the first time. This is an abstract class because it is a type factory for objects who's derived class form constructor is not known in advance and is a helper class for the sarray template.
This is used because sometimes we choose a common memory pool to manage different objects.
We would create a derived class who's constructor creates an internal string object, and a single method to extract that string.
We create a derived class that processes a single character of input, and returns a status value. EOF means it accepts no more input and any value other than 0 is a character to also unget. Otherwise 0 is good to accept more input. The constructor is used to reference a final destination object in the derived class.
This is used to manage objects that might be linked or reference counted. The base class defines only core virtuals some common public methods that should be used by all inherited object types.
This offers common routines needed for secure/ssl socket support code.
This is used to construct cryptographic ciphers to encode and decode data as needed. The cipher type is specified by the key object. This class can be used to send output streaming to memory or in a fixed size buffer. If the latter is used, a push() method is called through a virtual when the buffer is full. Since block ciphers are used, buffers should be aligned to the block size.
This class can support md5 digests, sha1, sha256, etc, depending on what the underlying library supports. The hash class accumulates the hash in the object.
This class can support md5 digests, sha1, sha256, etc, depending on what the underlying library supports.
This is used both to gather entropy pools and pseudo-random values.
This class can be used to provide a stand-alone representation of a cidr block of internet addresses or chained together into some form of access control list. The cidr class can hold segments for both IPV4 and IPV6 addresses. The class accepts cidr's defined as C strings, typically in the form of address/bits or address/submask. These routines auto-detect ipv4 and ipv6 addresses.
This class is commonly used for TCP and DCCP listener sockets.
This both binds the character protocol to iostream and offers a common base class for all other c++ stdlib based streaming classes.
This class implements classical read/write locking, including "timed" locks. Support for scheduling threads to avoid writer starvation is also provided for. By building read/write locks from a conditional, we make them available on pthread implemetations and other platforms which do not normally include optional pthread rwlock's. We also do not restrict the number of threads that may use the lock. Finally, both the exclusive and shared protocols are implemented to support exclusive_lock and shared_lock referencing. Because of the thread locking semantics this is part of thread rather than condition, and was originally called ThreadLock in older ucommon/commoncpp releases. Our autolock semantics are also different as we protect a target object, not a rwlock instance.
A derived thread class has a run method that is invoked with the newly created thread context, and can use the derived object to store all member data that needs to be associated with that context. This means the derived object can safely hold thread-specific data that is managed with the life of the object, rather than having to use the clumsy thread-specific data management and access functions found in thread support libraries.
The timer generally uses millisecond values but has a microsecond accuracy. On platforms that support it, the timer uses posix realtime monotonic clock extensions, otherwise lower accuracy timer systems might be used.
The underlying container is heap allocated and page aligned. A heap object is automatically de-referenced by release during destruction. The smart pointer is a protected base class used to derive strongly typed templates.
This is a foundation for all utf8 string processing.
This is derived from the classic uCommon String class by adding operations that are utf8 encoding aware.
An exclusive locking protocol interface base.
XML streaming parser.
Splits delimited string into tokens.
Timer ports are used to provide synchronized timing events when managed under a "service thread" such as SocketService.
This class is used to access non-reentrant date and time functions in the standard C library.
The SemaphoreLock class is used to protect a section of code through a semaphore so that only x instances of the member function may execute concurrently.
The WriteLock class is used to protect a section of code through a ThreadLock for "write" access to the member function.
The ReadLock class is used to protect a section of code through a ThreadLock for "read" access to the member function.
The Mutex Counter is a counter variable which can safely be incremented or decremented by multiple threads.
The slog class is used to stream messages to the system's logging facility (syslogd).
The Serial class is used as the base for all serial I/O services under APE.
This class is used to create a "named" lock entity that can be used to control access to a resource between multiple processes.
A class for containing portable process related functions that help create portable code.
Stream serialization of persistent classes.
PersistObject.
Type manager for persistence engine.
The MapObject is a base class which can be used to make a derived class operate on a MapTable.
A map table allows for entities to be mapped (hash index) onto it.
Self managed double linked list object chain.
Self managed single linked list object chain.
Pointer to reference counted objects.
A reference countable object.
The shared mempager uses a mutex to protect key access methods.
The Multipart form is a MIME multipart document specific for the construction and delivery of form data to a web server through a post method.
A container class for multi-part MIME document objects which can be streamed to a std::ostream destination.
The purpose of this class is to define a base class for low level random file access that is portable between Win32 and Posix systems.
A low level portable directory class.
alog global log stream definition
Manipulator for info level.
Manipulator for notice level.
Manipulator for critical level.
Manipulator for alert level.
Manipulator for emerg level.
Manipulator for error level.
Manipulator for warn level.
Application logger is a class that implements a logger that can be used by applications to save log file somewhere on the system.
Produces a dump of a buffer in a hexdump way with its code Ascii translation and relative buffer address.
Classes derived from IPV6Address would require an specific validator to pass to the IPV6Address constructor.
The network name and address objects are all derived from a common IPV4Address base class.
The CIDR class is used to support routing tables and validate address policies.
Class for the function object that validates multicast addresses.
This is a base class for classes of function objects used by such derived classes.
Implements a specific application operator to validate multicast addresses.
Specific classes, such as IPV4Host, IPV4Mask, etc, are defined from IPV4Address entirely so that the manner a network address is being used can easily be documented and understood from the code and to avoid common errors and accidental misuse of the wrong address object. For example, a "connection" to something that is declared as a "IPV4Host" can be kept type-safe from a "connection" accidently being made to something that was declared a "IPV4Broadcast".
Implements a specific application operator to validate multicast addresses.
For instance: 0000000 - 77 98 21 49 0e 00 05 00 40 1c 01 1c 2f 00 00 00 w.!I......./...
It uses ost::slog to write to syslog and std::clog to write to standard output.
It provides either a stream oriented logger or a old printf style one.
It can be used to log directly on a file or in a spooler like way. Latter uses a ost::ThreadQueue to implement a thread safe access to logger.
It provides a global stream variable called ost::alog.
It provides an AppLog::Ident class that represents a module name for instance that can be used to tag logs. Logging levels are the same defined into ost::Slog: Slog::levelEmergency Slog::levelAlert Slog::levelCritical Slog::levelError Slog::levelWarning Slog::levelNotice Slog::levelInfo Slog::levelDebugfrom.
Example of usage: alog << mod_name << debug << "Hello world!" << std::endl; Manipulator for debug level
sl | application logger stream |
sl | application logger stream |
Used to support ccstd Directory container. This provides a basic mechanism for allocating and accessing file entries.
This class is a foundation both for optimized thread shared and traditional locked file access that is commonly used to build database services, rather than the standard C++ streaming file classes.
SharedFile is used when a database may be shared between multiple processes. SharedFile automatically applies low level byte-range "file locks", and provides an interface to fetch and release byte-range locked portions of a file.
This class is used when a mempager will be shared by multiple threads.
This is used in association with smart pointers (RefPointer).
This is a non-template form of a reference count smart pointer, and so uses common code. This can be subclassed to return explicit object types.
This is used for accumulating lists by using as a base class for a derived subclass.
This is used for accumulating lists by using as a base class for a derived subclass.
Unlike with Assoc, This form of map table also allows objects to be removed from the table. This table also includes a mutex lock for thread safety. A free list is also optionally maintained for reusable maps.
Derived classes may override new and delete operators to use managed free list from a MapTable.
This class manages the types for generation of the persistent objects. Its data structures are managed automatically by the system. They are implicitly filled by the constructors who declare classes to the system.
Base class for classes that will be persistent. This object is the base for all Persistent data which is not natively serialized by the persistence::engine
It registers itself with the persistence::TypeManager using a global constructor function. A matching deregister call is made in a global destructor, to allow DLL's to use the persistence::engine in a main executable.
Persistable objects must never maintain bad pointers. If a pointer doesn't point to something valid, it must be NULL. This is so the persistence engine knows whether to allocate memory for an object or whether the memory has been pre-allocated.
This class constructs on a standard C++ STL stream and then operates in the mode specified. The stream passed into the constructor must be a binary mode to function properly.
These are typically referenced thru Process::xxx static member functions. Many of these members are used both for win32 and posix systems although some may be platform specific.
Peocess wrapper class.
The posix implimentation uses a pidfile and the win32 version uses a globally visible mutex.
A serial is a system serial port that is used either for line or packet based data input. Serial ports may also be "streamable" in a derived form.
Common C++ serial I/O classes are used to manage serial devices and implement serial device protocols. From the point of view of Common C++, serial devices are supported by the underlying Posix specified "termios" call interface.
The serial I/O base class is used to hold a descriptor to a serial device and to provide an exception handling interface for all serial I/O classes. The base class is also used to specify serial I/O properties such as communication speed, flow control, data size, and parity. The "Serial" base class is not itself directly used in application development, however.
Common C++ Serial I/O is itself divided into two conceptual modes; frame oriented and line oriented I/O. Both frame and line oriented I/O makes use of the ability of the underlying tty driver to buffer data and return "ready" status from when select either a specified number of bytes or newline record has been reached by manipulating termios c_cc fields appropriately. This provides some advantage in that a given thread servicing a serial port can block and wait rather than have to continually poll or read each and every byte as soon as it appears at the serial port.
A default slog
object is used to avoid confusion with the native syslog facility and to imply a logical relationship to the C++ clog()
.
The key difference is that the slog
object sends it's output to the system logging daemon (typically syslogd) rather than through stderr. slog
can be streamed with the <<
operator just like clog
; a default slog object is pre-initialized, and you stream character data to it.
The slog
allows one to specify logging levels and other properties through the ()
operators. Hence, once can do:
slog("mydaemon", SLOG_DAEMON, SLOG_EMERGENCY) << I just died << endl;
or things like:
slog("mydaemon", SLOG_DAEMON); slog(SLOG_INFO) << "daemon initalized" << endl;
The intent is to be as common-place and as convenient to use as the stderr based clog facility found in C++, and this is especially useful for C++ daemons.
The std::flush
manipulator doesn't work. Either the std::endl
or std::ends
manipulators must be used to cause the output to be sent to the daemon.
When this class is used on a system that doesn't have the syslog headers (i.e. a non-posix win32 box), the output goes to the a file with the same name as the syslog identifier string with '.log' appended to it. If the identifier string ends in '.exe', the '.exe' is removed before the '.log' is appened. (e.g. the identifier foo.exe will generate a log file named foo.log)
system logging facility class.
A Mutex is used to protect access to the counter variable (an integer). An initial value can be specified for the counter, and it can be manipulated with the ++ and – operators.
It use Mutex to protect operation. Using this class is usefull and exception safe. The mutex that has been locked is automatically released when the function call stack falls out of scope, so one doesnt have to remember to unlock the mutex at each function return.
A common use is
void func_to_protect() { MutexLock lock(mutex); ... operation ... }
NOTE: do not declare variable as "MutexLock (mutex)", the mutex will be released at statement end.
The ThreadLock is automatically released when the object falls out of scope.
A common use is
void func_to_protect() { ReadLock lock(threadlock); ... operation ... }
NOTE: do not declare variable as "ReadLock (threadlock)", the mutex will be released at statement end.
The ThreadLock is automatically released when the object falls out of scope.
A common use is
void func_to_protect() { WriteLock lock(threadlock); ... operation ... }
NOTE: do not declare variable as "WriteLock (threadlock)", the mutex will be released at statement end.
A common use is
void func_to_protect() { SemaphoreLock lock(semaphore); ... operation ... }
NOTE: do not declare variable as "SemaohoreLock (semaphore)", the mutex will be released at statement end.
The class has two purposes:
This is made into a stand-alone base class since other derived libraries (such as the serial handlers) may also use the pooled "service thread" model and hence also require this code for managing timing.
The StringTokenizer takes a pointer to a string and a pointer to a string containing a number of possible delimiters. The StringTokenizer provides an input forward iterator which allows to iterate through all tokens. An iterator behaves like a logical pointer to the tokens, i.e. to shift to the next token, you've to increment the iterator, you get the token by dereferencing the iterator.
Memory consumption: This class operates on the original string and only allocates memory for the individual tokens actually requested, so this class allocates at maximum the space required for the longest token in the given string. Since for each iteration, memory is reclaimed for the last token, you MAY NOT store pointers to them; if you need them afterwards, copy them. You may not modify the original string while you operate on it with the StringTokenizer; the behaviour is undefined in that case.
The iterator has one special method 'nextDelimiter()' which returns a character containing the next delimiter following this tokenization process or '\0', if there are no following delimiters. In case of skipAllDelim, it returns the FIRST delimiter.
With the method 'setDelimiters(const char*)' you may change the set of delimiters. It affects all running iterators.
Example:
StringTokenizer st("mary had a little lamb;its fleece was..", " ;"); StringTokenizer::iterator i; for (i = st.begin() ; i != st.end() ; ++i) { cout << "Token: '" << *i << "'\t"; cout << " next Delim: '" << i.nextDelimiter() << "'" << endl; }
This class implements a basic XML stream parser that can be used to examine an XML resource thru virtual I/O methods. This class must be derived into one that can implement the physical I/O required to parse actual data. A mixer class using XMLParser and tcpstream would be one example of this. This can also be used to parse xml content in memory buffers easily. This parser is only concerned with well-formedness, and does not perform validation.
A kind of smart pointer object to support exclusive locking protocol. This object initiates an exclusive lock for the object being referenced when it is instantiated, and releases the exclusive lock when it is destroyed. You would pass the pointer an object that has the Exclusive as a base class.
Create an instance of an exclusive object reference.
object | containing Exclusive base class protocol to lock. |
Destroy reference to exclusively locked object, release lock.
Test if the reference holds an active lock.
Test if the reference holds an active lock.
Release a held lock programmatically. This can be used to de-reference the object being exclusively locked without having to wait for the destructor to be called when the exclusive_lock falls out of scope.
Access interface to share lock the object.
A kind of smart pointer object to support shared locking protocol. This object initiates a shared lock for the object being referenced when it is instantiated, and releases the shared lock when it is destroyed. You would pass the pointer an object that has the Shared as a base class.
Create an instance of an exclusive object reference.
object | containing Exclusive base class protocol to lock. |
Destroy reference to shared locked object, release lock.
Test if the reference holds an active lock.
Test if the reference holds an active lock.
Release a held lock programmatically. This can be used to de-reference the object being share locked without having to wait for the destructor to be called when the shared_lock falls out of scope.
Call exclusive access on referenced objects protocol.
Restore shared access on referenced objects protocol.
Share the lock with other referencers. Many of our shared locking objects support the ability to switch between shared and exclusive mode. This derived protocol member allows one to restore the lock to shared mode after it has been made exclusive.
Convert object to an exclusive lock. Many of our shared locking objects such as the "conditional lock" support the ability to switch between shared and exclusive locking modes. This derived protocol member allows one to temporarily assert exclusive locking when tied to such methods.
Create an instance of an exclusive object reference.
object | containing Exclusive base class protocol to lock. |
Destroy reference to shared locked object, release lock.
Test if the reference holds an active lock.
Test if the reference holds an active lock.
Release a held lock programmatically. This can be used to de-reference the object being share locked without having to wait for the destructor to be called when the shared_lock falls out of scope.
Call exclusive access on referenced objects protocol.
Restore shared access on referenced objects protocol.
Atomic counter class. Can be used to manipulate value of an atomic counter without requiring explicit thread locking.
Atomic spinlock class. Used as high-performance sync lock between threads.
Construct and initialize spinlock.
NAMESPACE_UCOMMON Acquire the lock. If the lock is not acquired, one "spins" by doing something else. One suggestion is using thread::yield.
Wait for and aquire spinlock.
Release an acquired spinlock.
Initialize and construct conditional.
Destroy conditional, release any blocked threads.
Lock the conditional's supporting mutex.
Unlock the conditional's supporting mutex.
Initialize and construct conditional.
Destroy conditional, release any blocked threads.
Conditional wait for signal on millisecond timeout.
timeout | in milliseconds. |
Conditional wait for signal on timespec timeout.
timeout | as a high resolution timespec. |
Wait (block) until signalled.
Signal the conditional to release one waiting thread.
Signal the conditional to release all waiting threads.
Initialize integer counter of unknown size.
Initialize integer counter for a range of values.
limit | before recycling to zero. |
Get the next counter value.
Get the range of values before recycling.
Reference next counter value through pointer operation.
Reference next counter value by casting to integer.
Assign the value of the counter.
value | to assign. |
A method to use to "post" any changed values when shadowing a mixed object class. This is used by DateNumber and string classes.
Size of date string field.
Create a julian date from a time_t type.
value | from time() |
Create a julian date from a local or gmt date and time.
object | from DateTime::glt() or gmt(). |
Create a julian date from a ISO date string of a specified size.
pointer | to ISO date string. |
size | of date field if not null terminated. |
Create a julian date from an arbitrary year, month, and day.
year | of date. |
month | of date (1-12). |
day | of month (1-31). |
Create a julian date object from another object.
object | to copy. |
Construct a new julian date with today's date.
Destroy julian date object.
Get the year of the date.
Get the month of the date (1-12).
Get the day of the month of the date.
Get the day of the week (0-7).
Get a ISO string representation of the date (yyyy-mm-dd).
buffer | to store string. |
Get a time_t for the julian date if in time_t epoch.
Get the date as a number for the object or 0 if invalid.
Set (update) the date with current date.
Set the julian date based on an ISO date string of specified size.
pointer | to date string field. |
size | of field if not null terminated. |
Check if date is valid.
Casting operator to return date as number.
Access julian value.
Expression operator to return an ISO date string for the current julian date.
Increment date by one day.
Decrement date by one day.
Increment date by offset.
offset | to add to julian date. |
Decrement date by offset.
offset | to subtract from julian date. |
Add days to julian date in an expression.
days | to add. |
Subtract days from a julian date in an expression.
days | to subtract. |
Operator to compute number of days between two dates.
date | offset for computation. |
Assign date from another date object.
date | object to assign from. |
Compare julian dates if same date.
date | to compare with. |
Compare julian dates if not same date.
date | to compare with. |
Compare julian date if earlier than another date.
date | to compare with. |
Compare julian date if earlier than or equal to another date.
date | to compare with. |
Compare julian date if later than another date.
date | to compare with. |
Compare julian date if later than or equal to another date.
date | to compare with. |
Check if julian date is not valid.
Check if julian date is valid for is() expression.
Constant for number of seconds in a day.
Constant for number of seconds in a hour.
Constant for number of seconds in a week.
Size of time string field.
Create a time from the time portion of a time_t.
value | of time_t to use. |
Create a time from the time portion of a date and time object.
object | from DateTime::glt() or gmt(). |
Create a time from a hh:mm:ss formatted time string.
pointer | to formatted time field. |
size | of field if not null terminated. |
Create a time from hours (0-23), minutes (0-59), and seconds (0-59).
hour | of time. |
minute | of time. |
second | of time. |
Create a time object from another object.
object | to copy. |
Create a time from current time.
Destroy time object.
Get current time in seconds from midnight.
Get hours from midnight.
Get minutes from current hour.
Get seconds from current minute.
Get a hh:mm:ss formatted string for current time.
buffer | to store time string in. |
Set (update) the time with current time.
Set time from a hh:mm:ss formatted string.
pointer | to time field. |
size | of field if not null terminated. |
Check if time object had valid value.
Check if time object has valid value for is() operator.
Check if time object has valid value for ! operator.
Get difference (in seconds) between two times.
reference | time to get difference from. |
Add seconds to the current time, wrap if 24 hours.
seconds | to add. |
Subtract seconds to the current time, wrap if 24 hours.
seconds | to subtract. |
Get time in seconds.
Get object time in seconds.
Convert to standard 24 hour time string.
Incrememnt time by 1 second, wrap on 24 hour period.
Decrement time by 1 second, wrap on 24 hour period.
Assign a time as a copy of another time.
time | to assign from. |
Increment time by specified seconds. Wraps on 24 hour period.
seconds | to add to current time. |
Decrement time by specified seconds. Wraps on 24 hour period.
seconds | to subtract from current time. |
Compare time with another time to see if same time.
time | to compare with. |
Compare time with another time to see if not same time.
time | to compare with. |
Compare time if earlier than another time.
time | object to compare with. |
Compare time if earlier than or equal to another time.
time | object to compare with. |
Compare time if later than another time.
time | object to compare with. |
Compare time if later than or equal to another time.
time | object to compare with. |
Most of the common chmod values are predefined.
Enumerated file access modes.
File offset type.
Used to mark "append" in set position operations.
Construct an unattached fsys descriptor.
Contruct fsys from raw file handle.
Copy (dup) an existing fsys descriptor.
descriptor | to copy from. |
Create a fsys descriptor by opening an existing file or directory.
path | of file to open for created descriptor. |
access | mode of file. |
Create a fsys descriptor by creating a file.
path | of file to create for descriptor. |
access | mode of file access. |
permission | mode of file. |
Close and release a file descriptor.
Get the descriptor from the object by pointer reference.
Get the descriptor from the object by casting reference.
Reset error flag.
Test if file descriptor is open.
Test if file descriptor is closed.
Assign file descriptor by duplicating another descriptor.
descriptor | to dup from. |
Replace current file descriptor with an external descriptor. This does not create a duplicate. The external descriptor object is marked as invalid.
Assing file descriptor from system descriptor.
descriptor | to dup from. |
Get the native system descriptor handle of the file descriptor.
Set with external descriptor. Closes existing file if open.
descriptor | of open file. |
Release descriptor, do not close.
Set the position of a file descriptor.
offset | from start of file or "end" to append. |
Drop cached data from start of file.
size | of region to drop or until end of file. |
See if current file stream is a tty device.
See if the file handle is a tty device.
Read data from descriptor or scan directory.
buffer | to read into. |
count | of bytes to read. |
Write data to descriptor.
buffer | to write from. |
count | of bytes to write. |
Get status of open descriptor.
buffer | to save status info in. |
Truncate file to specified length. The file pointer is positioned to the new end of file.
offset | to truncate to. |
Commit changes to the filesystem.
Set directory prefix (chdir).
path | to change to. |
Get current directory prefix (pwd).
path | to save directory into. |
size | of path we can save. |
Stat a file.
path | of file to stat. |
buffer | to save stat info. |
Erase (remove) a file only.
path | of file. |
Copy a file.
source | file. |
target | file. |
size | of buffer. |
Rename a file.
oldpath | to rename from. |
newpath | to rename to. |
Change file access mode.
path | to change. |
value | of mode to assign. |
Test if path exists.
path | to test. |
Test if path readable.
path | to test. |
Test if path writable.
path | to test. |
Test if path is executable.
path | to test. |
Test if path is a file.
path | to test. |
Test if path is a directory.
path | to test. |
Test if path is a symlink.
path | to test. |
Test if path is a device path.
path | to test. |
Test if path is a hidden file.
path | to test. |
Open a file or directory.
path | of file to open. |
access | mode of descriptor. |
Assign descriptor directly.
descriptor | to assign. |
Assign a descriptor directly.
object | to assign descriptor to. |
descriptor | to assign. |
Open a file descriptor directly.
path | of file to create. |
access | mode of descriptor. |
mode | of file if created. |
Remove a symbolic link explicitly. Other kinds of files are also deleted. This should be used when uncertain about symlinks requiring special support.
path | to remove. |
Create a symbolic link.
path | to create. |
target | of link. |
Create a hard link.
path | to create link to. |
target | of link. |
Read a symbolic link to get it's target.
path | of link. |
buffer | to save target into. |
size | of buffer. |
Close a fsys resource.
Get last error.
Direct means to open a read-only file path and return a descriptor.
path | to open. |
Direct means to create or access a writable path and return descriptor.
path | to create. |
Direct means to create or append a writable path and return descriptor.
path | to create. |
Release a file descriptor.
descriptor | to release. |
Create pipe. These are created inheritable by default.
input | descriptor. |
output | descriptor. |
size | of buffer if supported. |
Changle inheritable handle. On windows this is done by creating a duplicate handle and then closing the original. Elsewhere this is done simply by setting flags.
descriptor | to modify. |
enable | child process inheritence. |
Create inheritable /dev/null handle.
Load a library into memory.
path | to plugin. |
Execute a process and get exit code.
path | to execute. |
argv | list. |
optional | env. |
Create dso object for use by load functions.
Create and map a dso object.
path | of library to map. |
Destroy dso and release library.
Map library object with library.
name | of library to load. |
Release loaded library.
Find symbol in loaded module.
module | to search. |
symbol | to search for. |
Create and initialize an empty index.
Destroy index.
Find a specific member in the ordered list.
offset | to member to find. |
Count of objects this list manages.
Purge the linked list and then set the index to empty.
Reset linked list to empty without purging.
Used to synchronize lists managed by multiple threads. A derived locking method would be invoked.
Used to synchronize lists managed by multiple threads. A derived unlocking method would be invoked.
Return a pointer to the head of the list. This allows the head pointer to be used like a simple root list pointer for pure LinkedObject based objects.
Get (pull) object off the list. The start of the list is advanced to the next object.
Add an object into the ordered index.
ordered | object to add to the index. |
Get an indexed member from the ordered index.
index | of member to fetch. |
Return first object in list for iterators.
Return last object in list for iterators.
Return head object pointer.
Assign ordered index.
object | to copy from. |
Add object to our list.
object | to add. |
Supporting function to construct a new or access an existing shared memory segment. Used by primary constructors.
name | of segment to create or access. |
size | of segment if creating new. Use 0 for read-only access. |
Construct a read/write access mapped shared segment of memory of a known size. This constructs a new memory segment.
name | of segment. |
size | of segment. |
Provide read-only mapped access to an existing named shared memory segment. The size of the map is found by the size of the already existing segment.
name | of existing segment. |
Unmap memory segment.
Unmap memory segment.
Destroy a previously existing memory segment under the specified name. This is used both before creating a new one, and after a publishing process unmaps the segment it created.
name | of segment to remove. |
Test if map active.
Test if map is inactive.
Extend size of managed heap on shared memory segment. This does not change the size of the mapped segment in any way, only that of any heap space that is being allocated and used from the mapped segment.
size | of space requested. Will fault if past end of segment. |
Get memory from a specific offset within the mapped memory segment.
offset | from start of segment. Will fault if past end. |
Copy memory from specific offset within the mapped memory segment. This function assures the copy is not in the middle of being modified.
offset | from start of segment. |
buffer | to copy into. |
size | of object to copy. |
Get size of mapped segment.
Get starting address of mapped segment.
An API that allows "disabling" of publishing shared memory maps. This may be useful when an app doesn't want to use shared memory as a runtime or build option, but does not want to have to be "recoded" explicitly for non-shared memory either. Basically it substitutes a dummy map running on the local heap.
Create an initially empty autorelease pool.
Destroy an autorelease pool and delete member objects.
Destroy an autorelease pool and delete member objects. This may be used to release an existing pool programmatically when desired rather than requiring the object to fall out of scope.
Add a linked object to the autorelease pool.
object | to add to pool. |
Create an instance of a number.
buffer | or NULL if created internally. |
size | of field if not null terminated. |
Set string based on a new value.
value | to set. |
Get string buffer representing the number.
Get value of string buffer as a long integer.
Get value of string buffer as expression of object.
Cast string as long integer and get value of buffer.
Cast object as a string to retrieve buffer.
Assign a value to the number. This rewrites the string buffer.
value | to assign. |
Assign another number to this number.
number | to assign to assign. |
Add a value to the number. This rewrites the string buffer.
value | to add. |
Subtract a value from the number. This rewrites the string buffer.
value | to subtract. |
Decrement the number object. This rewrites the string buffer.
Increment the number object. This rewrites the string buffer.
Construct an auto-pointer referencing an existing object.
object | we point to. |
Construct an auto-pointer as a copy of another pointer. The retention of the object being pointed to will be increased.
pointer | we are a copy of. |
Delete auto pointer. When it falls out of scope, the retention of the object it references is reduced. If it falls to zero in a reference counted object, then the object is auto-deleted.
Set our pointer to a specific object. If the pointer currently references another object, that object is released. The pointer references our new object and that new object is retained.
object | to assign to. |
Manually release the pointer. This reduces the retention level of the object and resets the pointer to point to nobody.
Test if the pointer is not set.
Test if the pointer is referencing an object.
Object factory for creating members of the spare array when they are initially requested.
Purge the array by deleting all created objects.
Get (reference) an object at a specified offset in the array.
offset | in array. |
Create a sparse array of known size. No member objects are created until they are referenced.
size | of array. |
Destroy sparse array and delete all generated objects.
Get count of array elements.
Protocol to allocate memory from the pager heap. The size of the request must be less than the size of the memory page used. The actual method is in a derived or stacked object.
size | of memory request. |
Convenience function.
size | of memory request. |
Allocate memory from the pager heap. The size of the request must be less than the size of the memory page used. The memory is initialized to zero. This uses alloc.
size | of memory request. |
Duplicate NULL terminated string into allocated memory. This uses alloc.
string | to copy into memory. |
Duplicate existing memory block into allocated memory. This uses alloc.
memory | to data copy from. |
size | of memory to allocate. |
Extract formatted string for object.
Extract formatted string for object.
character | code we are pushing. |
Method to retain (or increase retention) of an object.
Method to release (or decrease retention) of an object.
Required virtual destructor.
Retain (increase retention of) object when copying.
Increase retention operator.
Decrease retention operator.
Size of key data.
Buffer of key value.
Different error states of the security context.
Last error flagged for this context.
This is derived in different back-end libraries, and will be used to clear certificate credentials.
Convenience type to represent a security context.
Convenience type to represent a secure socket session.
Convenience type to represent a ssl certificate object.
Convenience type to represent a secure socket buf i/o stream.
Initialize secure stack for first use, and report if SSL support is compiled in.
Initialize secure stack with fips support. If fips support is not successfully enabled, the secure stack is also not initialized. Hence init() can be used for non-fips certified operation if fips fails.
Copy system certificates to a local path.
path | to copy to. |
Get path to system certificates.
Create a sever context. The certificate file used will be based on the init() method name. This may often be /etc/ssl/certs/initname.pem. Similarly, a matching private key certificate will also be loaded. An optional certificate authority document can be used when we are establishing a service which ssl clients have their own certificates.
authority | path to use or NULL if none. |
Create an anonymous client context with an optional authority to validate.
authority | path to use or NULL if none. |
paths | of certificates to use. |
Create a peer user client context. This assumes a user certificate in ~/.ssl/certs and the user private key in ~/.ssl/private. The path to an authority is also sent.
authority | path to use. |
Assign a non-default cipher to the context.
context | to set cipher for. |
ciphers | to set. |
Determine if the current security context is valid.
Get last error code associated with the security context.
Create 36 character traditional version 1 uuid.
string | to write uuid into, must be 37 bytes or more. |
Cipher key formed by hash algorithm. This can generate both a key and iv table based on the algorithms used and required. Normally it is used from a pass-phrase, though any block of data may be supplied.
Push a final cipher block. This is used to push the final buffer into the push method for any remaining data.
Process cipher data. This requires the size to be a multiple of the cipher block size. If an unaligned sized block of data is used, it will be ignored and the size returned will be 0.
data | to process. |
size | of data to process. |
This essentially encrypts a single string and pads with NULL bytes as needed.
string | to encrypt. |
This is used to process any data unaligned to the blocksize at the end of a cipher session. On an encryption, it will add padding or an entire padding block with the number of bytes to strip. On decryption it will remove padding at the end. The pkcs5 method of padding with removal count is used. This also sets the address buffer to NULL to prevent further puts until reset.
address | of data to add before final pad. |
size | of data to add before final pad. |
Process encrypted data in-place. This assumes no need to set the address buffer.
address | of data to process. |
size | of data to process. |
flag | if to pad data. |
Check if a specific cipher is supported.
name | of cipher to check. |
Finalize and recycle current digest to start a new digest.
binary | digest used rather than text if true. |
Reset and restart digest object.
Test to see if a specific digest type is supported.
name | of digest we want to check. |
Shortcut for short md5 digests if supported...
text | to create a digest for. |
Test to see if a specific digest type is supported.
name | of digest we want to check. |
Push entropic seed.
buffer | of random data to push. |
size | of buffer. |
Re-seed pseudo-random generation and entropy pools.
Get high-entropy random data. This is often used to initialize keys. This operation may block if there is insufficient entropy immediately available.
memory | buffer to fill. |
size | of buffer. |
Fill memory with pseudo-random values. This is used as the basis for all get and real operations and does not depend on seed entropy.
memory | buffer to fill. |
size | of buffer to fill. |
Get a pseudo-random integer, range 0 - 32767.
Get a pseudo-random integer in a preset range.
min | value of random integer. |
max | value of random integer. |
Get a pseudo-random floating point value.
Get a pseudo-random floating point value in a preset range.
min | value of random floating point number. |
max | value of random floating point number. |
Determine if we have sufficient entropy to return random values.
Create 36 character random uuid string.
string | to write uuid into, must be 37 bytes or more. |
Get an address list directly. This is used internally by some derived socket types when generic address lists would be invalid.
host | name in the form address or "address:port" |
service | id or port to use if not specified in host string. |
type | of service to get. |
protocol | of service to get. |
Release an address list directly. This is used internally by some derived socket types which do not use generic address lists.
list | of addresses. |
A generic socket address class. This class uses the addrinfo list to store socket multiple addresses in a protocol and family independent manner. Hence, this address class can be used for ipv4 and ipv6 sockets, for assigning connections to multiple hosts, etc. The address class will call the resolver when passed host names.
Construct a socket address. This is used to get an address to bind a socket interface to. The address can be specified as the ip address of the interface or as a "hostname". If a hostname is used, then family should be specified for clarity.
family | of socket address. Needed when host names are used. |
address | or hostname. |
type | of socket (stream, dgram, etc). |
protocol | number of socket. |
Construct a socket address for an existing socket. This can be the name of a host or to perform a lookup in a domain for a service. Family can be used to restrict the set of results returned, however since things like connecto() already filter by family and create will use family from the addrinfo, in most cases AF_UNSPEC can be used. This may be depreciated in favor of the constructor that matches a set() method.
family | of hosts to filter by or AF_UNSPEC. |
hostname | or ip address. The socket family is used for hostnames. |
service | port or name we are referencing or NULL. |
Construct a socket address list for a service.
host | address for service. |
service | name or port number. |
type | of service, stream, dgram, etc. |
Construct a socket address from host and service. This is primarily used to construct a list of potential service connections by pure port numbers or for host lookup only.
hostname | or address to use. |
service | port or 0. |
Construct a socket address from an IPv4 address and a port number.
Construct a socket address from an IPv6 address and a port number.
Construct a socket address from a sockaddr object.
Construct a socket address from an addrinfo structure.
Construct an empty address.
Copy constructor.
reference | to object to copy from. |
Assignment operator.
reference | to object to copy from. |
Destroy address. Deallocate addrinfo structure.
Compare two address lists.
Get the first socket address in our address list.
Get the first socket address by casted reference.
Get the first socket address of specified family from our list.
family | to seek. |
Get the family of the first member in a list of services.
Get the address size of the first address.
Get the port of the first address .
Set the port of all addresses in the list.
port | the port to set. |
Returns a copy of this address list with the specified port set.
Find a specific socket address in our address list.
Get the full socket address list from the object.
Get the full socket address list by casted reference.
Return the full socket address list by pointer reference.
Print the first socket address as a human-readable string to the provided buffer and returns the printed string length.
src | Address to print. |
dst | Destination buffer to print the socket address on. |
dst_sz | Size of the provided buffer. Strongly recommended to be at least INET6_ADDRSTRLEN (or INET_ADDRSTRLEN if compiled without IPv6). |
port | If true, print port number with address. If true, ipv6_brackets will also be forced to true. |
ipv6_brackets | If true, force printing IPv6 brackets. Ignored if address is an IPv4. |
Test if the address list is valid.
Test if we have no address list.
Test if the first socket address is ADDR_ANY: 0.0.0.0 or ::0
Clear the address list and set the first address to be the ADDR_ANY of the current family, or of the specified family (if set).
family | address family to set. |
Test if the first socket address is ADDR_LOOPBACK: 127.0.0.1 or ::1
Clear the address list and set the first address to be the ADDR_LOOPBACK of the current family, or of the specified family (if set).
family | address family to set. |
Clear current object.
Set the host addresses to form a new list.
hostname | or address to resolve. |
service | name or port number, or NULL if not used. |
type | of socket (stream or dgram) to filter list by. |
Append additional host addresses to our list.
hostname | or address to resolve. |
service | name or port number, or NULL if not used. |
type | of socket (stream or dgram). |
Set an entry for host binding.
family | of socket address. Needed when hostnames are used. |
address | or hostname. |
type | of socket (stream, dgram, etc). |
protocol | number of socket. |
Add an individual socket address to our address list.
address | to add. |
Insert unique members from another socket address list to ours.
address | list to insert into list. |
Remove members from another socket address list from ours.
address | list to remove from list. |
Remove an individual socket address from our address list.
address | to remove. |
Insert an individual socket address to our address list only if unique.
address | to insert into list. |
Copy an existing addrinfo into our object. This is also used to support the copy constructor.
address | list to copy from. |
Set an individual socket address for our address list.
address | to add. |
Set a socket address from host and service.
hostname | or address to use. |
service | port or 0. |
Returns the size of the socket address according to the family.
Returns the port of the socket address.
Set the port of the socket address.
address | to edit. |
port | to associate to the socket address. |
Test if the socket address is ADDR_ANY: 0.0.0.0 or ::0
Set the socket address to ADDR_ANY: 0.0.0.0 or ::0
Get a ADDR_ANY socket address of the given family.
Test if the socket address is ADDR_LOOPBACK: 127.0.0.1 or ::1
Set the socket address to ADDR_LOOPBACK: 127.0.0.1 or ::1 depending on the family of the pointed address.
Get a ADDR_LOOPBACK socket address of the given family.
Duplicate a socket address.
address | to duplicate. |
Convert address object into ipv4 address.
address | to convert. |
Convert address object into ipv6 address.
address | to convert. |
Print socket address as a human-readable string to the provided buffer and returns the printed string length.
src | Address to print. |
dst | Destination buffer to print the socket address on. |
dst_sz | Size of the provided buffer. Strongly recommended to be at least INET6_ADDRSTRLEN (or INET_ADDRSTRLEN if compiled without IPv6). |
port | If true, print port number with address. If true, ipv6_brackets will also be forced to true. |
ipv6_brackets | If true, force printing IPv6 brackets. Ignored if address is an IPv4. |
Create a socket object for use.
Create socket as duped handle of existing socket.
existing | socket to dup. |
Create socket from existing socket descriptor.
socket | descriptor to use. |
Create and connect a socket to an address from an address list. The type of socket created is based on the type we are connecting to.
address | list to connect with. |
Create an unbound socket of a specific type.
family | of our new socket. |
type | (stream, udp, etc) of our new socket. |
protocol | number of our new socket.' |
Create a bound socket. If one wishes to listen for connections on a protocol, then ListenSocket should be used instead.
address | to bind or "*" for all. |
port | number of service to bind. |
family | to bind as. |
type | of socket to bind (stream, udp, etc). |
protocol | of socket to bind. |
Shutdown, close, and destroy socket.
Cancel pending i/o by shutting down the socket.
Cancel pending i/o by shutting down the socket.
socket | to shutdown. |
Shutdown and close the socket.
Get error code.
See the number of bytes in the receive queue.
value | to test for. |
Test if socket is connected.
Test for pending input data. This function can wait up to a specified timeout for data to appear.
timeout | or 0 if none. |
Set nodelay option for tcp socket.
Test for pending input data. This function can wait up to a specified timeout for data to appear.
socket | to test. |
timeout | or 0 if none. |
Test for output data sent. This function can wait up to a specified timeout for data to appear sent.
timeout | or 0 if none. |
Get the number of bytes of data in the socket receive buffer.
Set socket for unicast mode broadcasts.
enable | broadcasting if true. |
Set socket for keepalive packets.
enable | keep-alive if true. |
Set socket blocking I/O mode.
enable | true for blocking I/O. |
Set multicast mode and multicast broadcast range.
ttl | to set for multicast socket or 0 to disable multicast. |
Set loopback to read multicast packets we broadcast.
enable | true to loopback, false to ignore. |
Get socket error code.
Set the time to live before packets expire.
time | to live to set. |
Set the size of the socket send buffer.
size | of send buffer to set. |
Set the size to wait before sending.
size | of send wait buffer to set. |
Set the size of the socket receive buffer.
size | of recv buffer to set. |
Get the type of a socket.
socket | descriptor. |
Set segment size and get MTU.
socket | to modify. |
size | of segment or zero to not set. |
Set congestion control id.
socket | to modify. |
ccid | value to set. |
Get the type of a socket.
Set segment size and get mtu of a socket.
size | of segment or 0 to leave unchanged. |
Set ccid of dccp socket.
ccid | to set. |
Set the type of service field of outgoing packets. Some useful values include IPTOS_LOWDELAY to minimize delay for interactive traffic, IPTOS_THROUGHPUT to optimize throughput, OPTOS_RELIABILITY to optimize for reliability, and IPTOS_MINCOST for low speed use.
type | of service value. |
Set packet priority, 0 to 6 unless privileged. Should be set before type-of-service.
scheduling | priority for packet scheduling. |
Shutdown the socket communication channel.
Connect our socket to a remote host from an address list. For TCP (and DCCP) sockets, the entire list may be tried. For UDP, connect is only a state and the first valid entry in the list is used.
list | of addresses to connect to. |
Disconnect a connected socket. Depending on the implementation, this might be done by connecting to AF_UNSPEC, connecting to a 0 address, or connecting to self.
Join socket to multicast group.
list | of groups to join. |
Drop socket from multicast group.
list | of groups to drop. |
Socket i/o timer setting.
timeout | to wait, inf for blocking, 0 pure non-blocking. |
Peek at data waiting in the socket receive buffer.
data | pointer to save data in. |
number | of bytes to peek. |
Read data from the socket receive buffer. This will be used in abi 4.
data | pointer to save data in. |
number | of bytes to read. |
address | of peer data was received from. |
Write data to the socket send buffer. This will be used in abi 4.
data | pointer to write data from. |
number | of bytes to write. |
address | of peer to send data to if not connected. |
Read a newline of text data from the socket and save in NULL terminated string. This uses an optimized I/O method that takes advantage of socket peeking. This presumes a connected socket on a streamble protocol. Because the trailing newline is dropped, the return size may be greater than the string length. If there was no data read because of eof of data, an error has occured, or timeout without input, then 0 will be returned.
data | to save input line. |
size | of input line buffer. |
Print formatted string to socket.
format | string. |
Read a string of input from the socket and strip trailing newline. This uses an optimized I/O method that takes advantage of socket peeking. This presumes a connected socket on a streamble protocol. Because the trailing newline is dropped, the return size may be greater than the string length. If there was no data read because of eof of data, an error has occured, or timeout without input, then 0 will be returned.
buffer | to save input line. |
Read a newline of text data from the socket and save in NULL terminated string. This uses an optimized I/O method that takes advantage of socket peeking. As such, it has to be rewritten to be used in a ssl layer socket.
socket | to read from. |
data | to save input line. |
size | of input line buffer. |
timeout | to wait for a complete input line. |
Print formatted string to socket.
socket | to write to. |
format | string. |
Write a null terminated string to the socket. This exists because we messed up consistency with the original puts() method. In the future there will be a single puts() that has a NULL default.
string | to write. |
Test if socket is valid.
Test if socket is invalid.
Assign socket from a socket descriptor. Release existing socket if one present.
socket | descriptor to assign to object. |
Get the socket descriptor by casting.
Get the socket descriptor by pointer reference.
Get the number of bytes pending in the receive buffer of a socket descriptor.
socket | descriptor. |
Set the send size of a socket descriptor.
socket | descriptor. |
size | of send buffer to set. |
Set the size to wait before sending.
socket | descriptor. |
size | of send wait buffer to set. |
Set the receive size of a socket descriptor.
socket | descriptor. |
size | of receive buffer to set. |
Connect socket descriptor to a remote host from an address list. For TCP (and DCCP) sockets, the entire list may be tried. For UDP, connect is only a state and the first valid entry in the list is used.
socket | descriptor. |
list | of addresses to connect to. |
Disconnect a connected socket descriptor.
socket | descriptor. |
Drop socket descriptor from multicast group.
socket | descriptor. |
list | of groups to drop. |
Join socket descriptor to multicast group.
socket | descriptor. |
list | of groups to join. |
Get socket error code of socket descriptor.
socket | descriptor. |
Set multicast mode and multicast broadcast range for socket descriptor.
socket | descriptor. |
ttl | to set for multicast socket or 0 to disable multicast. |
Set loopback to read multicast packets socket descriptor broadcasts.
socket | descriptor. |
enable | true to loopback, false to ignore. |
Set socket blocking I/O mode of socket descriptor.
socket | descriptor. |
enable | true for blocking I/O. |
Set socket for keepalive packets for socket descriptor.
socket | descriptor. |
enable | keep-alive if true. |
Set socket for unicast mode broadcasts on socket descriptor.
socket | descriptor. |
enable | broadcasting if true. |
Set tcp nodelay option on socket descriptor.
socket | descriptor. |
Set packet priority of socket descriptor.
socket | descriptor. |
scheduling | priority for packet scheduling. |
Set type of service of socket descriptor.
socket | descriptor. |
type | of service. |
Set the time to live for the socket descriptor.
socket | descriptor. |
time | to live to set. |
Get the address family of the socket descriptor.
Get the address family of a socket address object.
address | to examine. |
Get the address family of an internet socket address object.
address | to examine. |
Get data waiting in receive queue.
socket | to get from. |
buffer | to save. |
size | of data buffer to request. |
flags | for i/o operation (MSG_OOB, MSG_PEEK, etc). |
address | of source. |
Send data on socket.
socket | to send to. |
buffer | to send. |
size | of data buffer to send. |
flags | for i/o operation (MSG_OOB, MSG_PEEK, etc). |
address | of destination, NULL if connected. |
Send reply on socket. Used to reply to a recvfrom message.
socket | to send to. |
buffer | to send. |
size | of data buffer to send. |
flags | for i/o operation (MSG_OOB, MSG_PEEK, etc). |
address | to reply to. |
Bind the socket descriptor to a known interface and service port.
socket | descriptor to bind. |
address | to bind to or "*" for all. |
service | port to bind. |
protocol | to use or 0 if default. |
Bind the socket descriptor to a known interface listen on service port.
socket | descriptor to bind. |
address | of interface to bind to. |
backlog | for service. |
Bind the socket descriptor to a known interface.
socket | descriptor to bind. |
address | of interface to bind to. |
Accept a socket connection from a remote host.
socket | descriptor to accept from. |
address | of socket accepting. |
Create a socket object unbound.
family | of socket. |
type | of socket. |
protocol | of socket. |
Create a connected socket.
address | list to connect to. |
type | of socket to create. |
protocol | of socket. |
Create a bound socket for a service.
iface | to bind. |
service | port to bind. |
family | to select or AF_UNSPEC |
type | of socket to create. |
protocol | of socket to create. |
Create a connected socket for a service.
address | of service for connect. |
Release (close) a socket.
socket | to close. |
Lookup and return the host name associated with a socket address.
address | to lookup. |
buffer | to save hostname into. |
size | of buffer to save hostname into. |
Create an address info lookup hint based on the family and type properties of a socket descriptor.
socket | descriptor. |
hint | buffer. |
Lookup a host name and service address based on the addressing family and socket type of a socket descriptor. Store the result in a socket address structure.
socket | descriptor. |
address | that is resolved. |
hostname | to resolve. |
service | port. |
Get the size of a socket address.
address | of socket. |
Compare socket addresses. Test if the address and service matches or if there is no service, then just the host address values.
address1 | to compare. |
address2 | to compare. |
Copy a socket address.
target | address pointer to copy into. |
origin | address pointer to copy from. |
Store an address into an address object.
storage | for address. |
address | to store. |
Store an address into an internet address object.
storage | for address. |
address | to store. |
Compare socket host addresses. Test if the host address matches or if there is no service, then just the host address values.
address1 | to compare. |
address2 | to compare. |
Compare socket addresses. Test if the stored addresses received match. or if there is no service, then just the host address values.
address1 | to compare. |
address2 | to compare. |
Compare socket addresses. Test if the internet addresses received match. or if there is no service, then just the host address values.
address1 | to compare. |
address2 | to compare. |
See if both addresses are in the same subnet. This is only relevant to IPV4 and class domain routing.
address1 | to test. |
address2 | to test. |
Get the socket address of the interface needed to reach a destination address.
address | of interface found. |
target | address. |
size | of interface, 0 used for older code |
Get the hostname of a socket address.
address | to lookup. |
buffer | to save hostname in. |
size | of hostname buffer. |
Get the service port of a socket.
address | of socket to examine. |
Get the service port of an inet socket.
address | of internet socket to examine. |
Convert a socket address and service into a hash map index.
address | to convert. |
size | of map index. |
Convert a socket host address into a hash map index.
address | to convert. |
size | of map index. |
Initialize socket subsystem.
Set default socket family preference for query options when the socket type is otherwise not specified.
family | to select. |
Set the default socket behavior for v6-v4 mapping. This also effects v6 address lookup as to whether v4 remapped addresses can be used if no v6 address is found.
enable | true to set mapping. This is default. |
Return error code of last socket operation,
Simple function to validate that a given IP address string is a "zero" address. Such address strings are used for example in SIP to indicate "hold" by re-inviting peers to a null address. Supports IPV4 and IPV6 addresses.
string | address to check. |
Simple function to validate that a given IP address string is a numeric address. This can be used to verify an address is not a "host" name. Supports IPV4 and IPV6 address strings.
string | address to check. |
Get local address to which the socket is bound. This is defined here because we may re-define the backend linkage for the socks proxy in the future.
socket | descriptor to examine. |
address | storage for local address. |
Get remote address to which the socket is connected. This is defined here because we may re-define the backend linkage for the socks proxy in the future.
socket | descriptor to examine. |
address | storage for remote address. |
Helper function for linked_pointer<struct sockaddr>.
Helper function for linked_pointer<struct sockaddr>.
Helper function for linked_pointer<struct sockaddr>.
Create an unitialized instance of guard. Usually used with a guard = operator.
Set guard to mutex lock a new object. If a lock is currently held, it is released.
object | to guard. |
Prematurely release a guard.
Construct a guard for a specific object.
object | to guard. |
Release mutex when guard falls out of scope.
Create a thread object that will have a preset stack size. If 0 is used, then the stack size is os defined/default.
stack | size to use or 0 for default. |
Map thread for get method. This should be called from start of the run() method of a derived class.
Check if running.
Set thread priority without disrupting scheduling if possible. Based on scheduling policy. It is recommended that the process is set for realtime scheduling, and this method is actually for internal use.
Yield execution context of the current thread. This is a static and may be used anywhere.
Sleep current thread for a specified time period.
timeout | to sleep for in milliseconds. |
Get mapped thread object. This returns the mapped base class of the thread object of the current executing context. You will need to cast to the correct derived class to access derived thread-specific storage. If the current thread context is not mapped NULL is returned.
Abstract interface for thread context run method.
Destroy thread object, thread-specific data, and execution context.
Exit the thread context. This function should NO LONGER be called directly to exit a running thread. Instead this method will only be used to modify the behavior of the thread context at thread exit, including detached threads which by default delete themselves. This documented usage was changed to support Mozilla NSPR exit behavior in case we support NSPR as an alternate thread runtime in the future.
Used to initialize threading library. May be needed for some platforms.
Get cache line size.
Used to specify scheduling policy for threads above priority "0". Normally we apply static realtime policy SCHED_FIFO (default) or SCHED_RR. However, we could apply SCHED_OTHER, etc.
Set concurrency level of process. This is essentially a portable wrapper for pthread_setconcurrency.
Determine if two thread identifiers refer to the same thread.
thread1 | to test. |
thread2 | to test. |
Get current thread id.
Check if timer has been updated since last check. This also sets updated false.
Check if timer active.
Construct an untriggered timer set to the time of creation.
Construct a triggered timer that expires at specified offset.
offset | to expire in milliseconds. |
Construct a triggered timer that expires at specified offset.
offset | to expire in seconds. |
Construct a timer from a copy of another timer.
copy | of timer to construct from. |
Set the timer to expire.
expire | time in milliseconds. |
Set the timer to expire.
expire | time in seconds. |
Set (update) the timer with current time.
Clear pending timer, has no value.
Get remaining time until the timer expires.
Get remaining time until timer expires by reference.
Check if timer has expired.
Check if timer expired for is() expression.
Set timer expiration.
expire | timer in specified seconds. |
Set timer expiration.
expire | timer in milliseconds. |
Adjust timer expiration.
expire | time to add in seconds. |
Adjust timer expiration.
expire | time to add in milliseconds. |
Adjust timer expiration.
expire | time to subtract in seconds. |
Adjust timer expiration.
expire | time to subtract in milliseconds. |
Compute difference between two timers.
timer | to use for difference. |
Compare timers if same timeout.
timer | to compare with. |
Compare timers if not same timeout.
timer | to compare with. |
Compare timers if earlier timeout than another timer.
timer | to compare with. |
Compare timers if earlier than or equal to another timer.
timer | to compare with. |
Compare timers if later timeout than another timer.
timer | to compare with. |
Compare timers if later than or equal to another timer.
timer | to compare with. |
Sleep current thread until the specified timer expires.
timer | to reference for sleep. |
Get timer ticks since uuid epoch.
Heap base-class container for typeref objects. This uses atomic reference counters for thread safety with maximal performance. This is used as a protected base class used for strongly typed heap containers through templates.
Construction of aligned container. This is used to inform the object of the underlying real address it exists on the heap since malloc is not assured to be atomically aligned by default.
address | of actual allocation. |
size | of object allocated. |
ar | pool to use |
Release memory and delete object when no longer referenced. This gets called with the atomic reference counter < 1, such as when the last smart pointer de-references.
Is this object not empty?
Number of retains (smart pointers) referencing us.
Override delete to de-allocate actual heap. This is used because the object is atomically aligned, but the heap may not be.
address | of our object. |
Retain a copy of this object. Usually a smart pointer referencing.
Release a copy of this object. Only when the reference count reaches 0 is it destroyed.
Create a smart pointer referencing an existing heap object.
object | to reference. |
Create a smart pointer based on another pointer. Both pointers then reference the same object.
pointer | instance to share reference with. |
Create a smart pointer referencing nothing.
Set our smart pointer to a specific heap container. If we were pointing to something already we release that.
object | to reference. |
Assign from a guarded typeref.
Adjust memory pointer to atomic boundry.
address | that was allocated. |
Destroy pointer when falling out of scope. This de-references the heap container.
Set our smart pointer based on another pointer instance. If we are already referencing, we release the current container.
pointer | instance to share reference with. |
Manually release the current container.
Get size of referenced heap object.
Get number of references to container.
Check if pointer currently has a heap container.
Check if we are currently not pointing to anything.
Special weak-public means to copy a container reference. This uses the base class container which is not public, so only derived type specific smart pointers can actually use this method. It is made public because making it protected actually makes it inaccessible to template derived classes.
target | smart pointer object to set. |
object | to have it reference. |
Size of "unicode_t" character codes, may not be ucs4_t size.
A convenient NULL pointer value.
Compute character size of utf8 string codepoint.
codepoint | in string. |
Count ut8 encoded ucs4 codepoints in string.
string | of utf8 data. |
Get codepoint offset in a string.
string | of utf8 data. |
position | of codepoint in string, negative offsets are from tail. |
Convert a utf8 encoded codepoint to a ucs4 character value.
encoded | utf8 codepoint. |
How many chars requires to encode a given wchar string.
string | of ucs4 data. |
How many chars requires to encode a given unicode character.
character | to encode. |
Convert a unicode string into utf8.
string | of unicode data to pack |
buffer | of character protocol to put data into. |
Convert a utf8 string into a unicode data buffer.
unicode | data buffer. |
buffer | of character protocol to pack from. |
size | of unicode data buffer in codepoints. |
Dup a utf8 string into a ucs4_t string.
Dup a utf8 string into a ucs2_t representation.
Find first occurance of character in string.
string | to search in. |
character | code to search for. |
start | offset in string in codepoints. |
Find last occurrence of character in string.
string | to search in. |
character | code to search for. |
end | offset to start from in codepoints. |
Count occurrences of a unicode character in string.
string | to search in. |
character | code to search for. |
Get a unicode character from a character protocol.
buffer | of character protocol to read from. |
Push a unicode character to a character protocol.
character | to push to file. |
buffer | of character protocol to push character to. |
Create a utf8 pointer set to NULL.
Create a utf8 pointer for an existing char pointer.
string | pointer to use. |
Create a utf8 pointer as a copy of existing utf8 pointer.
copy | of object to use. |
Iterative increment of a utf8 pointer to prior codepoint.
Iterative decrement of a utf8 pointer to next codepoint.
Adjust utf8 pointer by specified codepoints forward.
offset | to increment by. |
Adjust utf8 pointer by specified codepoints backward.
offset | to decrement by. |
Get new utf8 string after adding a codepoint offset.
offset | to add. |
Get new utf8 string after subtracting a codepoint offset.
offset | to subtract. |
Check if text is valid pointer.
Check if text is an invalid pointer.
Extract a unicode character from a specified codepoint.
codepoint | offset to extract character from. |
Assign a utf8 string to point to.
string | to point to. |
Iterative increment of a utf8 pointer to next codepoint.
Iterative decrement of a utf8 pointer to prior codepoint.
check if pointer equals another string.
string | to check. |
check if pointer does not equal another string.
string | to check. |
Get unicode character pointed to by pointer.
Get c string we point to.
Convert utf8 pointer to a generic string pointer.
Get length of null terminated utf8 string in codepoints.
Access interface to share lock the object.
A kind of smart pointer object to support shared locking protocol. This object initiates a shared lock for the object being referenced when it is instantiated, and releases the shared lock when it is destroyed. You would pass the pointer an object that has the Shared as a base class.
Create an instance of an exclusive object reference.
object | containing Exclusive base class protocol to lock. |
Destroy reference to shared locked object, release lock.
Test if the reference holds an active lock.
Test if the reference holds an active lock.
Release a held lock programmatically. This can be used to de-reference the object being share locked without having to wait for the destructor to be called when the shared_lock falls out of scope.
Call exclusive access on referenced objects protocol.
Restore shared access on referenced objects protocol.
Share the lock with other referencers. Many of our shared locking objects support the ability to switch between shared and exclusive mode. This derived protocol member allows one to restore the lock to shared mode after it has been made exclusive.
Convert object to an exclusive lock. Many of our shared locking objects such as the "conditional lock" support the ability to switch between shared and exclusive locking modes. This derived protocol member allows one to temporarily assert exclusive locking when tied to such methods.
Create an instance of an exclusive object reference.
object | containing Exclusive base class protocol to lock. |
Destroy reference to shared locked object, release lock.
Test if the reference holds an active lock.
Test if the reference holds an active lock.
Release a held lock programmatically. This can be used to de-reference the object being share locked without having to wait for the destructor to be called when the shared_lock falls out of scope.
Call exclusive access on referenced objects protocol.
Restore shared access on referenced objects protocol.
Atomic counter class. Can be used to manipulate value of an atomic counter without requiring explicit thread locking.
Atomic spinlock class. Used as high-performance sync lock between threads.
Construct and initialize spinlock.
NAMESPACE_UCOMMON Acquire the lock. If the lock is not acquired, one "spins" by doing something else. One suggestion is using thread::yield.
Wait for and aquire spinlock.
Release an acquired spinlock.
Initialize and construct conditional.
Destroy conditional, release any blocked threads.
Lock the conditional's supporting mutex.
Unlock the conditional's supporting mutex.
Initialize and construct conditional.
Destroy conditional, release any blocked threads.
Conditional wait for signal on millisecond timeout.
timeout | in milliseconds. |
Conditional wait for signal on timespec timeout.
timeout | as a high resolution timespec. |
Wait (block) until signalled.
Signal the conditional to release one waiting thread.
Signal the conditional to release all waiting threads.
Initialize integer counter of unknown size.
Initialize integer counter for a range of values.
limit | before recycling to zero. |
Get the next counter value.
Get the range of values before recycling.
Reference next counter value through pointer operation.
Reference next counter value by casting to integer.
Assign the value of the counter.
value | to assign. |
A method to use to "post" any changed values when shadowing a mixed object class. This is used by DateNumber and string classes.
Size of date string field.
Create a julian date from a time_t type.
value | from time() |
Create a julian date from a local or gmt date and time.
object | from DateTime::glt() or gmt(). |
Create a julian date from a ISO date string of a specified size.
pointer | to ISO date string. |
size | of date field if not null terminated. |
Create a julian date from an arbitrary year, month, and day.
year | of date. |
month | of date (1-12). |
day | of month (1-31). |
Create a julian date object from another object.
object | to copy. |
Construct a new julian date with today's date.
Destroy julian date object.
Get the year of the date.
Get the month of the date (1-12).
Get the day of the month of the date.
Get the day of the week (0-7).
Get a ISO string representation of the date (yyyy-mm-dd).
buffer | to store string. |
Get a time_t for the julian date if in time_t epoch.
Get the date as a number for the object or 0 if invalid.
Set (update) the date with current date.
Set the julian date based on an ISO date string of specified size.
pointer | to date string field. |
size | of field if not null terminated. |
Check if date is valid.
Casting operator to return date as number.
Access julian value.
Expression operator to return an ISO date string for the current julian date.
Increment date by one day.
Decrement date by one day.
Increment date by offset.
offset | to add to julian date. |
Decrement date by offset.
offset | to subtract from julian date. |
Add days to julian date in an expression.
days | to add. |
Subtract days from a julian date in an expression.
days | to subtract. |
Operator to compute number of days between two dates.
date | offset for computation. |
Assign date from another date object.
date | object to assign from. |
Compare julian dates if same date.
date | to compare with. |
Compare julian dates if not same date.
date | to compare with. |
Compare julian date if earlier than another date.
date | to compare with. |
Compare julian date if earlier than or equal to another date.
date | to compare with. |
Compare julian date if later than another date.
date | to compare with. |
Compare julian date if later than or equal to another date.
date | to compare with. |
Check if julian date is not valid.
Check if julian date is valid for is() expression.
Constant for number of seconds in a day.
Constant for number of seconds in a hour.
Constant for number of seconds in a week.
Size of time string field.
Create a time from the time portion of a time_t.
value | of time_t to use. |
Create a time from the time portion of a date and time object.
object | from DateTime::glt() or gmt(). |
Create a time from a hh:mm:ss formatted time string.
pointer | to formatted time field. |
size | of field if not null terminated. |
Create a time from hours (0-23), minutes (0-59), and seconds (0-59).
hour | of time. |
minute | of time. |
second | of time. |
Create a time object from another object.
object | to copy. |
Create a time from current time.
Destroy time object.
Get current time in seconds from midnight.
Get hours from midnight.
Get minutes from current hour.
Get seconds from current minute.
Get a hh:mm:ss formatted string for current time.
buffer | to store time string in. |
Set (update) the time with current time.
Set time from a hh:mm:ss formatted string.
pointer | to time field. |
size | of field if not null terminated. |
Check if time object had valid value.
Check if time object has valid value for is() operator.
Check if time object has valid value for ! operator.
Get difference (in seconds) between two times.
reference | time to get difference from. |
Add seconds to the current time, wrap if 24 hours.
seconds | to add. |
Subtract seconds to the current time, wrap if 24 hours.
seconds | to subtract. |
Get time in seconds.
Get object time in seconds.
Convert to standard 24 hour time string.
Incrememnt time by 1 second, wrap on 24 hour period.
Decrement time by 1 second, wrap on 24 hour period.
Assign a time as a copy of another time.
time | to assign from. |
Increment time by specified seconds. Wraps on 24 hour period.
seconds | to add to current time. |
Decrement time by specified seconds. Wraps on 24 hour period.
seconds | to subtract from current time. |
Compare time with another time to see if same time.
time | to compare with. |
Compare time with another time to see if not same time.
time | to compare with. |
Compare time if earlier than another time.
time | object to compare with. |
Compare time if earlier than or equal to another time.
time | object to compare with. |
Compare time if later than another time.
time | object to compare with. |
Compare time if later than or equal to another time.
time | object to compare with. |
Most of the common chmod values are predefined.
Enumerated file access modes.
File offset type.
Used to mark "append" in set position operations.
Construct an unattached fsys descriptor.
Contruct fsys from raw file handle.
Copy (dup) an existing fsys descriptor.
descriptor | to copy from. |
Create a fsys descriptor by opening an existing file or directory.
path | of file to open for created descriptor. |
access | mode of file. |
Create a fsys descriptor by creating a file.
path | of file to create for descriptor. |
access | mode of file access. |
permission | mode of file. |
Close and release a file descriptor.
Get the descriptor from the object by pointer reference.
Get the descriptor from the object by casting reference.
Reset error flag.
Test if file descriptor is open.
Test if file descriptor is closed.
Assign file descriptor by duplicating another descriptor.
descriptor | to dup from. |
Replace current file descriptor with an external descriptor. This does not create a duplicate. The external descriptor object is marked as invalid.
Assing file descriptor from system descriptor.
descriptor | to dup from. |
Get the native system descriptor handle of the file descriptor.
Set with external descriptor. Closes existing file if open.
descriptor | of open file. |
Release descriptor, do not close.
Set the position of a file descriptor.
offset | from start of file or "end" to append. |
Drop cached data from start of file.
size | of region to drop or until end of file. |
See if current file stream is a tty device.
See if the file handle is a tty device.
Read data from descriptor or scan directory.
buffer | to read into. |
count | of bytes to read. |
Write data to descriptor.
buffer | to write from. |
count | of bytes to write. |
Get status of open descriptor.
buffer | to save status info in. |
Truncate file to specified length. The file pointer is positioned to the new end of file.
offset | to truncate to. |
Commit changes to the filesystem.
Set directory prefix (chdir).
path | to change to. |
Get current directory prefix (pwd).
path | to save directory into. |
size | of path we can save. |
Stat a file.
path | of file to stat. |
buffer | to save stat info. |
Erase (remove) a file only.
path | of file. |
Copy a file.
source | file. |
target | file. |
size | of buffer. |
Rename a file.
oldpath | to rename from. |
newpath | to rename to. |
Change file access mode.
path | to change. |
value | of mode to assign. |
Test if path exists.
path | to test. |
Test if path readable.
path | to test. |
Test if path writable.
path | to test. |
Test if path is executable.
path | to test. |
Test if path is a file.
path | to test. |
Test if path is a directory.
path | to test. |
Test if path is a symlink.
path | to test. |
Test if path is a device path.
path | to test. |
Test if path is a hidden file.
path | to test. |
Open a file or directory.
path | of file to open. |
access | mode of descriptor. |
Assign descriptor directly.
descriptor | to assign. |
Assign a descriptor directly.
object | to assign descriptor to. |
descriptor | to assign. |
Open a file descriptor directly.
path | of file to create. |
access | mode of descriptor. |
mode | of file if created. |
Remove a symbolic link explicitly. Other kinds of files are also deleted. This should be used when uncertain about symlinks requiring special support.
path | to remove. |
Create a symbolic link.
path | to create. |
target | of link. |
Create a hard link.
path | to create link to. |
target | of link. |
Read a symbolic link to get it's target.
path | of link. |
buffer | to save target into. |
size | of buffer. |
Close a fsys resource.
Get last error.
Direct means to open a read-only file path and return a descriptor.
path | to open. |
Direct means to create or access a writable path and return descriptor.
path | to create. |
Direct means to create or append a writable path and return descriptor.
path | to create. |
Release a file descriptor.
descriptor | to release. |
Create pipe. These are created inheritable by default.
input | descriptor. |
output | descriptor. |
size | of buffer if supported. |
Changle inheritable handle. On windows this is done by creating a duplicate handle and then closing the original. Elsewhere this is done simply by setting flags.
descriptor | to modify. |
enable | child process inheritence. |
Create inheritable /dev/null handle.
Load a library into memory.
path | to plugin. |
Execute a process and get exit code.
path | to execute. |
argv | list. |
optional | env. |
Create dso object for use by load functions.
Create and map a dso object.
path | of library to map. |
Destroy dso and release library.
Map library object with library.
name | of library to load. |
Release loaded library.
Find symbol in loaded module.
module | to search. |
symbol | to search for. |
Create and initialize an empty index.
Destroy index.
Find a specific member in the ordered list.
offset | to member to find. |
Count of objects this list manages.
Purge the linked list and then set the index to empty.
Reset linked list to empty without purging.
Used to synchronize lists managed by multiple threads. A derived locking method would be invoked.
Used to synchronize lists managed by multiple threads. A derived unlocking method would be invoked.
Return a pointer to the head of the list. This allows the head pointer to be used like a simple root list pointer for pure LinkedObject based objects.
Get (pull) object off the list. The start of the list is advanced to the next object.
Add an object into the ordered index.
ordered | object to add to the index. |
Get an indexed member from the ordered index.
index | of member to fetch. |
Return first object in list for iterators.
Return last object in list for iterators.
Return head object pointer.
Assign ordered index.
object | to copy from. |
Add object to our list.
object | to add. |
Supporting function to construct a new or access an existing shared memory segment. Used by primary constructors.
name | of segment to create or access. |
size | of segment if creating new. Use 0 for read-only access. |
Construct a read/write access mapped shared segment of memory of a known size. This constructs a new memory segment.
name | of segment. |
size | of segment. |
Provide read-only mapped access to an existing named shared memory segment. The size of the map is found by the size of the already existing segment.
name | of existing segment. |
Unmap memory segment.
Unmap memory segment.
Destroy a previously existing memory segment under the specified name. This is used both before creating a new one, and after a publishing process unmaps the segment it created.
name | of segment to remove. |
Test if map active.
Test if map is inactive.
Extend size of managed heap on shared memory segment. This does not change the size of the mapped segment in any way, only that of any heap space that is being allocated and used from the mapped segment.
size | of space requested. Will fault if past end of segment. |
Get memory from a specific offset within the mapped memory segment.
offset | from start of segment. Will fault if past end. |
Copy memory from specific offset within the mapped memory segment. This function assures the copy is not in the middle of being modified.
offset | from start of segment. |
buffer | to copy into. |
size | of object to copy. |
Get size of mapped segment.
Get starting address of mapped segment.
An API that allows "disabling" of publishing shared memory maps. This may be useful when an app doesn't want to use shared memory as a runtime or build option, but does not want to have to be "recoded" explicitly for non-shared memory either. Basically it substitutes a dummy map running on the local heap.
Create an initially empty autorelease pool.
Destroy an autorelease pool and delete member objects.
Destroy an autorelease pool and delete member objects. This may be used to release an existing pool programmatically when desired rather than requiring the object to fall out of scope.
Add a linked object to the autorelease pool.
object | to add to pool. |
Create an instance of a number.
buffer | or NULL if created internally. |
size | of field if not null terminated. |
Set string based on a new value.
value | to set. |
Get string buffer representing the number.
Get value of string buffer as a long integer.
Get value of string buffer as expression of object.
Cast string as long integer and get value of buffer.
Cast object as a string to retrieve buffer.
Assign a value to the number. This rewrites the string buffer.
value | to assign. |
Assign another number to this number.
number | to assign to assign. |
Add a value to the number. This rewrites the string buffer.
value | to add. |
Subtract a value from the number. This rewrites the string buffer.
value | to subtract. |
Decrement the number object. This rewrites the string buffer.
Increment the number object. This rewrites the string buffer.
Construct an auto-pointer referencing an existing object.
object | we point to. |
Construct an auto-pointer as a copy of another pointer. The retention of the object being pointed to will be increased.
pointer | we are a copy of. |
Delete auto pointer. When it falls out of scope, the retention of the object it references is reduced. If it falls to zero in a reference counted object, then the object is auto-deleted.
Set our pointer to a specific object. If the pointer currently references another object, that object is released. The pointer references our new object and that new object is retained.
object | to assign to. |
Manually release the pointer. This reduces the retention level of the object and resets the pointer to point to nobody.
Test if the pointer is not set.
Test if the pointer is referencing an object.
Object factory for creating members of the spare array when they are initially requested.
Purge the array by deleting all created objects.
Get (reference) an object at a specified offset in the array.
offset | in array. |
Create a sparse array of known size. No member objects are created until they are referenced.
size | of array. |
Destroy sparse array and delete all generated objects.
Get count of array elements.
Protocol to allocate memory from the pager heap. The size of the request must be less than the size of the memory page used. The actual method is in a derived or stacked object.
size | of memory request. |
Convenience function.
size | of memory request. |
Allocate memory from the pager heap. The size of the request must be less than the size of the memory page used. The memory is initialized to zero. This uses alloc.
size | of memory request. |
Duplicate NULL terminated string into allocated memory. This uses alloc.
string | to copy into memory. |
Duplicate existing memory block into allocated memory. This uses alloc.
memory | to data copy from. |
size | of memory to allocate. |
Extract formatted string for object.
Extract formatted string for object.
character | code we are pushing. |
Method to retain (or increase retention) of an object.
Method to release (or decrease retention) of an object.
Required virtual destructor.
Retain (increase retention of) object when copying.
Increase retention operator.
Decrease retention operator.
Size of key data.
Buffer of key value.
Different error states of the security context.
Last error flagged for this context.
This is derived in different back-end libraries, and will be used to clear certificate credentials.
Convenience type to represent a security context.
Convenience type to represent a secure socket session.
Convenience type to represent a ssl certificate object.
Convenience type to represent a secure socket buf i/o stream.
Initialize secure stack for first use, and report if SSL support is compiled in.
Initialize secure stack with fips support. If fips support is not successfully enabled, the secure stack is also not initialized. Hence init() can be used for non-fips certified operation if fips fails.
Copy system certificates to a local path.
path | to copy to. |
Get path to system certificates.
Create a sever context. The certificate file used will be based on the init() method name. This may often be /etc/ssl/certs/initname.pem. Similarly, a matching private key certificate will also be loaded. An optional certificate authority document can be used when we are establishing a service which ssl clients have their own certificates.
authority | path to use or NULL if none. |
Create an anonymous client context with an optional authority to validate.
authority | path to use or NULL if none. |
paths | of certificates to use. |
Create a peer user client context. This assumes a user certificate in ~/.ssl/certs and the user private key in ~/.ssl/private. The path to an authority is also sent.
authority | path to use. |
Assign a non-default cipher to the context.
context | to set cipher for. |
ciphers | to set. |
Determine if the current security context is valid.
Get last error code associated with the security context.
Create 36 character traditional version 1 uuid.
string | to write uuid into, must be 37 bytes or more. |
Cipher key formed by hash algorithm. This can generate both a key and iv table based on the algorithms used and required. Normally it is used from a pass-phrase, though any block of data may be supplied.
Push a final cipher block. This is used to push the final buffer into the push method for any remaining data.
Process cipher data. This requires the size to be a multiple of the cipher block size. If an unaligned sized block of data is used, it will be ignored and the size returned will be 0.
data | to process. |
size | of data to process. |
This essentially encrypts a single string and pads with NULL bytes as needed.
string | to encrypt. |
This is used to process any data unaligned to the blocksize at the end of a cipher session. On an encryption, it will add padding or an entire padding block with the number of bytes to strip. On decryption it will remove padding at the end. The pkcs5 method of padding with removal count is used. This also sets the address buffer to NULL to prevent further puts until reset.
address | of data to add before final pad. |
size | of data to add before final pad. |
Process encrypted data in-place. This assumes no need to set the address buffer.
address | of data to process. |
size | of data to process. |
flag | if to pad data. |
Check if a specific cipher is supported.
name | of cipher to check. |
Finalize and recycle current digest to start a new digest.
binary | digest used rather than text if true. |
Reset and restart digest object.
Test to see if a specific digest type is supported.
name | of digest we want to check. |
Shortcut for short md5 digests if supported...
text | to create a digest for. |
Test to see if a specific digest type is supported.
name | of digest we want to check. |
Push entropic seed.
buffer | of random data to push. |
size | of buffer. |
Re-seed pseudo-random generation and entropy pools.
Get high-entropy random data. This is often used to initialize keys. This operation may block if there is insufficient entropy immediately available.
memory | buffer to fill. |
size | of buffer. |
Fill memory with pseudo-random values. This is used as the basis for all get and real operations and does not depend on seed entropy.
memory | buffer to fill. |
size | of buffer to fill. |
Get a pseudo-random integer, range 0 - 32767.
Get a pseudo-random integer in a preset range.
min | value of random integer. |
max | value of random integer. |
Get a pseudo-random floating point value.
Get a pseudo-random floating point value in a preset range.
min | value of random floating point number. |
max | value of random floating point number. |
Determine if we have sufficient entropy to return random values.
Create 36 character random uuid string.
string | to write uuid into, must be 37 bytes or more. |
Get an address list directly. This is used internally by some derived socket types when generic address lists would be invalid.
host | name in the form address or "address:port" |
service | id or port to use if not specified in host string. |
type | of service to get. |
protocol | of service to get. |
Release an address list directly. This is used internally by some derived socket types which do not use generic address lists.
list | of addresses. |
A generic socket address class. This class uses the addrinfo list to store socket multiple addresses in a protocol and family independent manner. Hence, this address class can be used for ipv4 and ipv6 sockets, for assigning connections to multiple hosts, etc. The address class will call the resolver when passed host names.
Construct a socket address. This is used to get an address to bind a socket interface to. The address can be specified as the ip address of the interface or as a "hostname". If a hostname is used, then family should be specified for clarity.
family | of socket address. Needed when host names are used. |
address | or hostname. |
type | of socket (stream, dgram, etc). |
protocol | number of socket. |
Construct a socket address for an existing socket. This can be the name of a host or to perform a lookup in a domain for a service. Family can be used to restrict the set of results returned, however since things like connecto() already filter by family and create will use family from the addrinfo, in most cases AF_UNSPEC can be used. This may be depreciated in favor of the constructor that matches a set() method.
family | of hosts to filter by or AF_UNSPEC. |
hostname | or ip address. The socket family is used for hostnames. |
service | port or name we are referencing or NULL. |
Construct a socket address list for a service.
host | address for service. |
service | name or port number. |
type | of service, stream, dgram, etc. |
Construct a socket address from host and service. This is primarily used to construct a list of potential service connections by pure port numbers or for host lookup only.
hostname | or address to use. |
service | port or 0. |
Construct a socket address from an IPv4 address and a port number.
Construct a socket address from an IPv6 address and a port number.
Construct a socket address from a sockaddr object.
Construct a socket address from an addrinfo structure.
Construct an empty address.
Copy constructor.
reference | to object to copy from. |
Assignment operator.
reference | to object to copy from. |
Destroy address. Deallocate addrinfo structure.
Compare two address lists.
Get the first socket address in our address list.
Get the first socket address by casted reference.
Get the first socket address of specified family from our list.
family | to seek. |
Get the family of the first member in a list of services.
Get the address size of the first address.
Get the port of the first address .
Set the port of all addresses in the list.
port | the port to set. |
Returns a copy of this address list with the specified port set.
Find a specific socket address in our address list.
Get the full socket address list from the object.
Get the full socket address list by casted reference.
Return the full socket address list by pointer reference.
Print the first socket address as a human-readable string to the provided buffer and returns the printed string length.
src | Address to print. |
dst | Destination buffer to print the socket address on. |
dst_sz | Size of the provided buffer. Strongly recommended to be at least INET6_ADDRSTRLEN (or INET_ADDRSTRLEN if compiled without IPv6). |
port | If true, print port number with address. If true, ipv6_brackets will also be forced to true. |
ipv6_brackets | If true, force printing IPv6 brackets. Ignored if address is an IPv4. |
Test if the address list is valid.
Test if we have no address list.
Test if the first socket address is ADDR_ANY: 0.0.0.0 or ::0
Clear the address list and set the first address to be the ADDR_ANY of the current family, or of the specified family (if set).
family | address family to set. |
Test if the first socket address is ADDR_LOOPBACK: 127.0.0.1 or ::1
Clear the address list and set the first address to be the ADDR_LOOPBACK of the current family, or of the specified family (if set).
family | address family to set. |
Clear current object.
Set the host addresses to form a new list.
hostname | or address to resolve. |
service | name or port number, or NULL if not used. |
type | of socket (stream or dgram) to filter list by. |
Append additional host addresses to our list.
hostname | or address to resolve. |
service | name or port number, or NULL if not used. |
type | of socket (stream or dgram). |
Set an entry for host binding.
family | of socket address. Needed when hostnames are used. |
address | or hostname. |
type | of socket (stream, dgram, etc). |
protocol | number of socket. |
Add an individual socket address to our address list.
address | to add. |
Insert unique members from another socket address list to ours.
address | list to insert into list. |
Remove members from another socket address list from ours.
address | list to remove from list. |
Remove an individual socket address from our address list.
address | to remove. |
Insert an individual socket address to our address list only if unique.
address | to insert into list. |
Copy an existing addrinfo into our object. This is also used to support the copy constructor.
address | list to copy from. |
Set an individual socket address for our address list.
address | to add. |
Set a socket address from host and service.
hostname | or address to use. |
service | port or 0. |
Returns the size of the socket address according to the family.
Returns the port of the socket address.
Set the port of the socket address.
address | to edit. |
port | to associate to the socket address. |
Test if the socket address is ADDR_ANY: 0.0.0.0 or ::0
Set the socket address to ADDR_ANY: 0.0.0.0 or ::0
Get a ADDR_ANY socket address of the given family.
Test if the socket address is ADDR_LOOPBACK: 127.0.0.1 or ::1
Set the socket address to ADDR_LOOPBACK: 127.0.0.1 or ::1 depending on the family of the pointed address.
Get a ADDR_LOOPBACK socket address of the given family.
Duplicate a socket address.
address | to duplicate. |
Convert address object into ipv4 address.
address | to convert. |
Convert address object into ipv6 address.
address | to convert. |
Print socket address as a human-readable string to the provided buffer and returns the printed string length.
src | Address to print. |
dst | Destination buffer to print the socket address on. |
dst_sz | Size of the provided buffer. Strongly recommended to be at least INET6_ADDRSTRLEN (or INET_ADDRSTRLEN if compiled without IPv6). |
port | If true, print port number with address. If true, ipv6_brackets will also be forced to true. |
ipv6_brackets | If true, force printing IPv6 brackets. Ignored if address is an IPv4. |
Create a socket object for use.
Create socket as duped handle of existing socket.
existing | socket to dup. |
Create socket from existing socket descriptor.
socket | descriptor to use. |
Create and connect a socket to an address from an address list. The type of socket created is based on the type we are connecting to.
address | list to connect with. |
Create an unbound socket of a specific type.
family | of our new socket. |
type | (stream, udp, etc) of our new socket. |
protocol | number of our new socket.' |
Create a bound socket. If one wishes to listen for connections on a protocol, then ListenSocket should be used instead.
address | to bind or "*" for all. |
port | number of service to bind. |
family | to bind as. |
type | of socket to bind (stream, udp, etc). |
protocol | of socket to bind. |
Shutdown, close, and destroy socket.
Cancel pending i/o by shutting down the socket.
Cancel pending i/o by shutting down the socket.
socket | to shutdown. |
Shutdown and close the socket.
Get error code.
See the number of bytes in the receive queue.
value | to test for. |
Test if socket is connected.
Test for pending input data. This function can wait up to a specified timeout for data to appear.
timeout | or 0 if none. |
Set nodelay option for tcp socket.
Test for pending input data. This function can wait up to a specified timeout for data to appear.
socket | to test. |
timeout | or 0 if none. |
Test for output data sent. This function can wait up to a specified timeout for data to appear sent.
timeout | or 0 if none. |
Get the number of bytes of data in the socket receive buffer.
Set socket for unicast mode broadcasts.
enable | broadcasting if true. |
Set socket for keepalive packets.
enable | keep-alive if true. |
Set socket blocking I/O mode.
enable | true for blocking I/O. |
Set multicast mode and multicast broadcast range.
ttl | to set for multicast socket or 0 to disable multicast. |
Set loopback to read multicast packets we broadcast.
enable | true to loopback, false to ignore. |
Get socket error code.
Set the time to live before packets expire.
time | to live to set. |
Set the size of the socket send buffer.
size | of send buffer to set. |
Set the size to wait before sending.
size | of send wait buffer to set. |
Set the size of the socket receive buffer.
size | of recv buffer to set. |
Get the type of a socket.
socket | descriptor. |
Set segment size and get MTU.
socket | to modify. |
size | of segment or zero to not set. |
Set congestion control id.
socket | to modify. |
ccid | value to set. |
Get the type of a socket.
Set segment size and get mtu of a socket.
size | of segment or 0 to leave unchanged. |
Set ccid of dccp socket.
ccid | to set. |
Set the type of service field of outgoing packets. Some useful values include IPTOS_LOWDELAY to minimize delay for interactive traffic, IPTOS_THROUGHPUT to optimize throughput, OPTOS_RELIABILITY to optimize for reliability, and IPTOS_MINCOST for low speed use.
type | of service value. |
Set packet priority, 0 to 6 unless privileged. Should be set before type-of-service.
scheduling | priority for packet scheduling. |
Shutdown the socket communication channel.
Connect our socket to a remote host from an address list. For TCP (and DCCP) sockets, the entire list may be tried. For UDP, connect is only a state and the first valid entry in the list is used.
list | of addresses to connect to. |
Disconnect a connected socket. Depending on the implementation, this might be done by connecting to AF_UNSPEC, connecting to a 0 address, or connecting to self.
Join socket to multicast group.
list | of groups to join. |
Drop socket from multicast group.
list | of groups to drop. |
Socket i/o timer setting.
timeout | to wait, inf for blocking, 0 pure non-blocking. |
Peek at data waiting in the socket receive buffer.
data | pointer to save data in. |
number | of bytes to peek. |
Read data from the socket receive buffer. This will be used in abi 4.
data | pointer to save data in. |
number | of bytes to read. |
address | of peer data was received from. |
Write data to the socket send buffer. This will be used in abi 4.
data | pointer to write data from. |
number | of bytes to write. |
address | of peer to send data to if not connected. |
Read a newline of text data from the socket and save in NULL terminated string. This uses an optimized I/O method that takes advantage of socket peeking. This presumes a connected socket on a streamble protocol. Because the trailing newline is dropped, the return size may be greater than the string length. If there was no data read because of eof of data, an error has occured, or timeout without input, then 0 will be returned.
data | to save input line. |
size | of input line buffer. |
Print formatted string to socket.
format | string. |
Read a string of input from the socket and strip trailing newline. This uses an optimized I/O method that takes advantage of socket peeking. This presumes a connected socket on a streamble protocol. Because the trailing newline is dropped, the return size may be greater than the string length. If there was no data read because of eof of data, an error has occured, or timeout without input, then 0 will be returned.
buffer | to save input line. |
Read a newline of text data from the socket and save in NULL terminated string. This uses an optimized I/O method that takes advantage of socket peeking. As such, it has to be rewritten to be used in a ssl layer socket.
socket | to read from. |
data | to save input line. |
size | of input line buffer. |
timeout | to wait for a complete input line. |
Print formatted string to socket.
socket | to write to. |
format | string. |
Write a null terminated string to the socket. This exists because we messed up consistency with the original puts() method. In the future there will be a single puts() that has a NULL default.
string | to write. |
Test if socket is valid.
Test if socket is invalid.
Assign socket from a socket descriptor. Release existing socket if one present.
socket | descriptor to assign to object. |
Get the socket descriptor by casting.
Get the socket descriptor by pointer reference.
Get the number of bytes pending in the receive buffer of a socket descriptor.
socket | descriptor. |
Set the send size of a socket descriptor.
socket | descriptor. |
size | of send buffer to set. |
Set the size to wait before sending.
socket | descriptor. |
size | of send wait buffer to set. |
Set the receive size of a socket descriptor.
socket | descriptor. |
size | of receive buffer to set. |
Connect socket descriptor to a remote host from an address list. For TCP (and DCCP) sockets, the entire list may be tried. For UDP, connect is only a state and the first valid entry in the list is used.
socket | descriptor. |
list | of addresses to connect to. |
Disconnect a connected socket descriptor.
socket | descriptor. |
Drop socket descriptor from multicast group.
socket | descriptor. |
list | of groups to drop. |
Join socket descriptor to multicast group.
socket | descriptor. |
list | of groups to join. |
Get socket error code of socket descriptor.
socket | descriptor. |
Set multicast mode and multicast broadcast range for socket descriptor.
socket | descriptor. |
ttl | to set for multicast socket or 0 to disable multicast. |
Set loopback to read multicast packets socket descriptor broadcasts.
socket | descriptor. |
enable | true to loopback, false to ignore. |
Set socket blocking I/O mode of socket descriptor.
socket | descriptor. |
enable | true for blocking I/O. |
Set socket for keepalive packets for socket descriptor.
socket | descriptor. |
enable | keep-alive if true. |
Set socket for unicast mode broadcasts on socket descriptor.
socket | descriptor. |
enable | broadcasting if true. |
Set tcp nodelay option on socket descriptor.
socket | descriptor. |
Set packet priority of socket descriptor.
socket | descriptor. |
scheduling | priority for packet scheduling. |
Set type of service of socket descriptor.
socket | descriptor. |
type | of service. |
Set the time to live for the socket descriptor.
socket | descriptor. |
time | to live to set. |
Get the address family of the socket descriptor.
Get the address family of a socket address object.
address | to examine. |
Get the address family of an internet socket address object.
address | to examine. |
Get data waiting in receive queue.
socket | to get from. |
buffer | to save. |
size | of data buffer to request. |
flags | for i/o operation (MSG_OOB, MSG_PEEK, etc). |
address | of source. |
Send data on socket.
socket | to send to. |
buffer | to send. |
size | of data buffer to send. |
flags | for i/o operation (MSG_OOB, MSG_PEEK, etc). |
address | of destination, NULL if connected. |
Send reply on socket. Used to reply to a recvfrom message.
socket | to send to. |
buffer | to send. |
size | of data buffer to send. |
flags | for i/o operation (MSG_OOB, MSG_PEEK, etc). |
address | to reply to. |
Bind the socket descriptor to a known interface and service port.
socket | descriptor to bind. |
address | to bind to or "*" for all. |
service | port to bind. |
protocol | to use or 0 if default. |
Bind the socket descriptor to a known interface listen on service port.
socket | descriptor to bind. |
address | of interface to bind to. |
backlog | for service. |
Bind the socket descriptor to a known interface.
socket | descriptor to bind. |
address | of interface to bind to. |
Accept a socket connection from a remote host.
socket | descriptor to accept from. |
address | of socket accepting. |
Create a socket object unbound.
family | of socket. |
type | of socket. |
protocol | of socket. |
Create a connected socket.
address | list to connect to. |
type | of socket to create. |
protocol | of socket. |
Create a bound socket for a service.
iface | to bind. |
service | port to bind. |
family | to select or AF_UNSPEC |
type | of socket to create. |
protocol | of socket to create. |
Create a connected socket for a service.
address | of service for connect. |
Release (close) a socket.
socket | to close. |
Lookup and return the host name associated with a socket address.
address | to lookup. |
buffer | to save hostname into. |
size | of buffer to save hostname into. |
Create an address info lookup hint based on the family and type properties of a socket descriptor.
socket | descriptor. |
hint | buffer. |
Lookup a host name and service address based on the addressing family and socket type of a socket descriptor. Store the result in a socket address structure.
socket | descriptor. |
address | that is resolved. |
hostname | to resolve. |
service | port. |
Get the size of a socket address.
address | of socket. |
Compare socket addresses. Test if the address and service matches or if there is no service, then just the host address values.
address1 | to compare. |
address2 | to compare. |
Copy a socket address.
target | address pointer to copy into. |
origin | address pointer to copy from. |
Store an address into an address object.
storage | for address. |
address | to store. |
Store an address into an internet address object.
storage | for address. |
address | to store. |
Compare socket host addresses. Test if the host address matches or if there is no service, then just the host address values.
address1 | to compare. |
address2 | to compare. |
Compare socket addresses. Test if the stored addresses received match. or if there is no service, then just the host address values.
address1 | to compare. |
address2 | to compare. |
Compare socket addresses. Test if the internet addresses received match. or if there is no service, then just the host address values.
address1 | to compare. |
address2 | to compare. |
See if both addresses are in the same subnet. This is only relevant to IPV4 and class domain routing.
address1 | to test. |
address2 | to test. |
Get the socket address of the interface needed to reach a destination address.
address | of interface found. |
target | address. |
size | of interface, 0 used for older code |
Get the hostname of a socket address.
address | to lookup. |
buffer | to save hostname in. |
size | of hostname buffer. |
Get the service port of a socket.
address | of socket to examine. |
Get the service port of an inet socket.
address | of internet socket to examine. |
Convert a socket address and service into a hash map index.
address | to convert. |
size | of map index. |
Convert a socket host address into a hash map index.
address | to convert. |
size | of map index. |
Initialize socket subsystem.
Set default socket family preference for query options when the socket type is otherwise not specified.
family | to select. |
Set the default socket behavior for v6-v4 mapping. This also effects v6 address lookup as to whether v4 remapped addresses can be used if no v6 address is found.
enable | true to set mapping. This is default. |
Return error code of last socket operation,
Simple function to validate that a given IP address string is a "zero" address. Such address strings are used for example in SIP to indicate "hold" by re-inviting peers to a null address. Supports IPV4 and IPV6 addresses.
string | address to check. |
Simple function to validate that a given IP address string is a numeric address. This can be used to verify an address is not a "host" name. Supports IPV4 and IPV6 address strings.
string | address to check. |
Get local address to which the socket is bound. This is defined here because we may re-define the backend linkage for the socks proxy in the future.
socket | descriptor to examine. |
address | storage for local address. |
Get remote address to which the socket is connected. This is defined here because we may re-define the backend linkage for the socks proxy in the future.
socket | descriptor to examine. |
address | storage for remote address. |
Helper function for linked_pointer<struct sockaddr>.
Helper function for linked_pointer<struct sockaddr>.
Helper function for linked_pointer<struct sockaddr>.
Create an unitialized instance of guard. Usually used with a guard = operator.
Set guard to mutex lock a new object. If a lock is currently held, it is released.
object | to guard. |
Prematurely release a guard.
Construct a guard for a specific object.
object | to guard. |
Release mutex when guard falls out of scope.
Create a thread object that will have a preset stack size. If 0 is used, then the stack size is os defined/default.
stack | size to use or 0 for default. |
Map thread for get method. This should be called from start of the run() method of a derived class.
Check if running.
Set thread priority without disrupting scheduling if possible. Based on scheduling policy. It is recommended that the process is set for realtime scheduling, and this method is actually for internal use.
Yield execution context of the current thread. This is a static and may be used anywhere.
Sleep current thread for a specified time period.
timeout | to sleep for in milliseconds. |
Get mapped thread object. This returns the mapped base class of the thread object of the current executing context. You will need to cast to the correct derived class to access derived thread-specific storage. If the current thread context is not mapped NULL is returned.
Abstract interface for thread context run method.
Destroy thread object, thread-specific data, and execution context.
Exit the thread context. This function should NO LONGER be called directly to exit a running thread. Instead this method will only be used to modify the behavior of the thread context at thread exit, including detached threads which by default delete themselves. This documented usage was changed to support Mozilla NSPR exit behavior in case we support NSPR as an alternate thread runtime in the future.
Used to initialize threading library. May be needed for some platforms.
Get cache line size.
Used to specify scheduling policy for threads above priority "0". Normally we apply static realtime policy SCHED_FIFO (default) or SCHED_RR. However, we could apply SCHED_OTHER, etc.
Set concurrency level of process. This is essentially a portable wrapper for pthread_setconcurrency.
Determine if two thread identifiers refer to the same thread.
thread1 | to test. |
thread2 | to test. |
Get current thread id.
Check if timer has been updated since last check. This also sets updated false.
Check if timer active.
Construct an untriggered timer set to the time of creation.
Construct a triggered timer that expires at specified offset.
offset | to expire in milliseconds. |
Construct a triggered timer that expires at specified offset.
offset | to expire in seconds. |
Construct a timer from a copy of another timer.
copy | of timer to construct from. |
Set the timer to expire.
expire | time in milliseconds. |
Set the timer to expire.
expire | time in seconds. |
Set (update) the timer with current time.
Clear pending timer, has no value.
Get remaining time until the timer expires.
Get remaining time until timer expires by reference.
Check if timer has expired.
Check if timer expired for is() expression.
Set timer expiration.
expire | timer in specified seconds. |
Set timer expiration.
expire | timer in milliseconds. |
Adjust timer expiration.
expire | time to add in seconds. |
Adjust timer expiration.
expire | time to add in milliseconds. |
Adjust timer expiration.
expire | time to subtract in seconds. |
Adjust timer expiration.
expire | time to subtract in milliseconds. |
Compute difference between two timers.
timer | to use for difference. |
Compare timers if same timeout.
timer | to compare with. |
Compare timers if not same timeout.
timer | to compare with. |
Compare timers if earlier timeout than another timer.
timer | to compare with. |
Compare timers if earlier than or equal to another timer.
timer | to compare with. |
Compare timers if later timeout than another timer.
timer | to compare with. |
Compare timers if later than or equal to another timer.
timer | to compare with. |
Sleep current thread until the specified timer expires.
timer | to reference for sleep. |
Get timer ticks since uuid epoch.
Heap base-class container for typeref objects. This uses atomic reference counters for thread safety with maximal performance. This is used as a protected base class used for strongly typed heap containers through templates.
Construction of aligned container. This is used to inform the object of the underlying real address it exists on the heap since malloc is not assured to be atomically aligned by default.
address | of actual allocation. |
size | of object allocated. |
ar | pool to use |
Release memory and delete object when no longer referenced. This gets called with the atomic reference counter < 1, such as when the last smart pointer de-references.
Is this object not empty?
Number of retains (smart pointers) referencing us.
Override delete to de-allocate actual heap. This is used because the object is atomically aligned, but the heap may not be.
address | of our object. |
Retain a copy of this object. Usually a smart pointer referencing.
Release a copy of this object. Only when the reference count reaches 0 is it destroyed.
Create a smart pointer referencing an existing heap object.
object | to reference. |
Create a smart pointer based on another pointer. Both pointers then reference the same object.
pointer | instance to share reference with. |
Create a smart pointer referencing nothing.
Set our smart pointer to a specific heap container. If we were pointing to something already we release that.
object | to reference. |
Assign from a guarded typeref.
Adjust memory pointer to atomic boundry.
address | that was allocated. |
Destroy pointer when falling out of scope. This de-references the heap container.
Set our smart pointer based on another pointer instance. If we are already referencing, we release the current container.
pointer | instance to share reference with. |
Manually release the current container.
Get size of referenced heap object.
Get number of references to container.
Check if pointer currently has a heap container.
Check if we are currently not pointing to anything.
Special weak-public means to copy a container reference. This uses the base class container which is not public, so only derived type specific smart pointers can actually use this method. It is made public because making it protected actually makes it inaccessible to template derived classes.
target | smart pointer object to set. |
object | to have it reference. |
Size of "unicode_t" character codes, may not be ucs4_t size.
A convenient NULL pointer value.
Compute character size of utf8 string codepoint.
codepoint | in string. |
Count ut8 encoded ucs4 codepoints in string.
string | of utf8 data. |
Get codepoint offset in a string.
string | of utf8 data. |
position | of codepoint in string, negative offsets are from tail. |
Convert a utf8 encoded codepoint to a ucs4 character value.
encoded | utf8 codepoint. |
How many chars requires to encode a given wchar string.
string | of ucs4 data. |
How many chars requires to encode a given unicode character.
character | to encode. |
Convert a unicode string into utf8.
string | of unicode data to pack |
buffer | of character protocol to put data into. |
Convert a utf8 string into a unicode data buffer.
unicode | data buffer. |
buffer | of character protocol to pack from. |
size | of unicode data buffer in codepoints. |
Dup a utf8 string into a ucs4_t string.
Dup a utf8 string into a ucs2_t representation.
Find first occurance of character in string.
string | to search in. |
character | code to search for. |
start | offset in string in codepoints. |
Find last occurrence of character in string.
string | to search in. |
character | code to search for. |
end | offset to start from in codepoints. |
Count occurrences of a unicode character in string.
string | to search in. |
character | code to search for. |
Get a unicode character from a character protocol.
buffer | of character protocol to read from. |
Push a unicode character to a character protocol.
character | to push to file. |
buffer | of character protocol to push character to. |
Create a utf8 pointer set to NULL.
Create a utf8 pointer for an existing char pointer.
string | pointer to use. |
Create a utf8 pointer as a copy of existing utf8 pointer.
copy | of object to use. |
Iterative increment of a utf8 pointer to prior codepoint.
Iterative decrement of a utf8 pointer to next codepoint.
Adjust utf8 pointer by specified codepoints forward.
offset | to increment by. |
Adjust utf8 pointer by specified codepoints backward.
offset | to decrement by. |
Get new utf8 string after adding a codepoint offset.
offset | to add. |
Get new utf8 string after subtracting a codepoint offset.
offset | to subtract. |
Check if text is valid pointer.
Check if text is an invalid pointer.
Extract a unicode character from a specified codepoint.
codepoint | offset to extract character from. |
Assign a utf8 string to point to.
string | to point to. |
Iterative increment of a utf8 pointer to next codepoint.
Iterative decrement of a utf8 pointer to prior codepoint.
check if pointer equals another string.
string | to check. |
check if pointer does not equal another string.
string | to check. |
Get unicode character pointed to by pointer.
Get c string we point to.
Convert utf8 pointer to a generic string pointer.
Get length of null terminated utf8 string in codepoints.
Constructor. Does not deal with any state.
keeps compilers happy.
Pure virtual application operator. Apply the validation algorithm specific to derived classes.
Get network address associated with this cidr.
Get network mask associated with this cidr.
Compute the broadcast address associated with this cidr.
Set the cidr from a full or partial hostname, or from an address/mask, or a host/bits specification.
cidr | string to use. |
Construct a new cidr from a string.
cidr | string to use. |
Construct an empty cidr.
Construct a copy of a cidr.
cidr | to copy from. |
See if a socket address is a member of this cidr's network.
saddr | pointer to test. |
See if a low level address object is a member of this cidr's net.
inaddr | object to test. |
Get network address associated with this cidr.
Get network mask associated with this cidr.
Compute the broadcast address associated with this cidr.
Set the cidr from a full or partial hostname, or from a host/bits specification.
cidr | string to use. |
Construct a new cidr from a string.
cidr | string to use. |
Construct an empty cidr.
Construct a copy of a cidr.
cidr | to copy from. |
See if a socket address is a member of this cidr's network.
saddr | pointer to test. |
See if a low level address object is a member of this cidr's net.
inaddr | object to test. |
Sets the IP address from a string representation of the numeric address, ie "127.0.0.1"
host | The string representation of the IP address |
Used to specify a host name or numeric internet address.
host | The string representation of the IP address or a hostname, , if NULL, it will default to INADDR_ANY |
Create an Internet Address object with an empty (0.0.0.0) address.
validator | optional validator function object, intended for derived classes. |
Convert the system internet address data type (struct in_addr) into a Common C++ IPV4Address object.
addr | struct of system used binary internet address. |
validator | optional validator function object, intended for derived classes. |
Convert a null terminated ASCII host address string (example: "127.0.0.1") or host address name (example: "www.voxilla.org") directly into a Common C++ IPV4Address object.
address | null terminated C string. |
validator | optional validator function object, intended for derived classes. |
Copy constructor
Destructor
Provide a string representation of the value (Internet Address) held in the IPV4Address object.
May be used to verify if a given IPV4Address returned by another function contains a "valid" address, or "0.0.0.0" which is often used to mark "invalid" IPV4Address values.
Provide a low level system usable struct in_addr object from the contents of IPV4Address. This is needed for services such as bind() and connect().
Provide a low level system usable struct in_addr object from the contents of IPV4Address. This is needed for services such as bind() and connect().
i | for IPV4Addresses with multiple addresses, returns the address at this index. User should call getAddressCount() to determine the number of address the object contains. |
Returns the number of internet addresses that an IPV4Address object contains. This usually only happens with IPV4Host objects where multiple IP addresses are returned for a DNS lookup
Allows assignment from the return of functions like inet_addr() or htonl()
Compare two internet addresses to see if they are equal (if they specify the physical address of the same internet host).
If there is more than one IP address in either IPV4Address object, this will return true if all of the IP addresses in the smaller are in the larger in any order.
Compare two internet addresses to see if they are not equal (if they each refer to unique and different physical ip addresses).
This is implimented in terms of operator==
Constructor. Does not deal with any state.
Keeps compilers happy.
Pure virtual application operator. Apply the validation algorithm specific to derived classes.
Sets the IP address from a string representation of the numeric address, ie "127.0.0.1"
host | The string representation of the IP address |
Used to specify a host name or numeric internet address.
host | The string representation of the IP address or a hostname, , if NULL, it will default to INADDR_ANY |
Create an Internet Address object with an empty (0.0.0.0) address.
validator | optional validator function object, intended for derived classes. |
Convert the system internet address data type (struct in_addr) into a Common C++ IPV6Address object.
addr | struct of system used binary internet address. |
validator | optional validator function object, intended for derived classes. |
Convert a null terminated ASCII host address string (example: "127.0.0.1") or host address name (example: "www.voxilla.org") directly into a Common C++ IPV6Address object.
address | null terminated C string. |
validator | optional validator function object, intended for derived classes. |
Copy constructor
Destructor
Provide a string representation of the value (Internet Address) held in the IPV6Address object.
May be used to verify if a given IPV6Address returned by another function contains a "valid" address, or "0.0.0.0" which is often used to mark "invalid" IPV6Address values.
Provide a low level system usable struct in_addr object from the contents of IPV6Address. This is needed for services such as bind() and connect().
Provide a low level system usable struct in_addr object from the contents of IPV6Address. This is needed for services such as bind() and connect().
i | for IPV6Addresses with multiple addresses, returns the address at this index. User should call getAddressCount() to determine the number of address the object contains. |
Returns the number of internet addresses that an IPV6Address object contains. This usually only happens with IPV6Host objects where multiple IP addresses are returned for a DNS lookup
Compare two internet addresses to see if they are equal (if they specify the physical address of the same internet host).
If there is more than one IP address in either IPV6Address object, this will return true if all of the IP addresses in the smaller are in the larger in any order.
Compare two internet addresses to see if they are not equal (if they each refer to unique and different physical ip addresses).
This is implimented in terms of operator==
output string
HEXdump constructor.
buffer | buffer to be "hexdumped" |
buff_len | buffer length |
max_len | max number of bytes to be "hexdumped". Usefull to truncate output. mas_len=0 does prints all. |
HEXdump destructor.
const char* cast provided for conveneince.
string cast provided for conveneince.
operator <<
hd | hexdump. |
Virtual method to filter results. Virtual override methods should call baseclass method to assure . and .. names are stripped out.
file | path to examine |
ino | info of type, date, etc. |
Construct a directory tree walk starting at the specified prefix. A maximum subdirectory depth is also specified.
prefix | to start walk. |
maxdepth | subdirectory depth to examine. |
Construct an un-opened directory tree of a known maximum depth
maxdepth | subdirectory subdirectory depth. |
Open a directory tree path.
prefix | directory path to open. |
Close the directory path.
Extract the next full pathname from the directory walk. When returning directories, a '/' is appended. The returned string is a buffer of MAX_PATH size.
This is used to step through the filter virtual for an entire subtree, and is used for cases where a derived DirTree class performs it's primary operations through filter rather than externally by calling getPath().
prefix | directory path to examine. |
Construct and load a DSO object file.
filename | pathname of object file to load. |
Retrieve error indicator associated with DSO failure. This is often used in catch handlers.
Detach a DSO object from running memory.
Lookup a symbol in the loaded file.
Find a specific DSO object by filename.
name | of DSO object file (partial). |
See if DSO object is valid.
Install debug handler...
Contruct a multi-part document, and describe it's type.
document | (content) type. |
Stream the headers of the multi-part document. The headers of individual entities are streamed as part of the body.
output | to stream document header into. |
Stream the "body" of the multi-part document. This involves streaming the headers and body of each document part.
output | to stream document body into. |
Get a string array of the headers to use. This is used to assist URLStream::post.
Stream the header(s) for the current document part.
output | to stream header into. |
Stream the content of this document part.
output | to stream document body into. |
Construct and attach a document part to a multipart document.
top | multipart document to attach to. |
ct | Content-Type to use. |
The constructor simply initializes the count.
The destructor is called when the reference count returns to zero. This is done through a virtual destructor.
The actual object being managed can be returned by this method as a void and then recast to the actual type. This removes the need to dynamic cast from RefObject and the dependence on rtti this implies.
Detach current object, for example, when changing pointer.
Patch point for mutex in derived class. This may often be a single static mutex shared by a managed type.
Patch point for a mutex in derived class. This may often be a single static mutex shared by a managed type.
Create an unattached pointer.
Create a pointer attached to a reference counted object.
Object being referenced.
A copy constructor.
Pointer being copied.
Get first linked object in list. This may be dynamically recast, and may refer to a master static bookmark pointer in a derived class. Otherwise it simply returns the current object. In a "free" list, this may not only return the first object, but also set the first to next.
Gets the last object in the list. This normally follows the links to the end. This is a virtual because derived class may include a static member bookmark for the current end.
Get next object, for convenience. Derived class may use this with a dynamic cast.
Insert object into chain. This is a virtual because derived class may choose instead to perform an insert at head or tail, may manage bookmarks, and may add mutex lock.
object | being inserted. |
Requested in overloaded insert() method to indicate how to insert data into list
< insert at first position in list pointed by current object
< insert at last position in list pointed by current object
< insert in list before current object
< insert in list after current object
Get first linked object in list. This may be dynamically recast, and may refer to a master static bookmark pointer in a derived class. Otherwise it follows list to front.
Gets the last object in the list. This normally follows the links to the end. This is a virtual because derived class may include a static member bookmark for the current end.
Virtual to get the insert point to use when adding new members. This may be current, or always head or always tail. As a virtual, this allows derived class to establish "policy".
Get next object, for convenience. Derived class may use this with a dynamic cast.
Get prev object in the list.
Insert object into chain at given pos, as indicated by InsertMode; If no pos is given, it defaults to modeAtLast, inserting element at list's end.
object | being inserted. |
position | where object is inserted. |
Remove object from chain.
Creates an empty map index (pointing to nothing).
Creates a map index pointing to a specific map object
the | indexed object |
Creates a copy of a given map index
the | source index object |
Dereference operator: the pointed object it is returned as void * for easy re-cast.
Assignment operator to avoid implicit cast.
Prefix increment operator, to be used in loops and such.
Postfix increment operator, to be used in loops and such.
Comparison operator, between two MapIndex's.
Comparison operator, between the MapIndex and a MapObject, useful to avoid casts for sake of clearness.
Remove the object from it's current table.
Save id, mark as not using any table.
id | string for this object. |
This manages a registration to the typemanager - attempting to remove problems with the optimizers
This adds a new construction function to the type manager
And this one removes a type from the managers lists
This function creates a new object of the required type and returns a pointer to it. NULL is returned if we couldn't find the type
This constructor is used in serialization processes. It is called in CreateNewInstance in order to create an instance of the class to have Read() called on it.
Default destructor
This returns the ID of the persistent object (Its type)
This method is used to write to the Persistence::Engine It is not equivalent to the << operator as it writes only the data and not the object type etc.
This method is used to read from a Persistence::Engine It is not equivalent to the >> operator as it does no typesafety or anything.
These are the modes the Persistence::Engine can work in
Constructs a Persistence::Engine with the specified stream in the given mode. The stream must be initialized properly prior to this call or problems will ensue.
writes a PersistObject from a reference.
writes a PersistObject from a pointer.
reads a PersistObject into a reference overwriting the object.
reads a PersistObject into a pointer allocating memory for the object if necessary.
reads the actual object data into a pre-instantiated object pointer by calling the read function of the derived class.
reads in a class name, and caches it into the ClassMap.
The underlying stream
The mode of the engine. read or write
Typedefs for the Persistence::PersistObject support
Detach current process into a daemon, posix only. Perhaps a similar method can be used for creating win32 "services"?
Attach the current process to another device or i/o session. It is deamonified and dissasociated with the prior parent process and controlling terminal.
devname | path to attach to. |
Set a posix compliant signal handler.
signo | signal no. |
handler | trap handler. |
Set system call interuptable signal handler.
#return previous handler.
signo | signal no. |
handler | trap handler. |
Lock a process in memory. Ideally you should be deep enough where additional memallocs for functions will not kill you, or use false for future.
future | pages as well... |
Unlock process pages.
Spawn a process and wait for it's exit code. In win32 this is done with the spawn system call. In posix, this is done with a fork, an execvp, and a waitpid.
exec | name of executable. |
argv | list of command arguments. |
wait | for process to exit before return. |
Get the exit status of another process, waiting for it to exit.
pid | process id. |
Cancel a running child process.
pid | process id. |
sig | cancel signal to apply. |
Get system environment.
name | of symbol. |
Set system environment in a standard manner.
name | of environment symbol to set. |
value | of environment symbol. |
overwrite | true if replace existing symbol. |
Get etc prefix path.
Get home directory.
Get user name.
Set user id by name.
Set the effective group id by name.
Return the effective operating system page size.
Used to set process priority and optionally enable realtime.
Used to set process scheduling policy.
Portable shortcut for setting realtime...
Return true if scheduler settable.
Return true if realtime scheduling.
Create a lock under a known name.
name | of system-wide lock to create. |
Create a new lock object that can be used to make locks.
Destroy the current lock and release it.
Lock a system-wide name for this process. If the lock is successful, return true. If an existing lock was already acquired, release it first.
name | system-wide lock to use. |
Release an acquired lock.
Flag if the current process has aqcuired a lock.
Used to properly initialize serial object.
Opens the serial device.
fname | Pathname of device to open |
Closes the serial device.
Reads from serial device.
Data | Point to character buffer to receive data. Buffers MUST be at least Length + 1 bytes in size. |
Length | Number of bytes to read. |
Writes to serial device.
Data | Point to character buffer containing data to write. Buffers MUST |
Length | Number of bytes to write. |
This service is used to throw all serial errors which usually occur during the serial constructor.
error | defined serial error id. |
errstr | string or message to optionally pass. |
This service is used to thow application defined serial errors where the application specific error code is a string.
err | string or message to pass. |
This method is used to turn the error handler on or off for "throwing" execptions by manipulating the thrown flag.
enable | true to enable handler. |
Set packet read mode and "size" of packet read buffer. This sets VMIN to x. VTIM is normally set to "0" so that "isPending()" can wait for an entire packet rather than just the first byte.
size | of packet read request. |
btimer | optional inter-byte data packet timeout. |
Set "line buffering" read mode and specifies the newline character to be used in seperating line records. isPending can then be used to wait for an entire line of input.
newline | newline character. |
nl1 | EOL2 control character. |
Restore serial device to the original settings at time of open.
Used to flush the input waiting queue.
Used to flush any pending output data.
Used to wait until all output has been sent.
Used as the default destructor for ending serial I/O services. It will restore the port to it's original state.
Used to initialize a newly opened serial file handle. You should set serial properties and DTR manually before first use.
This allows later ttystream class to open and close a serial device.
A serial object may be constructed from a named file on the file system. This named device must be "isatty()".
name | of file. |
The serial base class may be "thrown" as a result on an error, and the "catcher" may then choose to destory the object. By assuring the socket base class is a virtual destructor, we can assure the full object is properly terminated.
Serial ports may also be duplecated by the assignment operator.
Set serial port speed for both input and output.
speed | to select. 0 signifies modem "hang up". |
Set character size.
bits | character size to use (usually 7 or 8). |
Set parity mode.
parity | mode. |
Set number of stop bits.
bits | stop bits. |
Set flow control.
flow | control mode. |
Set the DTR mode off momentarily.
millisec | number of milliseconds. |
Send the "break" signal.
Often used by a "catch" to fetch the last error of a thrown serial.
Often used by a "catch" to fetch the user set error string of a thrown serial.
Get the "buffer" size for buffered operations. This can be used when setting packet or line read modes to determine how many bytes to wait for in a given read call.
Get the status of pending operations. This can be used to examine if input or output is waiting, or if an error has occured on the serial device.
pend | ready check to perform. |
timeout | in milliseconds. |
Acquire the mutex
_mutex | reference to mutex to aquire. |
Release the mutex automatically
Wait for read access
_tl | reference to lock to aquire. |
Post the semaphore automatically
Wait for write access
_tl | reference to threadlock to aquire. |
Post the semaphore automatically
Wait for the semaphore
Post the semaphore automatically
Create a timer, mark it as inactive, and set the initial "start" time to the creation time of the timer object. This allows "incTimer" to initially refer to time delays relative to the original start time of the object.
Set a new start time for the object based on when this call is made and optionally activate the timer for a specified number of milliseconds. This can be used to set the starting time of a realtime session.
timeout | delay in milliseconds from "now" |
Set a timeout based on the current time reference value either from object creation or the last setTimer(). This reference can be used to time synchronize realtime data over specified intervals and force expiration when a new frame should be released in a synchronized manner.
timeout | delay in milliseconds from reference. |
Adjust a timeout based on the current time reference value either from object creation or the last setTimer(). This reference can be used to time synchronize realtime data over specified intervals and force expiration when a new frame should be released in a synchronized manner.
timeout | delay in milliseconds from reference. |
Sleep until the current timer expires. This is useful in time syncing realtime periodic tasks.
This is used to "disable" the service thread from expiring the timer object. It does not effect the reference time from either creation or a setTimer().
This is used by service threads to determine how much time remains before the timer expires based on a timeout specified in setTimer() or incTimer(). It can also be called after setting a timeout with incTimer() to see if the current timeout has already expired and hence that the application is already delayed and should skip frame(s).
return time remaining in milliseconds, or TIMEOUT_INF if inactive.
This is used to determine how much time has elapsed since a timer port setTimer benchmark time was initially set. This allows one to use setTimer() to set the timer to the current time and then measure elapsed time from that point forward.
return time elapsed in milliseconds, or TIMEOUT_INF if inactive.
a delimiter string containing all usual whitespace delimiters. These are space, tab, newline, carriage return, formfeed and vertical tab. (see isspace() manpage).
Exception thrown, if someone tried to read beyond the end of the tokens. Will not happen if you use it the 'clean' way with comparison against end(), but if you skip some tokens, because you 'know' they are there. Simplifies error handling a lot, since you can just read your tokens the way you expect it, and if there is some error in the input this Exception will be thrown.
The input forward iterator for tokens.
copy constructor.
assignment operator.
shifts this iterator to the next token in the string.
returns the immutable string this iterator points to or '0' if no token is available (i.e. i == end()). Do not store pointers to this token, since it is invalidated for each iteration. If you need the token, copy it (e.g. with strdup());
returns the next delimiter after the current token or '\0', if there are no following delimiters. It returns the very next delimiter (even if skipAllDelim=true).
compares to other iterator. Usually used to compare against the end() iterator.
compares to other iterator. Usually used to compare against the end() iterator.
creates a new StringTokenizer for a string and a given set of delimiters.
str | String to be split up. This string will not be modified by this StringTokenizer, but you may as well not modfiy this string while tokenizing is in process, which may lead to undefined behaviour. |
delim | String containing the characters which should be regarded as delimiters. |
skipAllDelim | OPTIONAL. true, if subsequent delimiters should be skipped at once or false, if empty tokens should be returned for two delimiters with no other text inbetween. The first behaviour may be desirable for whitespace skipping, the second for input with delimited entry e.g. /etc/passwd like files or CSV input. NOTE, that 'true' here resembles the ANSI-C strtok(char *s,char *d) behaviour. DEFAULT = false |
trim | OPTIONAL. true, if the tokens returned should be trimmed, so that they don't have any whitespaces at the beginning or end. Whitespaces are any of the characters defined in StringTokenizer::SPACE. If delim itself is StringTokenizer::SPACE, this will result in a behaviour with skipAllDelim = true. DEFAULT = false |
create a new StringTokenizer which splits the input string at whitespaces. The tokens are stripped from whitespaces. This means, if you change the set of delimiters in either the 'begin(const char *delim)' method or in 'setDelimiters()', you then get whitespace trimmed tokens, delimited by the new set. Behaves like StringTokenizer(s, StringTokenizer::SPACE,false,true);
returns the begin iterator
changes the set of delimiters used in subsequent iterations.
returns a begin iterator with an alternate set of delimiters.
the iterator marking the end.
Create xml parser.
size | of XML data buffer. |
Destroy xml parser.
Virtual to receive embedded comments in XML document being parsed.
text | received. |
size | of text received. |
Virtual to receive character text extracted from the document.
text | received. |
size | of text received. |
Notify start of document event.
Notify end of document event.
Notify start of an element in the document.
name | of element found. |
attr | list of attributes extracted. |
Notify end of an element in the document.
name | of element ending. |
Parse a chunk of data and return parser completion flag. This is used to externally drive data into the XML parser. The return status can be used to determine when a document has been fully parsed. This can be called multiple times to push stream data into the parser.
address | of data to parse. |
size | of data to parse. |
Parse a stream buffer and return parser document completion flag. This is used to scan a stream buffer for a complete XML document. The stream is scanned until the document is complete or EOF. Multiple XML document instances can be scanned from a continues XML streaming source.
stream | buffer to parse. |
Parse a file buffer and return parser document completion flag. This is used to scan a file buffer for a complete XML document. The file is scanned until the document is complete or EOF. Multiple XML document instances can be scanned from a continues XML streaming source.
file | buffer to parse. |
End of document check.
Get network address associated with this cidr.
Get network mask associated with this cidr.
Compute the broadcast address associated with this cidr.
Set the cidr from a full or partial hostname, or from an address/mask, or a host/bits specification.
cidr | string to use. |
Construct a new cidr from a string.
cidr | string to use. |
Construct an empty cidr.
Construct a copy of a cidr.
cidr | to copy from. |
See if a socket address is a member of this cidr's network.
saddr | pointer to test. |
See if a low level address object is a member of this cidr's net.
inaddr | object to test. |
Get network address associated with this cidr.
Get network mask associated with this cidr.
Compute the broadcast address associated with this cidr.
Set the cidr from a full or partial hostname, or from a host/bits specification.
cidr | string to use. |
Construct a new cidr from a string.
cidr | string to use. |
Construct an empty cidr.
Construct a copy of a cidr.
cidr | to copy from. |
See if a socket address is a member of this cidr's network.
saddr | pointer to test. |
See if a low level address object is a member of this cidr's net.
inaddr | object to test. |
Sets the IP address from a string representation of the numeric address, ie "127.0.0.1"
host | The string representation of the IP address |
Used to specify a host name or numeric internet address.
host | The string representation of the IP address or a hostname, , if NULL, it will default to INADDR_ANY |
Create an Internet Address object with an empty (0.0.0.0) address.
validator | optional validator function object, intended for derived classes. |
Convert the system internet address data type (struct in_addr) into a Common C++ IPV4Address object.
addr | struct of system used binary internet address. |
validator | optional validator function object, intended for derived classes. |
Convert a null terminated ASCII host address string (example: "127.0.0.1") or host address name (example: "www.voxilla.org") directly into a Common C++ IPV4Address object.
address | null terminated C string. |
validator | optional validator function object, intended for derived classes. |
Copy constructor
Destructor
Provide a string representation of the value (Internet Address) held in the IPV4Address object.
May be used to verify if a given IPV4Address returned by another function contains a "valid" address, or "0.0.0.0" which is often used to mark "invalid" IPV4Address values.
Provide a low level system usable struct in_addr object from the contents of IPV4Address. This is needed for services such as bind() and connect().
Provide a low level system usable struct in_addr object from the contents of IPV4Address. This is needed for services such as bind() and connect().
i | for IPV4Addresses with multiple addresses, returns the address at this index. User should call getAddressCount() to determine the number of address the object contains. |
Returns the number of internet addresses that an IPV4Address object contains. This usually only happens with IPV4Host objects where multiple IP addresses are returned for a DNS lookup
Allows assignment from the return of functions like inet_addr() or htonl()
Compare two internet addresses to see if they are equal (if they specify the physical address of the same internet host).
If there is more than one IP address in either IPV4Address object, this will return true if all of the IP addresses in the smaller are in the larger in any order.
Compare two internet addresses to see if they are not equal (if they each refer to unique and different physical ip addresses).
This is implimented in terms of operator==
Constructor. Does not deal with any state.
Keeps compilers happy.
Pure virtual application operator. Apply the validation algorithm specific to derived classes.
Sets the IP address from a string representation of the numeric address, ie "127.0.0.1"
host | The string representation of the IP address |
Used to specify a host name or numeric internet address.
host | The string representation of the IP address or a hostname, , if NULL, it will default to INADDR_ANY |
Create an Internet Address object with an empty (0.0.0.0) address.
validator | optional validator function object, intended for derived classes. |
Convert the system internet address data type (struct in_addr) into a Common C++ IPV6Address object.
addr | struct of system used binary internet address. |
validator | optional validator function object, intended for derived classes. |
Convert a null terminated ASCII host address string (example: "127.0.0.1") or host address name (example: "www.voxilla.org") directly into a Common C++ IPV6Address object.
address | null terminated C string. |
validator | optional validator function object, intended for derived classes. |
Copy constructor
Destructor
Provide a string representation of the value (Internet Address) held in the IPV6Address object.
May be used to verify if a given IPV6Address returned by another function contains a "valid" address, or "0.0.0.0" which is often used to mark "invalid" IPV6Address values.
Provide a low level system usable struct in_addr object from the contents of IPV6Address. This is needed for services such as bind() and connect().
Provide a low level system usable struct in_addr object from the contents of IPV6Address. This is needed for services such as bind() and connect().
i | for IPV6Addresses with multiple addresses, returns the address at this index. User should call getAddressCount() to determine the number of address the object contains. |
Returns the number of internet addresses that an IPV6Address object contains. This usually only happens with IPV6Host objects where multiple IP addresses are returned for a DNS lookup
Compare two internet addresses to see if they are equal (if they specify the physical address of the same internet host).
If there is more than one IP address in either IPV6Address object, this will return true if all of the IP addresses in the smaller are in the larger in any order.
Compare two internet addresses to see if they are not equal (if they each refer to unique and different physical ip addresses).
This is implimented in terms of operator==
output string
HEXdump constructor.
buffer | buffer to be "hexdumped" |
buff_len | buffer length |
max_len | max number of bytes to be "hexdumped". Usefull to truncate output. mas_len=0 does prints all. |
HEXdump destructor.
const char* cast provided for conveneince.
string cast provided for conveneince.
operator <<
hd | hexdump. |
Virtual method to filter results. Virtual override methods should call baseclass method to assure . and .. names are stripped out.
file | path to examine |
ino | info of type, date, etc. |
Construct a directory tree walk starting at the specified prefix. A maximum subdirectory depth is also specified.
prefix | to start walk. |
maxdepth | subdirectory depth to examine. |
Construct an un-opened directory tree of a known maximum depth
maxdepth | subdirectory subdirectory depth. |
Open a directory tree path.
prefix | directory path to open. |
Close the directory path.
Extract the next full pathname from the directory walk. When returning directories, a '/' is appended. The returned string is a buffer of MAX_PATH size.
This is used to step through the filter virtual for an entire subtree, and is used for cases where a derived DirTree class performs it's primary operations through filter rather than externally by calling getPath().
prefix | directory path to examine. |
Construct and load a DSO object file.
filename | pathname of object file to load. |
Retrieve error indicator associated with DSO failure. This is often used in catch handlers.
Detach a DSO object from running memory.
Lookup a symbol in the loaded file.
Find a specific DSO object by filename.
name | of DSO object file (partial). |
See if DSO object is valid.
Install debug handler...
Contruct a multi-part document, and describe it's type.
document | (content) type. |
Stream the headers of the multi-part document. The headers of individual entities are streamed as part of the body.
output | to stream document header into. |
Stream the "body" of the multi-part document. This involves streaming the headers and body of each document part.
output | to stream document body into. |
Get a string array of the headers to use. This is used to assist URLStream::post.
Stream the header(s) for the current document part.
output | to stream header into. |
Stream the content of this document part.
output | to stream document body into. |
Construct and attach a document part to a multipart document.
top | multipart document to attach to. |
ct | Content-Type to use. |
The constructor simply initializes the count.
The destructor is called when the reference count returns to zero. This is done through a virtual destructor.
The actual object being managed can be returned by this method as a void and then recast to the actual type. This removes the need to dynamic cast from RefObject and the dependence on rtti this implies.
Detach current object, for example, when changing pointer.
Patch point for mutex in derived class. This may often be a single static mutex shared by a managed type.
Patch point for a mutex in derived class. This may often be a single static mutex shared by a managed type.
Create an unattached pointer.
Create a pointer attached to a reference counted object.
Object being referenced.
A copy constructor.
Pointer being copied.
Get first linked object in list. This may be dynamically recast, and may refer to a master static bookmark pointer in a derived class. Otherwise it simply returns the current object. In a "free" list, this may not only return the first object, but also set the first to next.
Gets the last object in the list. This normally follows the links to the end. This is a virtual because derived class may include a static member bookmark for the current end.
Get next object, for convenience. Derived class may use this with a dynamic cast.
Insert object into chain. This is a virtual because derived class may choose instead to perform an insert at head or tail, may manage bookmarks, and may add mutex lock.
object | being inserted. |
Requested in overloaded insert() method to indicate how to insert data into list
< insert at first position in list pointed by current object
< insert at last position in list pointed by current object
< insert in list before current object
< insert in list after current object
Get first linked object in list. This may be dynamically recast, and may refer to a master static bookmark pointer in a derived class. Otherwise it follows list to front.
Gets the last object in the list. This normally follows the links to the end. This is a virtual because derived class may include a static member bookmark for the current end.
Virtual to get the insert point to use when adding new members. This may be current, or always head or always tail. As a virtual, this allows derived class to establish "policy".
Get next object, for convenience. Derived class may use this with a dynamic cast.
Get prev object in the list.
Insert object into chain at given pos, as indicated by InsertMode; If no pos is given, it defaults to modeAtLast, inserting element at list's end.
object | being inserted. |
position | where object is inserted. |
Remove object from chain.
Creates an empty map index (pointing to nothing).
Creates a map index pointing to a specific map object
the | indexed object |
Creates a copy of a given map index
the | source index object |
Dereference operator: the pointed object it is returned as void * for easy re-cast.
Assignment operator to avoid implicit cast.
Prefix increment operator, to be used in loops and such.
Postfix increment operator, to be used in loops and such.
Comparison operator, between two MapIndex's.
Comparison operator, between the MapIndex and a MapObject, useful to avoid casts for sake of clearness.
Remove the object from it's current table.
Save id, mark as not using any table.
id | string for this object. |
This manages a registration to the typemanager - attempting to remove problems with the optimizers
This adds a new construction function to the type manager
And this one removes a type from the managers lists
This function creates a new object of the required type and returns a pointer to it. NULL is returned if we couldn't find the type
This constructor is used in serialization processes. It is called in CreateNewInstance in order to create an instance of the class to have Read() called on it.
Default destructor
This returns the ID of the persistent object (Its type)
This method is used to write to the Persistence::Engine It is not equivalent to the << operator as it writes only the data and not the object type etc.
This method is used to read from a Persistence::Engine It is not equivalent to the >> operator as it does no typesafety or anything.
These are the modes the Persistence::Engine can work in
Constructs a Persistence::Engine with the specified stream in the given mode. The stream must be initialized properly prior to this call or problems will ensue.
writes a PersistObject from a reference.
writes a PersistObject from a pointer.
reads a PersistObject into a reference overwriting the object.
reads a PersistObject into a pointer allocating memory for the object if necessary.
reads the actual object data into a pre-instantiated object pointer by calling the read function of the derived class.
reads in a class name, and caches it into the ClassMap.
The underlying stream
The mode of the engine. read or write
Typedefs for the Persistence::PersistObject support
Detach current process into a daemon, posix only. Perhaps a similar method can be used for creating win32 "services"?
Attach the current process to another device or i/o session. It is deamonified and dissasociated with the prior parent process and controlling terminal.
devname | path to attach to. |
Set a posix compliant signal handler.
signo | signal no. |
handler | trap handler. |
Set system call interuptable signal handler.
#return previous handler.
signo | signal no. |
handler | trap handler. |
Lock a process in memory. Ideally you should be deep enough where additional memallocs for functions will not kill you, or use false for future.
future | pages as well... |
Unlock process pages.
Spawn a process and wait for it's exit code. In win32 this is done with the spawn system call. In posix, this is done with a fork, an execvp, and a waitpid.
exec | name of executable. |
argv | list of command arguments. |
wait | for process to exit before return. |
Get the exit status of another process, waiting for it to exit.
pid | process id. |
Cancel a running child process.
pid | process id. |
sig | cancel signal to apply. |
Get system environment.
name | of symbol. |
Set system environment in a standard manner.
name | of environment symbol to set. |
value | of environment symbol. |
overwrite | true if replace existing symbol. |
Get etc prefix path.
Get home directory.
Get user name.
Set user id by name.
Set the effective group id by name.
Return the effective operating system page size.
Used to set process priority and optionally enable realtime.
Used to set process scheduling policy.
Portable shortcut for setting realtime...
Return true if scheduler settable.
Return true if realtime scheduling.
Create a lock under a known name.
name | of system-wide lock to create. |
Create a new lock object that can be used to make locks.
Destroy the current lock and release it.
Lock a system-wide name for this process. If the lock is successful, return true. If an existing lock was already acquired, release it first.
name | system-wide lock to use. |
Release an acquired lock.
Flag if the current process has aqcuired a lock.
Used to properly initialize serial object.
Opens the serial device.
fname | Pathname of device to open |
Closes the serial device.
Reads from serial device.
Data | Point to character buffer to receive data. Buffers MUST be at least Length + 1 bytes in size. |
Length | Number of bytes to read. |
Writes to serial device.
Data | Point to character buffer containing data to write. Buffers MUST |
Length | Number of bytes to write. |
This service is used to throw all serial errors which usually occur during the serial constructor.
error | defined serial error id. |
errstr | string or message to optionally pass. |
This service is used to thow application defined serial errors where the application specific error code is a string.
err | string or message to pass. |
This method is used to turn the error handler on or off for "throwing" execptions by manipulating the thrown flag.
enable | true to enable handler. |
Set packet read mode and "size" of packet read buffer. This sets VMIN to x. VTIM is normally set to "0" so that "isPending()" can wait for an entire packet rather than just the first byte.
size | of packet read request. |
btimer | optional inter-byte data packet timeout. |
Set "line buffering" read mode and specifies the newline character to be used in seperating line records. isPending can then be used to wait for an entire line of input.
newline | newline character. |
nl1 | EOL2 control character. |
Restore serial device to the original settings at time of open.
Used to flush the input waiting queue.
Used to flush any pending output data.
Used to wait until all output has been sent.
Used as the default destructor for ending serial I/O services. It will restore the port to it's original state.
Used to initialize a newly opened serial file handle. You should set serial properties and DTR manually before first use.
This allows later ttystream class to open and close a serial device.
A serial object may be constructed from a named file on the file system. This named device must be "isatty()".
name | of file. |
The serial base class may be "thrown" as a result on an error, and the "catcher" may then choose to destory the object. By assuring the socket base class is a virtual destructor, we can assure the full object is properly terminated.
Serial ports may also be duplecated by the assignment operator.
Set serial port speed for both input and output.
speed | to select. 0 signifies modem "hang up". |
Set character size.
bits | character size to use (usually 7 or 8). |
Set parity mode.
parity | mode. |
Set number of stop bits.
bits | stop bits. |
Set flow control.
flow | control mode. |
Set the DTR mode off momentarily.
millisec | number of milliseconds. |
Send the "break" signal.
Often used by a "catch" to fetch the last error of a thrown serial.
Often used by a "catch" to fetch the user set error string of a thrown serial.
Get the "buffer" size for buffered operations. This can be used when setting packet or line read modes to determine how many bytes to wait for in a given read call.
Get the status of pending operations. This can be used to examine if input or output is waiting, or if an error has occured on the serial device.
pend | ready check to perform. |
timeout | in milliseconds. |
Acquire the mutex
_mutex | reference to mutex to aquire. |
Release the mutex automatically
Wait for read access
_tl | reference to lock to aquire. |
Post the semaphore automatically
Wait for write access
_tl | reference to threadlock to aquire. |
Post the semaphore automatically
Wait for the semaphore
Post the semaphore automatically
Create a timer, mark it as inactive, and set the initial "start" time to the creation time of the timer object. This allows "incTimer" to initially refer to time delays relative to the original start time of the object.
Set a new start time for the object based on when this call is made and optionally activate the timer for a specified number of milliseconds. This can be used to set the starting time of a realtime session.
timeout | delay in milliseconds from "now" |
Set a timeout based on the current time reference value either from object creation or the last setTimer(). This reference can be used to time synchronize realtime data over specified intervals and force expiration when a new frame should be released in a synchronized manner.
timeout | delay in milliseconds from reference. |
Adjust a timeout based on the current time reference value either from object creation or the last setTimer(). This reference can be used to time synchronize realtime data over specified intervals and force expiration when a new frame should be released in a synchronized manner.
timeout | delay in milliseconds from reference. |
Sleep until the current timer expires. This is useful in time syncing realtime periodic tasks.
This is used to "disable" the service thread from expiring the timer object. It does not effect the reference time from either creation or a setTimer().
This is used by service threads to determine how much time remains before the timer expires based on a timeout specified in setTimer() or incTimer(). It can also be called after setting a timeout with incTimer() to see if the current timeout has already expired and hence that the application is already delayed and should skip frame(s).
return time remaining in milliseconds, or TIMEOUT_INF if inactive.
This is used to determine how much time has elapsed since a timer port setTimer benchmark time was initially set. This allows one to use setTimer() to set the timer to the current time and then measure elapsed time from that point forward.
return time elapsed in milliseconds, or TIMEOUT_INF if inactive.
a delimiter string containing all usual whitespace delimiters. These are space, tab, newline, carriage return, formfeed and vertical tab. (see isspace() manpage).
Exception thrown, if someone tried to read beyond the end of the tokens. Will not happen if you use it the 'clean' way with comparison against end(), but if you skip some tokens, because you 'know' they are there. Simplifies error handling a lot, since you can just read your tokens the way you expect it, and if there is some error in the input this Exception will be thrown.
The input forward iterator for tokens.
copy constructor.
assignment operator.
shifts this iterator to the next token in the string.
returns the immutable string this iterator points to or '0' if no token is available (i.e. i == end()). Do not store pointers to this token, since it is invalidated for each iteration. If you need the token, copy it (e.g. with strdup());
returns the next delimiter after the current token or '\0', if there are no following delimiters. It returns the very next delimiter (even if skipAllDelim=true).
compares to other iterator. Usually used to compare against the end() iterator.
compares to other iterator. Usually used to compare against the end() iterator.
creates a new StringTokenizer for a string and a given set of delimiters.
str | String to be split up. This string will not be modified by this StringTokenizer, but you may as well not modfiy this string while tokenizing is in process, which may lead to undefined behaviour. |
delim | String containing the characters which should be regarded as delimiters. |
skipAllDelim | OPTIONAL. true, if subsequent delimiters should be skipped at once or false, if empty tokens should be returned for two delimiters with no other text inbetween. The first behaviour may be desirable for whitespace skipping, the second for input with delimited entry e.g. /etc/passwd like files or CSV input. NOTE, that 'true' here resembles the ANSI-C strtok(char *s,char *d) behaviour. DEFAULT = false |
trim | OPTIONAL. true, if the tokens returned should be trimmed, so that they don't have any whitespaces at the beginning or end. Whitespaces are any of the characters defined in StringTokenizer::SPACE. If delim itself is StringTokenizer::SPACE, this will result in a behaviour with skipAllDelim = true. DEFAULT = false |
create a new StringTokenizer which splits the input string at whitespaces. The tokens are stripped from whitespaces. This means, if you change the set of delimiters in either the 'begin(const char *delim)' method or in 'setDelimiters()', you then get whitespace trimmed tokens, delimited by the new set. Behaves like StringTokenizer(s, StringTokenizer::SPACE,false,true);
returns the begin iterator
changes the set of delimiters used in subsequent iterations.
returns a begin iterator with an alternate set of delimiters.
the iterator marking the end.
Create xml parser.
size | of XML data buffer. |
Destroy xml parser.
Virtual to receive embedded comments in XML document being parsed.
text | received. |
size | of text received. |
Virtual to receive character text extracted from the document.
text | received. |
size | of text received. |
Notify start of document event.
Notify end of document event.
Notify start of an element in the document.
name | of element found. |
attr | list of attributes extracted. |
Notify end of an element in the document.
name | of element ending. |
Parse a chunk of data and return parser completion flag. This is used to externally drive data into the XML parser. The return status can be used to determine when a document has been fully parsed. This can be called multiple times to push stream data into the parser.
address | of data to parse. |
size | of data to parse. |
Parse a stream buffer and return parser document completion flag. This is used to scan a stream buffer for a complete XML document. The stream is scanned until the document is complete or EOF. Multiple XML document instances can be scanned from a continues XML streaming source.
stream | buffer to parse. |
Parse a file buffer and return parser document completion flag. This is used to scan a file buffer for a complete XML document. The file is scanned until the document is complete or EOF. Multiple XML document instances can be scanned from a continues XML streaming source.
file | buffer to parse. |
End of document check.