-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Haskell / Erlang interoperability library -- -- A library for building nodes of a distributed Erlang system in -- Haskell. Nodes can be created and registered to an epmd, Erlang terms -- can be marshalled to/from Erlangs binary term representation and -- message can be sent to or received from processes running on a -- different node. In it's preliminary state hinterface supports of -- Erlangs binary terms and a subset of the distribution protocol. @package hinterface @version 0.5.0.1 module Util.IOExtra requireM :: (HasCallStack, MonadCatch m, MonadLogger m) => String -> Bool -> m () tryAndLogIO :: (HasCallStack, MonadCatch m, MonadLogger m) => m a -> m (Maybe a) tryAndLogAll :: forall a m. (HasCallStack, MonadCatch m, MonadLogger m) => m a -> m (Maybe a) catchAndLogIO :: (HasCallStack, MonadCatch m, MonadLogger m) => m a -> (IOError -> m a) -> m a catchAndLogAll :: (HasCallStack, MonadCatch m, MonadLogger m) => m a -> (SomeException -> m a) -> m a onExceptionLog :: (HasCallStack, MonadCatch m, MonadLogger m) => m a -> m b -> m a bracketOnErrorLog :: (HasCallStack, MonadMask m, MonadLogger m) => m a -> (a -> m b) -> (a -> m c) -> m c handleAndLogAll :: (HasCallStack, MonadCatch m, MonadLogger m) => (SomeException -> m a) -> m a -> m a catchAndLog :: (HasCallStack, MonadCatch m, MonadLogger m, Exception e) => m a -> (e -> m a) -> m a handleAndLog :: (HasCallStack, MonadCatch m, MonadLogger m, Exception e) => (e -> m a) -> m a -> m a logWarnStr :: (HasCallStack, MonadLogger m) => String -> m () logInfoStr :: (HasCallStack, MonadLogger m) => String -> m () logErrorStr :: (HasCallStack, MonadLogger m) => String -> m () logAndThrow :: (HasCallStack, MonadMask m, MonadLogger m, Exception e) => e -> m a logInfoShow :: (HasCallStack, Show s, MonadLogger m) => s -> m () logErrorShow :: (HasCallStack, Show s, MonadLogger m) => s -> m () throwLeftM :: (HasCallStack, MonadMask m, MonadLogger m, Exception e) => m (Either e r) -> m r throwNothingM :: (HasCallStack, MonadLogger m, MonadCatch m) => m (Maybe r) -> m r data ErrMsg a ErrMsg :: String -> a -> ErrMsg a data OneBillionDollarBug OneBillionDollarBug :: OneBillionDollarBug instance GHC.Show.Show Util.IOExtra.OneBillionDollarBug instance GHC.Exception.Exception Util.IOExtra.OneBillionDollarBug instance GHC.Show.Show a => GHC.Show.Show (Util.IOExtra.ErrMsg a) instance GHC.Exception.Exception a => GHC.Exception.Exception (Util.IOExtra.ErrMsg a) module Util.Socket connectSocket :: ByteString -> Word16 -> IO Socket serverSocket :: ByteString -> IO (Socket, Word16) acceptSocket :: Socket -> IO Socket closeSock :: Socket -> IO () -- | Represents a socket. The fields are, respectively: -- -- -- -- If you are calling the MkSocket constructor directly you should -- ensure you have called withSocketsDo. data Socket :: * -- | This module was written based on -- http://hackage.haskell.org/package/reinterpret-cast-0.1.0/docs/src/Data-ReinterpretCast-Internal-ImplArray.html. -- -- Implements casting via a 1-elemnt STUArray, as described in -- http://stackoverflow.com/a/7002812/263061. module Util.FloatCast -- | Reinterpret-casts a Float to a Word32. floatToWord :: Float -> Word32 -- | Reinterpret-casts a Word32 to a Float. wordToFloat :: Word32 -> Float -- | Reinterpret-casts a Double to a Word64. doubleToWord :: Double -> Word64 -- | Reinterpret-casts a Word64 to a Double. wordToDouble :: Word64 -> Double module Util.Binary runGetA :: (Monad m) => (Int -> m ByteString) -> (ByteString -> m ()) -> Get a -> m (Either BinaryGetError a) data BinaryGetError BinaryGetError :: Int64 -> String -> BinaryGetError [position] :: BinaryGetError -> Int64 [message] :: BinaryGetError -> String runPutA :: (ByteString -> m ()) -> Put -> m () -- | Write a Float in big endian IEEE-754 format. putFloatbe :: Float -> Put -- | Write a Float in little endian IEEE-754 format. putFloatle :: Float -> Put -- | Write a Float in native in IEEE-754 format and host endian. putFloathost :: Float -> Put -- | Write a Double in big endian IEEE-754 format. putDoublebe :: Double -> Put -- | Write a Double in little endian IEEE-754 format. putDoublele :: Double -> Put -- | Write a Double in native in IEEE-754 format and host endian. putDoublehost :: Double -> Put putLength16beByteString :: ByteString -> Put putLength32beByteString :: ByteString -> Put putWithLength16be :: Put -> Put putWithLength32be :: Put -> Put putChar8 :: Char -> Put getChar8 :: Get Char -- | Read a Float in big endian IEEE-754 format. getFloatbe :: Get Float -- | Read a Float in little endian IEEE-754 format. getFloatle :: Get Float -- | Read a Float in IEEE-754 format and host endian. getFloathost :: Get Float -- | Read a Double in big endian IEEE-754 format. getDoublebe :: Get Double -- | Read a Double in little endian IEEE-754 format. getDoublele :: Get Double -- | Read a Double in IEEE-754 format and host endian. getDoublehost :: Get Double getLength8ByteString :: Get ByteString getLength16beByteString :: Get ByteString getLength32beByteString :: Get ByteString getWithLength16be :: Get a -> Get (a, Word16) matchWord8 :: Word8 -> Get () matchChar8 :: Char -> Get () instance GHC.Show.Show Util.Binary.BinaryGetError instance GHC.Exception.Exception Util.Binary.BinaryGetError module Util.BufferedIOx class BufferedIOx a readBuffered :: (BufferedIOx a, MonadIO m) => a -> Int -> m ByteString unreadBuffered :: (BufferedIOx a, MonadIO m) => a -> ByteString -> m () writeBuffered :: (BufferedIOx a, MonadIO m) => a -> ByteString -> m () closeBuffered :: (BufferedIOx a, MonadIO m) => a -> m () runGetBuffered :: (MonadIO m, BufferedIOx s, Binary a, MonadMask m, MonadLogger m) => s -> m a runPutBuffered :: (MonadIO m, BufferedIOx s, Binary a) => s -> a -> m () module Network.BufferedSocket data BufferedSocket makeBuffered :: Socket -> IO BufferedSocket socketPort :: BufferedSocket -> IO PortNumber instance Util.BufferedIOx.BufferedIOx Network.BufferedSocket.BufferedSocket module Foreign.Erlang.Term data Term putTerm :: (ToTerm t) => t -> Put getTerm :: Get Term class ToTerm a toTerm :: ToTerm a => a -> Term class FromTerm a fromTerm :: FromTerm a => Term -> Maybe a fromTermA :: (FromTerm a, Alternative m) => Term -> m a -- | Construct an integer integer :: Integer -> Term -- | A static/constant number. data SInteger (n :: Nat) SInteger :: SInteger -- | Construct a float float :: Double -> Term -- | Construct an atom atom :: ByteString -> Term -- | A static/constant atom. data SAtom (atom :: Symbol) SAtom :: SAtom -- | Construct a port port :: ByteString -> Word32 -> Word8 -> Term pid :: ByteString -> Word32 -> Word32 -> Word8 -> Pid newtype Pid MkPid :: Term -> Pid -- | Construct a tuple tuple :: [Term] -> Term newtype Tuple1 a Tuple1 :: a -> Tuple1 a -- | Construct a list string :: ByteString -> Term -- | Construct a list list :: [Term] -> Term -- | Construct an improper list (if Tail is not Nil) improperList :: [Term] -> Term -> Term -- | Construct a new reference ref :: ByteString -> Word8 -> [Word32] -> Term -- | Test if term is an integer is_integer :: Term -> Bool -- | Test if term is a float is_float :: Term -> Bool -- | Test if term is an atom is_atom :: Term -> Bool -- | Test if term is a reference is_reference :: Term -> Bool -- | Test if term is a port is_port :: Term -> Bool -- | Test if term is a pid is_pid :: Term -> Bool -- | Test if term is a tuple is_tuple :: Term -> Bool -- | Test if term is a map is_map :: Term -> Bool -- | Test if term is a list is_list :: Term -> Bool -- | Test if term is a binary is_binary :: Term -> Bool node :: Term -> Term atom_name :: Term -> ByteString length :: Term -> Int element :: Int -> Term -> Term to_string :: Term -> Maybe ByteString to_integer :: Term -> Maybe Integer match_atom :: Term -> ByteString -> Maybe ByteString match_tuple :: Term -> Maybe [Term] instance GHC.Classes.Ord a => GHC.Classes.Ord (Foreign.Erlang.Term.Tuple1 a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Foreign.Erlang.Term.Tuple1 a) instance GHC.Classes.Ord Foreign.Erlang.Term.Pid instance GHC.Classes.Eq Foreign.Erlang.Term.Pid instance Foreign.Erlang.Term.FromTerm Foreign.Erlang.Term.Pid instance Foreign.Erlang.Term.ToTerm Foreign.Erlang.Term.Pid instance GHC.Classes.Eq Foreign.Erlang.Term.Term instance GHC.Classes.Eq Foreign.Erlang.Term.MapEntry instance GHC.Classes.Ord Foreign.Erlang.Term.Term instance GHC.Classes.Ord Foreign.Erlang.Term.MapEntry instance GHC.Show.Show Foreign.Erlang.Term.Term instance GHC.Show.Show Foreign.Erlang.Term.MapEntry instance Data.String.IsString Foreign.Erlang.Term.Term instance Foreign.Erlang.Term.FromTerm Foreign.Erlang.Term.Term instance Foreign.Erlang.Term.ToTerm Foreign.Erlang.Term.Term instance Foreign.Erlang.Term.FromTerm () instance Foreign.Erlang.Term.FromTerm a => Foreign.Erlang.Term.FromTerm (Foreign.Erlang.Term.Tuple1 a) instance (Foreign.Erlang.Term.FromTerm a, Foreign.Erlang.Term.FromTerm b) => Foreign.Erlang.Term.FromTerm (a, b) instance (Foreign.Erlang.Term.FromTerm a, Foreign.Erlang.Term.FromTerm b, Foreign.Erlang.Term.FromTerm c) => Foreign.Erlang.Term.FromTerm (a, b, c) instance (Foreign.Erlang.Term.FromTerm a, Foreign.Erlang.Term.FromTerm b, Foreign.Erlang.Term.FromTerm c, Foreign.Erlang.Term.FromTerm d) => Foreign.Erlang.Term.FromTerm (a, b, c, d) instance (Foreign.Erlang.Term.FromTerm a, Foreign.Erlang.Term.FromTerm b, Foreign.Erlang.Term.FromTerm c, Foreign.Erlang.Term.FromTerm d, Foreign.Erlang.Term.FromTerm e) => Foreign.Erlang.Term.FromTerm (a, b, c, d, e) instance Foreign.Erlang.Term.ToTerm () instance Foreign.Erlang.Term.ToTerm a => Foreign.Erlang.Term.ToTerm (Foreign.Erlang.Term.Tuple1 a) instance (Foreign.Erlang.Term.ToTerm a, Foreign.Erlang.Term.ToTerm b) => Foreign.Erlang.Term.ToTerm (a, b) instance (Foreign.Erlang.Term.ToTerm a, Foreign.Erlang.Term.ToTerm b, Foreign.Erlang.Term.ToTerm c) => Foreign.Erlang.Term.ToTerm (a, b, c) instance (Foreign.Erlang.Term.ToTerm a, Foreign.Erlang.Term.ToTerm b, Foreign.Erlang.Term.ToTerm c, Foreign.Erlang.Term.ToTerm d) => Foreign.Erlang.Term.ToTerm (a, b, c, d) instance (Foreign.Erlang.Term.ToTerm a, Foreign.Erlang.Term.ToTerm b, Foreign.Erlang.Term.ToTerm c, Foreign.Erlang.Term.ToTerm d, Foreign.Erlang.Term.ToTerm e) => Foreign.Erlang.Term.ToTerm (a, b, c, d, e) instance Foreign.Erlang.Term.FromTerm GHC.Integer.Type.Integer instance Foreign.Erlang.Term.ToTerm GHC.Integer.Type.Integer instance Foreign.Erlang.Term.FromTerm GHC.Base.String instance Foreign.Erlang.Term.ToTerm GHC.Base.String instance GHC.TypeLits.KnownNat n => GHC.Show.Show (Foreign.Erlang.Term.SInteger n) instance GHC.TypeLits.KnownNat n => Foreign.Erlang.Term.FromTerm (Foreign.Erlang.Term.SInteger n) instance GHC.TypeLits.KnownNat n => Foreign.Erlang.Term.ToTerm (Foreign.Erlang.Term.SInteger n) instance GHC.TypeLits.KnownSymbol atom => GHC.Show.Show (Foreign.Erlang.Term.SAtom atom) instance GHC.TypeLits.KnownSymbol atom => Foreign.Erlang.Term.FromTerm (Foreign.Erlang.Term.SAtom atom) instance GHC.TypeLits.KnownSymbol atom => Foreign.Erlang.Term.ToTerm (Foreign.Erlang.Term.SAtom atom) instance GHC.Show.Show Foreign.Erlang.Term.Pid instance GHC.Show.Show a => GHC.Show.Show (Foreign.Erlang.Term.Tuple1 a) instance Data.Binary.Class.Binary Foreign.Erlang.Term.Term instance Data.Binary.Class.Binary Foreign.Erlang.Term.MapEntry instance Test.QuickCheck.Arbitrary.Arbitrary Foreign.Erlang.Term.Term instance Test.QuickCheck.Arbitrary.Arbitrary Foreign.Erlang.Term.Pid module Foreign.Erlang.NodeState data NodeState p n mb c logNodeState :: (Show n, MonadIO m, MonadLogger m) => NodeState p n mb c -> m () newNodeState :: IO (NodeState p n mb c) new_pid :: NodeState p n mb c -> IO (Word32, Word32) new_port :: NodeState p n mb c -> IO Word32 new_ref :: NodeState p n mb c -> IO (Word32, Word32, Word32) putMailboxForPid :: (Ord p) => NodeState p n mb c -> p -> mb -> IO () getMailboxForPid :: (Ord p) => NodeState p n mb c -> p -> IO (Maybe mb) putMailboxForName :: (Ord n) => NodeState p n mb c -> n -> mb -> IO () getMailboxForName :: (Ord n) => NodeState p n mb c -> n -> IO (Maybe mb) putConnectionForNode :: (Ord n) => NodeState p n mb c -> n -> c -> IO () getConnectionForNode :: (MonadIO m, Ord n) => NodeState p n mb c -> n -> m (Maybe c) removeConnectionForNode :: (Ord n) => NodeState p n mb c -> n -> IO () getConnectedNodes :: NodeState p n mb c -> IO [(n, c)] instance GHC.Show.Show (Foreign.Erlang.NodeState.NodeState p n mb c) module Foreign.Erlang.NodeData data DistributionVersion Zero :: DistributionVersion R4 :: DistributionVersion NeverUsed :: DistributionVersion R5C :: DistributionVersion R6 :: DistributionVersion R6B :: DistributionVersion matchDistributionVersion :: NodeData -> NodeData -> Maybe DistributionVersion data DistributionFlag PUBLISHED :: DistributionFlag ATOM_CACHE :: DistributionFlag EXTENDED_REFERENCES :: DistributionFlag DIST_MONITOR :: DistributionFlag FUN_TAGS :: DistributionFlag DIST_MONITOR_NAME :: DistributionFlag HIDDEN_ATOM_CACHE :: DistributionFlag NEW_FUN_TAGS :: DistributionFlag EXTENDED_PIDS_PORTS :: DistributionFlag EXPORT_PTR_TAG :: DistributionFlag BIT_BINARIES :: DistributionFlag NEW_FLOATS :: DistributionFlag UNICODE_IO :: DistributionFlag DIST_HDR_ATOM_CACHE :: DistributionFlag SMALL_ATOM_TAGS :: DistributionFlag UTF8_ATOMS :: DistributionFlag newtype DistributionFlags DistributionFlags :: [DistributionFlag] -> DistributionFlags data NodeType NormalNode :: NodeType HiddenNode :: NodeType data NodeProtocol TcpIpV4 :: NodeProtocol data NodeData NodeData :: Word16 -> NodeType -> NodeProtocol -> DistributionVersion -> DistributionVersion -> ByteString -> ByteString -> NodeData [portNo] :: NodeData -> Word16 [nodeType] :: NodeData -> NodeType [protocol] :: NodeData -> NodeProtocol [hiVer] :: NodeData -> DistributionVersion [loVer] :: NodeData -> DistributionVersion [aliveName] :: NodeData -> ByteString [extra] :: NodeData -> ByteString instance GHC.Show.Show Foreign.Erlang.NodeData.NodeData instance GHC.Classes.Eq Foreign.Erlang.NodeData.NodeData instance GHC.Enum.Bounded Foreign.Erlang.NodeData.NodeProtocol instance GHC.Enum.Enum Foreign.Erlang.NodeData.NodeProtocol instance GHC.Show.Show Foreign.Erlang.NodeData.NodeProtocol instance GHC.Classes.Eq Foreign.Erlang.NodeData.NodeProtocol instance GHC.Enum.Bounded Foreign.Erlang.NodeData.NodeType instance GHC.Enum.Enum Foreign.Erlang.NodeData.NodeType instance GHC.Show.Show Foreign.Erlang.NodeData.NodeType instance GHC.Classes.Eq Foreign.Erlang.NodeData.NodeType instance GHC.Show.Show Foreign.Erlang.NodeData.DistributionFlags instance GHC.Classes.Eq Foreign.Erlang.NodeData.DistributionFlags instance GHC.Classes.Ord Foreign.Erlang.NodeData.DistributionFlag instance GHC.Enum.Bounded Foreign.Erlang.NodeData.DistributionFlag instance GHC.Enum.Enum Foreign.Erlang.NodeData.DistributionFlag instance GHC.Show.Show Foreign.Erlang.NodeData.DistributionFlag instance GHC.Classes.Eq Foreign.Erlang.NodeData.DistributionFlag instance GHC.Arr.Ix Foreign.Erlang.NodeData.DistributionVersion instance GHC.Classes.Ord Foreign.Erlang.NodeData.DistributionVersion instance GHC.Enum.Bounded Foreign.Erlang.NodeData.DistributionVersion instance GHC.Enum.Enum Foreign.Erlang.NodeData.DistributionVersion instance GHC.Show.Show Foreign.Erlang.NodeData.DistributionVersion instance GHC.Classes.Eq Foreign.Erlang.NodeData.DistributionVersion instance Data.Binary.Class.Binary Foreign.Erlang.NodeData.DistributionVersion instance Data.Binary.Class.Binary Foreign.Erlang.NodeData.DistributionFlags instance Data.Binary.Class.Binary Foreign.Erlang.NodeData.NodeType instance Data.Binary.Class.Binary Foreign.Erlang.NodeData.NodeProtocol instance Data.Binary.Class.Binary Foreign.Erlang.NodeData.NodeData module Foreign.Erlang.Mailbox data Mailbox MkMailbox :: Pid -> TQueue Term -> Mailbox [self] :: Mailbox -> Pid [msgQueue] :: Mailbox -> TQueue Term deliverLink :: Mailbox -> Pid -> IO () deliverSend :: Mailbox -> Term -> IO () deliverExit :: Mailbox -> Pid -> Term -> IO () deliverUnlink :: Mailbox -> Pid -> IO () deliverRegSend :: Mailbox -> Pid -> Term -> IO () deliverGroupLeader :: Mailbox -> Pid -> IO () deliverExit2 :: Mailbox -> Pid -> Term -> IO () receive :: Mailbox -> IO Term module Foreign.Erlang.Epmd -- | List all registered nodes epmdNames :: (MonadMask m, MonadResource m, MonadLogger m) => ByteString -> m NamesResponse data NamesResponse NamesResponse :: Word16 -> [NodeInfo] -> NamesResponse -- | Lookup a node lookupNode :: (MonadMask m, MonadResource m, MonadLogger m) => ByteString -> ByteString -> m (Maybe NodeData) -- | Register a node with an epmd; as long as the TCP connection is open, -- the registration is considered valid. registerNode :: (MonadResource m, MonadLogger m, MonadMask m) => NodeData -> ByteString -> (NodeRegistration -> m a) -> m a data NodeRegistration instance GHC.Show.Show Foreign.Erlang.Epmd.NodeAlreadyRegistered instance GHC.Show.Show Foreign.Erlang.Epmd.RegisterNodeResponse instance GHC.Classes.Eq Foreign.Erlang.Epmd.RegisterNodeResponse instance GHC.Show.Show Foreign.Erlang.Epmd.RegisterNodeRequest instance GHC.Classes.Eq Foreign.Erlang.Epmd.RegisterNodeRequest instance GHC.Show.Show Foreign.Erlang.Epmd.LookupNodeResponse instance GHC.Classes.Eq Foreign.Erlang.Epmd.LookupNodeResponse instance GHC.Show.Show Foreign.Erlang.Epmd.LookupNodeRequest instance GHC.Classes.Eq Foreign.Erlang.Epmd.LookupNodeRequest instance GHC.Show.Show Foreign.Erlang.Epmd.NamesResponse instance GHC.Classes.Eq Foreign.Erlang.Epmd.NamesResponse instance GHC.Show.Show Foreign.Erlang.Epmd.NodeInfo instance GHC.Classes.Eq Foreign.Erlang.Epmd.NodeInfo instance GHC.Show.Show Foreign.Erlang.Epmd.NamesRequest instance GHC.Classes.Eq Foreign.Erlang.Epmd.NamesRequest instance Data.Binary.Class.Binary Foreign.Erlang.Epmd.NamesRequest instance Data.Binary.Class.Binary Foreign.Erlang.Epmd.NamesResponse instance Data.Binary.Class.Binary Foreign.Erlang.Epmd.LookupNodeRequest instance Data.Binary.Class.Binary Foreign.Erlang.Epmd.LookupNodeResponse instance Data.Binary.Class.Binary Foreign.Erlang.Epmd.RegisterNodeRequest instance Data.Binary.Class.Binary Foreign.Erlang.Epmd.RegisterNodeResponse instance GHC.Exception.Exception Foreign.Erlang.Epmd.NodeAlreadyRegistered module Foreign.Erlang.Digest genChallenge :: IO Word32 genDigest :: Word32 -> ByteString -> ByteString module Foreign.Erlang.Handshake data HandshakeData HandshakeData :: Name -> NodeData -> ByteString -> HandshakeData [name] :: HandshakeData -> Name [nodeData] :: HandshakeData -> NodeData [cookie] :: HandshakeData -> ByteString doConnect :: (MonadCatch m, MonadIO m) => (forall o. Binary o => o -> m ()) -> (forall i. (Binary i) => m i) -> HandshakeData -> m () doAccept :: (MonadCatch m, MonadIO m) => (forall o. Binary o => o -> m ()) -> (forall i. (Binary i) => m i) -> HandshakeData -> m ByteString data Name Name :: DistributionVersion -> DistributionFlags -> ByteString -> Name [n_distVer] :: Name -> DistributionVersion [n_distFlags] :: Name -> DistributionFlags [n_nodeName] :: Name -> ByteString data Status Ok :: Status OkSimultaneous :: Status Nok :: Status NotAllowed :: Status Alive :: Status data Challenge Challenge :: DistributionVersion -> DistributionFlags -> Word32 -> ByteString -> Challenge [c_distVer] :: Challenge -> DistributionVersion [c_distFlags] :: Challenge -> DistributionFlags [c_challenge] :: Challenge -> Word32 [c_nodeName] :: Challenge -> ByteString data ChallengeReply ChallengeReply :: Word32 -> ByteString -> ChallengeReply [cr_challenge] :: ChallengeReply -> Word32 [cr_digest] :: ChallengeReply -> ByteString data ChallengeAck ChallengeAck :: ByteString -> ChallengeAck [ca_digest] :: ChallengeAck -> ByteString instance GHC.Show.Show Foreign.Erlang.Handshake.CookieMismatch instance GHC.Show.Show Foreign.Erlang.Handshake.DistributionVersionMismatch instance GHC.Show.Show Foreign.Erlang.Handshake.BadHandshakeStatus instance GHC.Show.Show Foreign.Erlang.Handshake.ChallengeAck instance GHC.Classes.Eq Foreign.Erlang.Handshake.ChallengeAck instance GHC.Show.Show Foreign.Erlang.Handshake.ChallengeReply instance GHC.Classes.Eq Foreign.Erlang.Handshake.ChallengeReply instance GHC.Show.Show Foreign.Erlang.Handshake.Challenge instance GHC.Classes.Eq Foreign.Erlang.Handshake.Challenge instance GHC.Enum.Enum Foreign.Erlang.Handshake.Status instance GHC.Enum.Bounded Foreign.Erlang.Handshake.Status instance GHC.Show.Show Foreign.Erlang.Handshake.Status instance GHC.Classes.Eq Foreign.Erlang.Handshake.Status instance GHC.Show.Show Foreign.Erlang.Handshake.Name instance GHC.Classes.Eq Foreign.Erlang.Handshake.Name instance Data.Binary.Class.Binary Foreign.Erlang.Handshake.Name instance Data.Binary.Class.Binary Foreign.Erlang.Handshake.Status instance Data.Binary.Class.Binary Foreign.Erlang.Handshake.Challenge instance Data.Binary.Class.Binary Foreign.Erlang.Handshake.ChallengeReply instance Data.Binary.Class.Binary Foreign.Erlang.Handshake.ChallengeAck instance GHC.Exception.Exception Foreign.Erlang.Handshake.BadHandshakeStatus instance GHC.Exception.Exception Foreign.Erlang.Handshake.DistributionVersionMismatch instance GHC.Exception.Exception Foreign.Erlang.Handshake.CookieMismatch module Foreign.Erlang.ControlMessage data ControlMessage TICK :: ControlMessage LINK :: Pid -> Pid -> ControlMessage SEND :: Pid -> Term -> ControlMessage EXIT :: Pid -> Pid -> Term -> ControlMessage UNLINK :: Pid -> Pid -> ControlMessage NODE_LINK :: ControlMessage REG_SEND :: Pid -> Term -> Term -> ControlMessage GROUP_LEADER :: Pid -> Pid -> ControlMessage EXIT2 :: Pid -> Pid -> Term -> ControlMessage instance GHC.Show.Show Foreign.Erlang.ControlMessage.ControlMessage instance GHC.Classes.Eq Foreign.Erlang.ControlMessage.ControlMessage instance Data.Binary.Class.Binary Foreign.Erlang.ControlMessage.ControlMessage instance Test.QuickCheck.Arbitrary.Arbitrary Foreign.Erlang.ControlMessage.ControlMessage module Foreign.Erlang.Connection data Connection newConnection :: (MonadLoggerIO m, MonadMask m, MonadBaseControl IO m, BufferedIOx s) => s -> NodeState Pid Term Mailbox Connection -> Term -> m Connection sendControlMessage :: MonadIO m => ControlMessage -> Connection -> m () module Foreign.Erlang.LocalNode data LocalNode data NodeT m a data LocalNodeConfig LocalNodeConfig :: String -> String -> String -> LocalNodeConfig askCreation :: Monad m => NodeT m Word8 askNodeName :: Monad m => NodeT m ByteString askNodeState :: Monad m => NodeT m (NodeState Pid Term Mailbox Connection) askNodeRegistration :: Monad m => NodeT m NodeRegistration askLocalNode :: Monad m => NodeT m LocalNode runNodeT :: forall m a. (MonadResource m, MonadThrow m, MonadMask m, MonadLogger m, MonadLoggerIO m, MonadBaseControl IO m) => LocalNodeConfig -> NodeT m a -> m a make_pid :: MonadIO m => NodeT m Pid make_ref :: (MonadIO m) => NodeT m Term make_port :: (MonadIO m) => NodeT m Term make_mailbox :: (MonadResource m) => NodeT m Mailbox register_pid :: (MonadIO m) => Term -> Pid -> NodeT m Bool send :: (MonadMask m, MonadBaseControl IO m, MonadResource m, MonadLoggerIO m) => Pid -> Term -> NodeT m () sendReg :: (MonadMask m, MonadBaseControl IO m, MonadResource m, MonadLoggerIO m) => Mailbox -> Term -> Term -> Term -> NodeT m () instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Foreign.Erlang.LocalNode.NodeT m) instance Control.Monad.Logger.MonadLogger m => Control.Monad.Logger.MonadLogger (Foreign.Erlang.LocalNode.NodeT m) instance Control.Monad.Catch.MonadMask m => Control.Monad.Catch.MonadMask (Foreign.Erlang.LocalNode.NodeT m) instance Control.Monad.Catch.MonadThrow m => Control.Monad.Catch.MonadThrow (Foreign.Erlang.LocalNode.NodeT m) instance Control.Monad.Catch.MonadCatch m => Control.Monad.Catch.MonadCatch (Foreign.Erlang.LocalNode.NodeT m) instance GHC.Base.Monad m => GHC.Base.Monad (Foreign.Erlang.LocalNode.NodeT m) instance GHC.Base.Applicative m => GHC.Base.Applicative (Foreign.Erlang.LocalNode.NodeT m) instance GHC.Base.Functor m => GHC.Base.Functor (Foreign.Erlang.LocalNode.NodeT m) instance GHC.Show.Show Foreign.Erlang.LocalNode.LocalNodeConfig instance (Control.Monad.Base.MonadBase GHC.Types.IO (Foreign.Erlang.LocalNode.NodeT m), Control.Monad.Trans.Resource.Internal.MonadResource m) => Control.Monad.Trans.Resource.Internal.MonadResource (Foreign.Erlang.LocalNode.NodeT m) instance Control.Monad.Logger.MonadLoggerIO m => Control.Monad.Logger.MonadLoggerIO (Foreign.Erlang.LocalNode.NodeT m) instance Control.Monad.Base.MonadBase b m => Control.Monad.Base.MonadBase b (Foreign.Erlang.LocalNode.NodeT m) instance Control.Monad.Trans.Control.MonadBaseControl b m => Control.Monad.Trans.Control.MonadBaseControl b (Foreign.Erlang.LocalNode.NodeT m)