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.
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.
Get source code •The installable package for Linux of the library can be downloaded from the following link: http://www.palermo.edu/ingenieria/UpTools-8.6.2.tar.gz
Install precompiled packages as RPM
Recent versions of the library is available for users of:
- Fedora 17 (next to be released) (Version 8.6.2)
- Fedora 16 (Version 8.6.2)
- Fedora 15 (Version 8.6.2)
- Centos 6 and Red Hat Enterprise Linux 6 (using repository EPEL)
(Version 8.6.1)
Earlier versions are available for:
- Fedora 14
- Fedora 13
- Centos 5 and 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:
 |