distributed-process-p2p-0.1.2.2: Peer-to-peer node discovery for Cloud Haskell

Safe HaskellNone

Control.Distributed.Backend.P2P

Description

Peer-to-peer node discovery backend for Cloud Haskell based on the TCP transport. Provided with a known node address it discovers and maintains the knowledge of it's peers.

 import qualified Control.Distributed.Backend.P2P as P2P
 import           Control.Monad.Trans (liftIO)
 import           Control.Concurrent (threadDelay)

 main = P2P.bootstrap "myhostname" "9001" [P2P.makeNodeId "seedhost:9000"] $ do
     liftIO $ threadDelay 1000000 -- give dispatcher a second to discover other nodes
     P2P.nsendPeers "myService" ("some", "message")

Synopsis

Documentation

bootstrap :: HostName -> ServiceName -> [NodeId] -> RemoteTable -> Process () -> IO ()Source

Start a controller service process and aquire connections to a swarm.

peerController :: [NodeId] -> Process ()Source

A P2P controller service process.

makeNodeId :: String -> NodeIdSource

Make a NodeId from host:port string.

getPeers :: Process [NodeId]Source

Get a list of currently available peer nodes.

getCapable :: String -> Process [ProcessId]Source

Poll a network for a list of specific service providers.

nsendPeers :: Serializable a => String -> a -> Process ()Source

Broadcast a message to a specific service on all peers.

nsendCapable :: Serializable a => String -> a -> Process ()Source

Broadcast a message to a service of on nodes currently running it.