UpTools C++ library
UpTools is an open source development library in C++. It originated from the needs of the research
and development projects of the Electronics and Communications department of the School of Engineering
of the University of Palermo. Its license allows the library to be included both in commercial closed
source and open source projects.
UpTools contains powerful tools to facilitate and accelerate the following aspects of modern
application development:
1. High performance computing (HPC)
1.1 Load distribution and parallel processing in transactional applications.
1.2 Algorithms and scientific applications parallelization and acceleration.
UpTools facilitates workload partition and parallelization. The programmer has to define the data
space partition criteria and the processing algorithms to run over the partitions, then UpTools
divides the processing in jobs among the threads and also handles the consolidation of the results of
each thread's job. It also manages and enables parallelism in transactional servers.
2. Multi-threading
2.1 Threads
2.2 Mutual exclusion (mutex), semaphores, read/write locks, scope automatic locking
2.3 Conditions
2.4 Thread-specific data
Internally UpTools multithreading classes and templates use Posix threads, but show a clear and simple
interface to the C++ developer, considerably reducing errors and development time.
3. Time and timers
3.1 Time handling.
3.2 Timers and multithreading
It defines classes and methods for time handling. It reliably and orderly manages timers in
multithreaded environments.
4. Memory management
4.1 Smart pointers and objects
4.2 Easy management and tracking of objects.in memory
The library includes smart pointers to manage the life of the objects in memory in multi-threaded
environments. It has memory debug options, and allows tracking at runtime of the objects in
memory.
5. Text and strings
5.1 Operators on strings
5.2 Regular expressions, substitutions
5.3 Configuration file parsing and management
UpTools includes multiple operators between strings and other types to facilitate text handling. It
provides a powerful C++ interface for Posix regular expressions and substitutions. It manages
application configuration files.
6. Databases
6.1 Common interface for different vendor databases
6.2 Database access in multithreaded environment
The library allows to access different databases without the need to alter the source code of the
programs. It currently supports Postgresql and MySql, but it is expected to support also DB2 and
others. It allows automatic management of backup database servers and transparently provides unique
connections for each thread.
7. Networking
7.1 IP host and network address handling
7.2 DNS queries
7.3 Asynchronus DNS queries
7.4 Sockets
7.5 SSL and TLS
7.6 Simplified management of events in multiple simultaneous communications
7.7 Ultrafast route tables, enabling wirespeed lookups and insertions both for IPv4 and IPv6
UpTools enables a fast and simple handling of host and network addresses and sockets. Because of the
long delays (in cpu time) of DNS queries, the library enables asynchronous DNS queries, running in
parallel to the application threads, associating code for the processing of the results, to the event
of receiving the answer from the server. It allows encrypted communications using TLS and SSL, with
minimal changes to programs already coded without encryption. It also allows certificate handling.
UpTools route lookup objects and algorithms have been included in applications processing multiple
10gbps interfaces at full rate, while handling full internet tables from multiple providers (million
of entries and million of lookups per second at wire speed).
Get source code
• The installable package for Linux of the library can be downloaded from the following link:
https://www.palermo.edu/ingenieria/UpTools-8.6.12.tgz March
2020 release.
Install precompiled packages as RPM
Former versions of the library are available for users of:
-
Fedora 19 (Version 8.6.3)
-
Fedora 18 (Version 8.6.3)
-
Centos 6.x y Red Hat Enterprise Linux 6.x (using repository EPEL) (Version 8.6.3)
-
Fedora 17 (next to be released) (Version 8.6.2)
-
Fedora 16 (Version 8.6.2)
-
Fedora 15 (Version 8.6.2)
-
Fedora 14
-
Fedora 13
-
Centos 5 y Red Hat Enterprise Linux 5 (using repository EPEL)
These packages can be installed running:
yum install UpTools UpTools-devel
• For more information, coments and feedback pleas write to: uptools@palermo.edu