packages feed

second-transfer-0.10.0.1: hs-src/SecondTransfer/MainLoop/DebugMonitor.hs

{-# LANGUAGE OverloadedStrings, DeriveGeneric #-}
module SecondTransfer.MainLoop.DebugMonitor (
    -- This is a simple monitoring utility..
#ifdef SECONDTRANSFER_MONITORING
                 incCounter
#endif
     ) where


#ifdef SECONDTRANSFER_MONITORING
import           Control.Concurrent.MVar
import           Control.Concurrent
import           Control.Concurrent.Chan

import           Control.Monad             (unless)

import           Data.IORef
import           Data.String
import           System.IO                 (stderr,openFile)
import qualified System.IO                 as SIO
import qualified Data.ByteString           as B
import qualified Data.ByteString.Char8     as Bch

import           System.IO.Unsafe          (unsafePerformIO)
import           System.Clock              as Cl
import           System.Posix.Files
import qualified Database.Redis            as R


{-# NOINLINE outputHandle  #-}
outputHandle :: IORef R.Connection
outputHandle = unsafePerformIO $ do
    let
        conn_info = R.defaultConnectInfo {
            R.connectDatabase = 3 -- Let's take this cone
            }
    conn <- R.connect conn_info
    R.runRedis conn $ R.flushdb
    newIORef conn

incCounter :: B.ByteString -> IO ()
incCounter keyname = do
    conn <- readIORef outputHandle
    R.runRedis conn (R.incr keyname)
    return ()

#endif