module Network.Zyre2.Configuration where
import Data.Text (Text)
import qualified Data.Text as T
import Foreign.C.String (newCString)
import Foreign.Marshal.Alloc (free)
import Network.Zyre2.Bindings
( zyreSetEvasiveTimeout,
zyreSetExpiredTimeout,
zyreSetHeader,
zyreSetInterface,
zyreSetInterval,
zyreSetName,
zyreSetPort,
zyreSetSilentTimeout,
zyreSetVerbose,
)
import Network.Zyre2.Types (ZCreated, ZyreContext (ZyreContext), unlessStale)
setName :: ZyreContext ZCreated -> Text -> IO ()
setName :: ZyreContext ZCreated -> Text -> IO ()
setName zctx :: ZyreContext ZCreated
zctx@(ZyreContext Ptr ()
ptr IORef Bool
_ IORef (Map Text Text)
_) Text
name = ZyreContext ZCreated -> IO () -> IO ()
forall s a. ZyreContext s -> IO a -> IO a
unlessStale ZyreContext ZCreated
zctx (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ do
CString
cname <- String -> IO CString
newCString (Text -> String
T.unpack Text
name)
Ptr () -> CString -> IO ()
zyreSetName Ptr ()
ptr CString
cname
CString -> IO ()
forall a. Ptr a -> IO ()
free CString
cname
setHeader :: ZyreContext ZCreated -> Text -> Text -> IO ()
zctx :: ZyreContext ZCreated
zctx@(ZyreContext Ptr ()
ptr IORef Bool
_ IORef (Map Text Text)
_) Text
headerName Text
headerValue = ZyreContext ZCreated -> IO () -> IO ()
forall s a. ZyreContext s -> IO a -> IO a
unlessStale ZyreContext ZCreated
zctx (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ do
CString
cheaderName <- String -> IO CString
newCString (Text -> String
T.unpack Text
headerName)
CString
cheaderValue <- String -> IO CString
newCString (Text -> String
T.unpack Text
headerValue)
Ptr () -> CString -> CString -> IO ()
zyreSetHeader Ptr ()
ptr CString
cheaderName CString
cheaderValue
CString -> IO ()
forall a. Ptr a -> IO ()
free CString
cheaderName
CString -> IO ()
forall a. Ptr a -> IO ()
free CString
cheaderValue
setVerbose :: ZyreContext ZCreated -> IO ()
setVerbose :: ZyreContext ZCreated -> IO ()
setVerbose zctx :: ZyreContext ZCreated
zctx@(ZyreContext Ptr ()
ptr IORef Bool
_ IORef (Map Text Text)
_) = ZyreContext ZCreated -> IO () -> IO ()
forall s a. ZyreContext s -> IO a -> IO a
unlessStale ZyreContext ZCreated
zctx (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ do
Ptr () -> IO ()
zyreSetVerbose Ptr ()
ptr
setPort :: ZyreContext ZCreated -> Int -> IO ()
setPort :: ZyreContext ZCreated -> Int -> IO ()
setPort zctx :: ZyreContext ZCreated
zctx@(ZyreContext Ptr ()
ptr IORef Bool
_ IORef (Map Text Text)
_) Int
port = ZyreContext ZCreated -> IO () -> IO ()
forall s a. ZyreContext s -> IO a -> IO a
unlessStale ZyreContext ZCreated
zctx (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ do
Ptr () -> CInt -> IO ()
zyreSetPort Ptr ()
ptr (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
port)
setEvasiveTimeout :: ZyreContext ZCreated -> Int -> IO ()
setEvasiveTimeout :: ZyreContext ZCreated -> Int -> IO ()
setEvasiveTimeout zctx :: ZyreContext ZCreated
zctx@(ZyreContext Ptr ()
ptr IORef Bool
_ IORef (Map Text Text)
_) Int
timeout = ZyreContext ZCreated -> IO () -> IO ()
forall s a. ZyreContext s -> IO a -> IO a
unlessStale ZyreContext ZCreated
zctx (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ do
Ptr () -> CInt -> IO ()
zyreSetEvasiveTimeout Ptr ()
ptr (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
timeout)
setSilentTimeout :: ZyreContext ZCreated -> Int -> IO ()
setSilentTimeout :: ZyreContext ZCreated -> Int -> IO ()
setSilentTimeout zctx :: ZyreContext ZCreated
zctx@(ZyreContext Ptr ()
ptr IORef Bool
_ IORef (Map Text Text)
_) Int
timeout = ZyreContext ZCreated -> IO () -> IO ()
forall s a. ZyreContext s -> IO a -> IO a
unlessStale ZyreContext ZCreated
zctx (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ do
Ptr () -> CInt -> IO ()
zyreSetSilentTimeout Ptr ()
ptr (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
timeout)
setExpiredTimeout :: ZyreContext ZCreated -> Int -> IO ()
setExpiredTimeout :: ZyreContext ZCreated -> Int -> IO ()
setExpiredTimeout zctx :: ZyreContext ZCreated
zctx@(ZyreContext Ptr ()
ptr IORef Bool
_ IORef (Map Text Text)
_) Int
timeout = ZyreContext ZCreated -> IO () -> IO ()
forall s a. ZyreContext s -> IO a -> IO a
unlessStale ZyreContext ZCreated
zctx (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ do
Ptr () -> CInt -> IO ()
zyreSetExpiredTimeout Ptr ()
ptr (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
timeout)
setInterval :: ZyreContext ZCreated -> Int -> IO ()
setInterval :: ZyreContext ZCreated -> Int -> IO ()
setInterval zctx :: ZyreContext ZCreated
zctx@(ZyreContext Ptr ()
ptr IORef Bool
_ IORef (Map Text Text)
_) Int
interval = ZyreContext ZCreated -> IO () -> IO ()
forall s a. ZyreContext s -> IO a -> IO a
unlessStale ZyreContext ZCreated
zctx (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ do
Ptr () -> CInt -> IO ()
zyreSetInterval Ptr ()
ptr (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
interval)
setInterface :: ZyreContext ZCreated -> Text -> IO ()
setInterface :: ZyreContext ZCreated -> Text -> IO ()
setInterface zctx :: ZyreContext ZCreated
zctx@(ZyreContext Ptr ()
ptr IORef Bool
_ IORef (Map Text Text)
_) Text
interface = ZyreContext ZCreated -> IO () -> IO ()
forall s a. ZyreContext s -> IO a -> IO a
unlessStale ZyreContext ZCreated
zctx (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ do
CString
cinterface <- String -> IO CString
newCString (Text -> String
T.unpack Text
interface)
Ptr () -> CString -> IO ()
zyreSetInterface Ptr ()
ptr CString
cinterface
CString -> IO ()
forall a. Ptr a -> IO ()
free CString
cinterface