▼Build Configuration | |
Building Dynamic Link Libraries (DLL/DSO) | |
▼Error Subsystem | |
PJLIB's Own Error Codes | |
▼Data Structure. | |
Array helper. | |
Globally Unique Identifier | |
Hash Table | |
Linked List | |
Red/Black Balanced Tree | Red/Black tree is the variant of balanced tree, where the search, insert, and delete operation is guaranteed to take at most O( lg(n) ) |
String Operations | |
Basic Data Types and Library Functionality. | |
▼Miscelaneous | |
Assertion Macro | |
ctype - Character Type | |
Exception Handling | |
Logging Facility | |
Mathematics and Statistics | |
Random Number Generator | |
Timer Heap Management. | The timer scheduling implementation here is based on ACE library's ACE_Timer_Heap, with only little modification to suit our library's style (I even left most of the comments in the original source) |
Unicode Support | |
Time Data Type and Manipulation. | |
▼Operating System Dependent Functionality. | |
▼Input/Output | Input/Output |
Active socket I/O | Active socket performs active operations on socket |
Network Address Resolution | |
File Access | |
File I/O | |
IOQueue: I/O Event Dispatching with Proactor Pattern | |
IP Interface and Routing Helper | |
▼Socket Abstraction | |
Socket Quality of Service (QoS) API: TOS, DSCP, WMM, IEEE 802.1p | |
Socket select() API. | |
Secure socket I/O | Secure socket provides security on socket operation using standard security protocols such as SSL and TLS |
▼Lock Objects | |
Group Lock | |
System Information | |
Threads | |
Symbian OS Specific | |
Thread Local Storage. | |
Atomic Variables | |
Mutexes. | |
Reader/Writer Mutex | |
Critical sections. | |
Semaphores. | |
Event Object. | |
High Resolution Timestamp | |
Application execution | |
Time Data Type and Manipulation. | |
▼Fast Memory Pool | Memory pools allow dynamic memory allocation comparable to malloc or the new in operator C++. Those implementations are not desirable for very high performance applications or real-time systems, because of the performance bottlenecks and it suffers from fragmentation issue |
Memory Pool Object | The memory pool is an opaque object created by pool factory. Application uses this object to request a memory chunk, by calling pj_pool_alloc(), pj_pool_calloc(), or pj_pool_zalloc(). When the application has finished using the pool, it must call pj_pool_release() to free all the chunks previously allocated and release the pool back to the factory |
Pool Factory and Policy | A pool object must be created through a factory. A factory not only provides generic interface functions to create and release pool, but also provides strategy to manage the life time of pools. One sample implementation, pj_caching_pool, can be set to keep the pools released by application for future use as long as the total memory is below the limit |
Caching Pool Factory | Caching pool is one sample implementation of pool factory where the factory can reuse memory to create a pool. Application defines what the maximum memory the factory can hold, and when a pool is released the factory decides whether to destroy the pool or to keep it for future use. If the total amount of memory in the internal cache is still within the limit, the factory will keep the pool in the internal cache, otherwise the pool will be destroyed, thus releasing the memory back to the system |
Stack/Buffer Based Memory Pool Allocator | Stack/buffer based pool |