File transfer application using a custom protocol.
This project is divided into four different parts:
- The 'Storage' application
- The 'Master' application
- The 'Client' application
- The 'Tools' library
- Network
- Files
- Utils
The library implements functions for the MP2P protocol. It is using boost:asio for the networking part.
All the apps are using the 'tools' library for network communications and file manipulations.
The project uses Couchbase as a Master-Master replication database system.
We provide some *.conf.example files in the config folder, you can configure them to set up your own settings.
mkdir -p build && cd build; cmake ..; make master-release -j;
mkdir -p build && cd build; cmake ..; make storage-release -j;
mkdir -p build && cd build; cmake ..; make client-release -j;
- C++ >= 14
- Boost >= 1.55
- OpenSSL >= 1.0
- libcouchbase == 2.4.8
-
The Master application is there to make a connection between all the clients and the storage. It will be making constant database updates/checks in order to ensure the integrity of the transfers.
-
The Storage application is there to listen for packets and send/receive files.
It listens both for ipv4 & ipv6 connections (see http://stackoverflow.com/a/1618259).
We are using the Catch unit test framework.
make check
will launch the unit tests.
In the src/ folder you will find a .syntastic_cpp_config file containing compile FLAGS. Here is what you have to add in your .vimrc config file to handle this configuration:
let g:syntastic_check_on_open = 1
let g:syntastic_cpp_check_header = 1
let g:syntastic_cpp_compiler = 'clang'
let g:syntastic_cpp_config_file = '.syntastic_cpp_config'