neko-obfs-0.1.0.0: src/Helper.hs
{-# LANGUAGE OverloadedStrings #-}
-- |
module Helper where
import Control.Lens
import Prelude hiding ((-), log)
import Control.Concurrent.MVar (withMVar)
import Control.Monad (forever, when)
import Control.Monad.IO.Class (MonadIO(..))
import Data.ByteString (ByteString)
import qualified Data.ByteString as B
import Data.Monoid ((<>))
import Data.Text (Text)
import qualified Data.Text.IO as T
import Data.Text.Strict.Lens
import Pipes (Pipe, for, cat, yield)
import Pipes.Safe (catchP)
import Unsafe (logLock)
{-# INLINE (-) #-}
infixr 0 -
(-) :: (a -> b) -> a -> b
f - x = f x
sync :: MonadIO m => IO a -> m a
sync io = liftIO - withMVar logLock - const io
log :: MonadIO m => Text -> m ()
log x = sync - T.putStrLn x