zyre2-0.1.1.0: src/Network/Zyre2.hs
-- | Zyre provides reliable group messaging over local area networks. It has these key characteristics:
--
-- * Zyre needs no administration or configuration.
-- * Peers may join and leave the network at any time.
-- * Peers talk to each other without any central brokers or servers.
-- * Peers can talk directly to each other.
-- * Peers can join groups, and then talk to groups.
-- * Zyre is reliable, and loses no messages even when the network is heavily loaded.
-- * Zyre is fast and has low latency, requiring no consensus protocols.
-- * Zyre is designed for WiFi networks, yet also works well on Ethernet networks.
-- * Time for a new peer to join a network is about one second.
--
-- Typical use cases for Zyre are:
--
-- * Local service discovery.
-- * Clustering of a set of services on the same Ethernet network.
-- * Controlling a network of smart devices (Internet of Things).
-- * Multi-user mobile applications (like smart classrooms).
--
-- This package provides a haskell interface to the Zyre 2.0.1 API. The
-- package requires the c libraries czmq and zyre to be installed on the
-- system. See https://github.com/zeromq/zyre for specifics.
module Network.Zyre2
( -- * Context Lifecycle
ZyreContext,
new,
start,
stop,
destroy,
-- * Context information
uuid,
name,
version,
-- * Group membership
join,
leave,
ownGroups,
peerGroups,
-- * Peers
peers,
peersByGroup,
peerAddress,
peerName,
peerHeaderValue,
-- * Sending and receiving messages
shout,
shouts,
whisper,
whispers,
recv,
-- * Constructing messages
ZMsg (..),
msgShout,
msgWhisper,
-- ** Adding data
pushMem,
pushText,
addMem,
addText,
-- ** Frames
ZFrame,
frameData,
-- ** Deconstructing messages
popText,
popMem,
-- * Phantom tags for lifecycle state
ZCreated,
ZDestroyed,
ZRunning,
ZStopped,
)
where
import Network.Zyre2.Types
( ZCreated,
ZDestroyed,
ZRunning,
ZStopped,
ZyreContext,
)
import Network.Zyre2.ZMsg
( ZFrame,
ZMsg (..),
addMem,
addText,
frameData,
msgShout,
msgWhisper,
popMem,
popText,
pushMem,
pushText,
)
import Network.Zyre2.Zyre
( destroy,
join,
leave,
name,
new,
ownGroups,
peerGroups,
peers,
peerAddress,
peerName,
peerHeaderValue,
peersByGroup,
recv,
shout,
shouts,
start,
stop,
uuid,
version,
whisper,
whispers,
)