In this repository are placed 3 projects that were assignments of the system programming course in Department of Informatics and Telecommunications of University of Athens, written in C++. In these assignments the use of the most C++'s libraries were prohibited (along with the STL libraries). So the functionality of these libraries was implemented from scratch.
We list here the components of this repository, along with a discription of every component. Every project (of the 3) has it's own Makefile and can be compiled separately.
Firstly, we discribe the libraries made for the projects.
-
lib_containers In this directory are placed all the source files reguarding cointainer libraries. The libraries make heavy use of C++ templates. An effort has been made to provide a simple and easy to use interface, that meets the STL libraires' feeling. The data structures implemented here are used throughout the whole project.
-
lib_safe_c This directory includes only a hearder file with some usefull macros that provide extra safety to the use of tricky C functions.
-
lib_system In this directory are placed all the source files reguarding system calls. The main concern this library was to make the C system calls more reliable and easy to use. This is achived by implementing a higher level of abstraction. The various functions of this library take as arguments complex data structures, defined by the lib_containers. Thus, making compatible the use of containers with low level system calls.
-
lib_utilities In this directory are placed some source files reguarding utilities that are used throughout the whole project.
Now, we desrcibe the projects that make use of the libraries described above. Every project has it's own readme file, were it is explained the application usage.
-
bitcoin A virtual bank for handling bitcoin transactions. (A project about data structures in C/C++.) See
./bitcoin/README.mdfor more information. -
p2p_mirror A peer to peer application, where each process owns a directory and every other process mirrors the process's directory. (A project about Linux/Unix inter-process communication.) See
./p2p_mirror/README.mdfor more information. -
dropbox A drobox simulator. (A project about Linux/Unix network sockets and threads.) This project is similar to
p2p-mirror. See./dropbox/README.mdfor more information.
This code is written in C++11 and compiled with GNU g++ compiler, version 7.5.0.