blob: 67cbc8e11eb12bf3d779d6b13f24a9b81a8b7ac0 [file] [log] [blame] [view]
Davide Pesavento133067f2020-04-02 22:08:27 -04001# PSync: Partial and Full Synchronization Library for NDN
Ashlesh Gawande0b2897e2018-06-20 14:40:47 -05002
Davide Pesavento133067f2020-04-02 22:08:27 -04003![Language](https://img.shields.io/badge/C%2B%2B-14-blue.svg)
4[![Build Status](https://travis-ci.org/named-data/PSync.svg?branch=master)](https://travis-ci.org/named-data/PSync)
5![Latest Version](https://img.shields.io/github/tag/named-data/PSync.svg?color=darkkhaki&label=latest%20version)
Ashlesh Gawande0b2897e2018-06-20 14:40:47 -05006
Davide Pesavento133067f2020-04-02 22:08:27 -04007The PSync library implements the
8[PSync protocol](https://named-data.net/wp-content/uploads/2017/05/scalable_name-based_data_synchronization.pdf).
9It uses Invertible Bloom Lookup Table (IBLT), also known as Invertible Bloom Filter (IBF),
10to represent the state of a producer in partial sync mode and the state of a node in full
11sync mode. An IBF is a compact data structure where difference of two IBFs can be computed
12efficiently. In partial sync, PSync uses a Bloom Filter to represent the subscription list
13of the consumer.
Ashlesh Gawande0b2897e2018-06-20 14:40:47 -050014
Davide Pesavento133067f2020-04-02 22:08:27 -040015PSync uses the [ndn-cxx](https://github.com/named-data/ndn-cxx) library.
Ashlesh Gawande0b2897e2018-06-20 14:40:47 -050016
Davide Pesavento133067f2020-04-02 22:08:27 -040017## Installation
Ashlesh Gawande0b2897e2018-06-20 14:40:47 -050018
19### Prerequisites
20
Davide Pesavento133067f2020-04-02 22:08:27 -040021* [ndn-cxx and its dependencies](https://named-data.net/doc/ndn-cxx/current/INSTALL.html)
Ashlesh Gawande0b2897e2018-06-20 14:40:47 -050022
23### Build
24
Davide Pesavento133067f2020-04-02 22:08:27 -040025To build PSync from source:
Ashlesh Gawande0b2897e2018-06-20 14:40:47 -050026
27 ./waf configure
28 ./waf
29 sudo ./waf install
30
31To build on memory constrained platform, please use `./waf -j1` instead of `./waf`. The
32command will disable parallel compilation.
33
Davide Pesavento133067f2020-04-02 22:08:27 -040034If configured with tests (`./waf configure --with-tests`), the above commands will also
35generate unit tests that can be run with `./build/unit-tests`.
36
37## Reporting bugs
38
39Please submit any bug reports or feature requests to the
40[PSync issue tracker](https://redmine.named-data.net/projects/psync/issues).
41
42## Contributing
43
44We greatly appreciate contributions to the PSync code base, provided that they are
45licensed under the LGPL 3.0+ or a compatible license (see below).
46If you are new to the NDN software community, please read the
47[Contributor's Guide](https://github.com/named-data/.github/blob/master/CONTRIBUTING.md)
48to get started.
49
50## License
51
52PSync is an open source project licensed under the LGPL version 3.
53See [`COPYING.md`](COPYING.md) for more information.