README.md

ppg
===

Plumtree based Process Group

Build
-----

```sh
$ git clone git@github.com:sile/ppg.git
$ cd ppg/
$ ./rebar3 compile
```

Usage Examples
--------------

```erlang
$ make start
> ppg:create(foo).

> ppg:which_groups().
[foo].

> {ok, Peer} = ppg:join(foo, self()).
> lists:foreach(fun (_) -> ppg:join(foo, self()) end, lists:seq(1, 4)).

> ppg:broadcast(Peer, bar).
> flush().
Shell got bar
Shell got bar
Shell got bar
Shell got bar
Shell got bar
ok
```

API
---

See [EDoc Documents](doc/README.md)

Reference
----------

- [Plumtree: Epidemic Broadcast Trees](http://homepages.gsd.inesc-id.pt/~jleitao/pdf/srds07-leitao.pdf)
- [HyParView: a membership protocol for reliable gossip-based broadcast](http://asc.di.fct.unl.pt/~jleitao/pdf/dsn07-leitao.pdf)

License
-------

This library is released under the MIT License.

See the [LICENSE](LICENSE) file for full license information.