{-# LANGUAGE OverloadedStrings, ScopedTypeVariables #-}
import Data.Conduit.Pool (Pool, createPool)
import Network.Riak (defaultClient, connect, disconnect,
Client(port), Connection)
import qualified Data.Attoparsec.ByteString.Char8 as AttoC
import qualified Data.ByteString.Char8 as S
import Control.Monad
import Control.Exception (assert)
import System.ZMQ as ZMQ
import System.IO
import Data.Word (Word8)
import Data.Maybe
import qualified Data.ByteString.Lazy.Char8 as B
import qualified Data.ByteString.Lazy as BW
import Text.ProtocolBuffers.Basic (toUtf8)
import Text.ProtocolBuffers.WireMessage (messageGet, messagePut, Wire)
import Text.ProtocolBuffers.Reflections (ReflectDescriptor)
import Network.Riak.MontageClient as MO
import Utils
import Proto.User.UserInfo as UI
import Proto.User.UserEvent as UE
import Proto.User.UserName as UN
threadCount :: Int
threadCount = 1
main :: IO ()
main = do
ctx <- ZMQ.init 1
-- Montage ZeroMQ
montageZpool <- createPool (do
s <- ZMQ.socket ctx Req
ZMQ.connect s "tcp://localhost:7078"
return s
) ZMQ.close 1 5 threadCount
let ui = generateUI (1,2)
_ <- montagePut montageZpool ui
let ue = generateUE (2,3)
_ <- montagePut montageZpool ue
let un = generateUN (2, "montage")
_ <- montagePut montageZpool un
(subKey, valuesFound) <- montageGetBy' montageZpool "u-info" (putDecimal 1) ["u-event", "u-name"]
assert ((data' $ fromMaybe (error "failed get subKey") subKey) == data' ui) $ return ()
assert (length valuesFound == 2) $ return ()
assert (and $ map isJust valuesFound) $ return ()
let [Just ueFound, Just unFound] = valuesFound
assert ((data' ueFound == data' ue) && (data' unFound == data' un)) $ return ()
hPutStrLn stdout "\nsuccessfully did reference get\n"