MP2P is a file transfer piece of software using a custom protocol.
MP2P stands for
The idea behind this project is that our bandwidth is sometimes wide enough to
download from multiple servers at the same time, and we don’t exploit that.
The goal is to spread chunks of the files across our storage servers, so that whenever a download occurs, multiple chunks can be downloaded simultaneously from different servers.
It is going to involve many interesting challenges, like:
- Storage strategy
- Multi-threaded asynchronous I/O
- Master-Master database duplication
- Integrity check
The official repository is available on GitHub.
The programming language used is C++ 14. We like C++ for its performance and we’re always looking forward to learn how to write clean C++.
The Boost.Asio library is going to be the second most-used tool for MP2P. Boost.Asio allows us to use a C++ approach for networking. This means, writing clean code, and keeping the performances that we could have achieved using C.
Couchbase is a NoSQL database, featuring a Master-Master duplication.
Catch is a unit-test framework.
Cmake is our build system.
So far, MP2P is a work in progress.