The  protocol is a generic multiparty transport protocol. Its mission is to disseminate content among a swarm of peers. 
Given a hash, the data is received from whatever source available and data integrity is checked cryptographically with
Merkle hash trees. 

Our main focus when modifying the swift implementation is to have an impact on time performance. With a communication
protocol the greatest latency is usually generated by waiting for the results from the network. The multiparty
communication model already takes care of this, so the next best thing is to enhance the application time. We are doing
this by decreasing the time penalties due to context switches between user space and kernel space. The main idea is to
reduce the number of system calls made from user space into the kernel. This implicitly reduces the number of preemption
moments.

Firstly, we have implemented a test suite for every socket system call, which test all possible cases.  This unit tests
are made to ensure the code quality, and to validate if the system call respond in the same mode as other similar
system call. 

Secondly, we have implemented a functional tests to validate a simple workflow. For this purpose we have a sender that
acts as the seeder and a receiver which have the leecher role. We transfer a small file between this entities.  

Also we will implement performance tests that will validate our design and implementation. This tests will compare the
number of system calls for both implementation (original implementation and our implementation).
