This repo is a reworking of a project I did in class in a group of 3, and that I thought was fun. Hence I decided to rewrite it from scratch, only reusing some classes given for the project, these can be found in the utils folder.
Now, all the work has been written by me, the CoreLinda
class being entirely rewritten using different tools for synchronization.
The server package however reuses the work I did at the time of the project.
Implements the core of the syncronization and storage system. The storage system should be optimized, see improvements .
This package is mostly unchanged. That's why some parts may be written differently as it was written long ago, and I was a beginner.
It contains a server and client implementation that extends CoreLinda
as a server thus being accessible through the client.
There are two sub-packages that add tweaks to the existing server :
- multi-server, that connects multiple server each accessible from outside and from the other servers
- cache, the
LindaCient
now has a cache on
The application
sub-package in the utils
package gives an example of the use this server can have.
It illustrates the posibilities the callback class allows.
The CoreLinda
class should implements a better more efficient storage system for large quantity of data.
Depending on its use of this tuple-server, multiple improvements are possible to study :
- when using a wide variety of tuple, a better implementation would be to break the Array used for storage into multiple ones that are accessed by exploring a tree (mostly read).
- if there is no knowledge we can just break the array in multiple ones of roughly the same size.
The first improvement is unefficient if using always the same "kind" of tuple (for example [integer integer]). The second one is always efficient for it allows to write and read at the same time, but this improvement is less significant than the first one.
The two improvements described above can be combined, to be even more powerfull.