PJLIB =================== PJLIB is an Open Source, small footprint framework library written in C for making scalable applications. It can be used in wide range of applications, from embedded systems, mobile applications, to high performance systems. Key Features ------------- Extreme Portability ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From 16-bit, 32-bit, to 64-bit, big or little endian, single or multi-processors, wide range of operating systems, Unicode support. With or without floating point support. Multi-threading or not. With/without ANSI LIBC. Currently known to run on these platforms: .. include:: /common/common_os_list.rst Small Footprint ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PJLIB size is around 150 KB. See :any:`/specific-guides/perf_footprint/footprint` for more information. Big in Performance ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PJLIB has been designed to achieve highest performance, with design decisions such as own :ref:`memory management `, :ref:`string `, and :doc:`network event proactor `. See :any:`/specific-guides/perf_footprint/performance` for more information. No Dynamic Memory Allocations ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - alloc() is a O(1) operation. - no mutex is used inside alloc(). - no free(). All chunks will be deleted when the pool is destroyed. Rich Features ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Operating system abstraction - Low and high level network I/O - Timer management - Rich data structures - Exception construct - Logging facility - Random and GUID generation API Reference ------------------- Basic Types and Functions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - :doc:`Configs & Macros ` - :doc:`Basic Types and Init/Shutdown Functions ` - :doc:`DLL Build Target ` Infrastructure ^^^^^^^^^^^^^^^^^^^^^ - Error Number Management - :doc:`Errno Framework ` - :doc:`Standard Error Constants ` - :doc:`Ctype ` - :doc:`Logging ` - :doc:`Assertion ` - :doc:`Math ` - :doc:`Exception Handling ` Data structure ^^^^^^^^^^^^^^^ - :doc:`Array ` - :doc:`Hash Table ` - :doc:`Linked List ` - :doc:`RB Tree ` Network ^^^^^^^^^^ - Address Resolution - :doc:`IP Helper ` - :doc:`Address Resolution ` - Network I/O - :doc:`Socket ` - :doc:`select() Abstraction ` - :doc:`Active Socket ` - :doc:`IOQueue (Event Proactor pattern) ` - :ref:`qos` SSL/Secure Socket ^^^^^^^^^^^^^^^^^^^^^^^ SSL socket implementation on top of OpenSSL, BoringSSL, GNUTLS, and Apple's Network framework. See: - :doc:`SSL Socket API ` - Guide on :ref:`SSL ` File ^^^^^^^^^^ - :doc:`File Access ` - :doc:`File I/O ` .. _pjlib_pool: Memory Management ^^^^^^^^^^^^^^^^^^^^^ - :doc:`Introduction to Memory Pool ` - :doc:`Pool ` - :doc:`Pool on Fixed Buffer ` - :doc:`Caching Pool ` - :doc:`Pool Factory Concept ` .. _pjlib_string: String & Unicode ^^^^^^^^^^^^^^^^^^^^ String in PJLIB is non-zero terminated, and represented with ``pj_str_t``. A full set of API is provided to manipulate such strings. - :doc:`String Manipulations ` - :doc:`Unicode Helper ` Multithreading and Concurrency ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - :doc:`Thread ` - Concurrency - :doc:`Atomic Operation ` - :doc:`Critical Section ` - :doc:`Mutex ` - :doc:`RW Mutex ` - :doc:`Semaphore ` - :doc:`Lock ` - :doc:`Group Lock ` - :doc:`Event ` - :doc:`Thread Local Storage ` OS Abstraction ^^^^^^^^^^^^^^^^^ - :doc:`OS Abstraction ` - :doc:`Symbian OS Specific ` - :doc:`System Information ` Time and Timer ^^^^^^^^^^^^^^^^^ - :doc:`Time ` - :doc:`High Resolution Timestamp ` - :doc:`Timer API ` Random and GUID ^^^^^^^^^^^^^^^^^^^^^^ - :doc:`Random ` - :doc:`Native GUID generator ` Application Microframework ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - :doc:`main() ` Unit Testing ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - :doc:`Unit Testing Framework `