-- 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:
--
--
-- - File descriptor
-- - Socket family
-- - Socket type
-- - Protocol number
-- - Status flag
--
--
-- 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)