Davide Pesavento | 133067f | 2020-04-02 22:08:27 -0400 | [diff] [blame] | 1 | # PSync: Partial and Full Synchronization Library for NDN |
Ashlesh Gawande | 0b2897e | 2018-06-20 14:40:47 -0500 | [diff] [blame] | 2 | |
Davide Pesavento | 8dce194 | 2021-10-02 22:31:26 -0400 | [diff] [blame] | 3 | [](https://github.com/named-data/PSync/actions/workflows/ci.yml) |
| 4 | [](https://github.com/named-data/PSync/actions/workflows/docs.yml) |
Davide Pesavento | c407dee | 2022-07-21 23:56:05 -0400 | [diff] [blame] | 5 |  |
Davide Pesavento | 8dce194 | 2021-10-02 22:31:26 -0400 | [diff] [blame] | 6 |  |
Ashlesh Gawande | 0b2897e | 2018-06-20 14:40:47 -0500 | [diff] [blame] | 7 | |
Davide Pesavento | 133067f | 2020-04-02 22:08:27 -0400 | [diff] [blame] | 8 | The PSync library implements the |
| 9 | [PSync protocol](https://named-data.net/wp-content/uploads/2017/05/scalable_name-based_data_synchronization.pdf). |
| 10 | It uses Invertible Bloom Lookup Table (IBLT), also known as Invertible Bloom Filter (IBF), |
| 11 | to represent the state of a producer in partial sync mode and the state of a node in full |
| 12 | sync mode. An IBF is a compact data structure where difference of two IBFs can be computed |
| 13 | efficiently. In partial sync, PSync uses a Bloom Filter to represent the subscription list |
| 14 | of the consumer. |
Ashlesh Gawande | 0b2897e | 2018-06-20 14:40:47 -0500 | [diff] [blame] | 15 | |
Davide Pesavento | 133067f | 2020-04-02 22:08:27 -0400 | [diff] [blame] | 16 | PSync uses the [ndn-cxx](https://github.com/named-data/ndn-cxx) library. |
Ashlesh Gawande | 0b2897e | 2018-06-20 14:40:47 -0500 | [diff] [blame] | 17 | |
Davide Pesavento | 133067f | 2020-04-02 22:08:27 -0400 | [diff] [blame] | 18 | ## Installation |
Ashlesh Gawande | 0b2897e | 2018-06-20 14:40:47 -0500 | [diff] [blame] | 19 | |
| 20 | ### Prerequisites |
| 21 | |
Davide Pesavento | 133067f | 2020-04-02 22:08:27 -0400 | [diff] [blame] | 22 | * [ndn-cxx and its dependencies](https://named-data.net/doc/ndn-cxx/current/INSTALL.html) |
Ashlesh Gawande | 0b2897e | 2018-06-20 14:40:47 -0500 | [diff] [blame] | 23 | |
| 24 | ### Build |
| 25 | |
Davide Pesavento | 133067f | 2020-04-02 22:08:27 -0400 | [diff] [blame] | 26 | To build PSync from source: |
Ashlesh Gawande | 0b2897e | 2018-06-20 14:40:47 -0500 | [diff] [blame] | 27 | |
| 28 | ./waf configure |
| 29 | ./waf |
| 30 | sudo ./waf install |
| 31 | |
| 32 | To build on memory constrained platform, please use `./waf -j1` instead of `./waf`. The |
| 33 | command will disable parallel compilation. |
| 34 | |
Davide Pesavento | 133067f | 2020-04-02 22:08:27 -0400 | [diff] [blame] | 35 | If configured with tests (`./waf configure --with-tests`), the above commands will also |
| 36 | generate unit tests that can be run with `./build/unit-tests`. |
| 37 | |
| 38 | ## Reporting bugs |
| 39 | |
| 40 | Please submit any bug reports or feature requests to the |
| 41 | [PSync issue tracker](https://redmine.named-data.net/projects/psync/issues). |
| 42 | |
| 43 | ## Contributing |
| 44 | |
| 45 | We greatly appreciate contributions to the PSync code base, provided that they are |
Davide Pesavento | 36651f1 | 2023-01-02 17:07:21 -0500 | [diff] [blame^] | 46 | licensed under the GNU LGPL version 3 or a compatible license. |
| 47 | If you are new to the NDN software community, please read our [Contributor's Guide]( |
| 48 | https://github.com/named-data/.github/blob/master/CONTRIBUTING.md) to get started. |
Davide Pesavento | 133067f | 2020-04-02 22:08:27 -0400 | [diff] [blame] | 49 | |
| 50 | ## License |
| 51 | |
Davide Pesavento | 36651f1 | 2023-01-02 17:07:21 -0500 | [diff] [blame^] | 52 | PSync is free software distributed under the GNU Lesser General Public License version 3. |
| 53 | See [`COPYING.md`](COPYING.md) for details. |