Zeek's Messaging Library
Branch: master
Clone or download
jsiwek Fix file descriptor leak in subscribers
Specifically, endpoint::make_status_subscriber() and
endpoint::make_subscriber() methods because the "flare" class was
missing a dtor to close its FDs.

Fixes zeek/zeek#273
Latest commit 7065ab0 Feb 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
3rdparty @ 6e93c55 Update embedded CAF to 0.16.3 Jan 22, 2019
bindings/python Fix python bindings unicode decode exceptions Jan 16, 2019
broker Fix file descriptor leak in subscribers Feb 15, 2019
cmake @ 6135c1a Updating submodule(s). Jan 16, 2019
doc Update python.rst Nov 29, 2018
docs Workaround bug in RtD requirements.txt location May 23, 2018
src Fix file descriptor leak in subscribers Feb 15, 2019
tests Fix python bindings unicode decode exceptions Jan 16, 2019
.clang-format Merge of topic/actor-system. May 21, 2018
.gitignore Merge of topic/actor-system. May 21, 2018
.gitmodules Update submodules to use github.com/zeek Dec 6, 2018
.travis.yml Disable clang test for Travis Trusty Nov 1, 2018
.update-changes.cfg Improve version number automation of version.hh May 25, 2018
.ycm_extra_conf.py Merge of topic/actor-system. May 21, 2018
CHANGES Fix file descriptor leak in subscribers Feb 15, 2019
CMakeLists.txt Add --with-log-level configure option Jan 23, 2019
CONTRIBUTING.md Merge of topic/actor-system. May 21, 2018
COPYING Tagging version as 1.0. May 21, 2018
Makefile Improve `make dist` Aug 31, 2018
README Fix README title formatting Jan 14, 2019
README.rst Add README.rst symlink Dec 1, 2015
VERSION
configure Add --with-log-level configure option Jan 23, 2019

README.rst

Broker: Zeek's Messaging Library

The Broker library implements Zeek's high-level communication patterns:

  • remote logging
  • remote events
  • distributed data stores

Remote logging and events all follow a pub/sub communication model between Broker endpoints that are directly peered with each other. An endpoint also has the option of subscribing to its own messages. Subscriptions are matched prefix-wise and endpoints have the capability of fine-tuning the subscription topic strings they wish to advertise to peers as well as the messages they wish to send to them.

The distributed data store functionality allows a master data store associated with one Broker endpoint to be cloned at peer endpoints which may then perform lightweight, local queries against the clone, which automatically stays synchronized with the master store. Clones cannot modify their content directly, instead they send modifications to the centralized master store which applies them and then broadcasts them to all clones.

Applications which integrate the Broker library may communicate with each other using the above-mentioned patterns which are common to Zeek.

See the User Manual for more information. For offline reading, it's also available in the doc/ directory of the source tree.

Dependencies

Compiling Broker requires the following libraries/tools to already be installed:

The optional Python bindings also require Python 2.7 or greater along with Python development packages. For Python 2.7, you'll also need the ipaddress backport from Python 3.

By default, Broker will use an integrated version of the C++ Actor Framework (CAF; https://actor-framework.org), though there's still the option to specify an exernal CAF version via the --with-caf= configure script option.

Compiling/Installing

To compile and install into /usr/local:

./configure
make
make install

See ./configure --help for more advanced configuration options.