Built and tested with ghc 7.4.1
Install the non-hackage dependencies:
git clone git@github.com:wmoss/StatsWeb.git cd StatsWeb && cabal install git clone git@github.com:bumptech/riak-haskell-client.git cd riak-haskell-client && cabal install
From montage-haskell-client/ execute:
cabal install
We recommend using a sandbox, hsenv is particularly good.
To setup montage itself, see http://github.com/bumptech/montage
The montage proxy is port configurable (here given the Config handle set to 7078), with riak running on 8087:
import Network.Riak (defaultClient, connect, disconnect, Client(port), Connection) import Data.Conduit.Pool (Pool, createPool) import Network.Riak.Montage main :: IO () main = do mainPool <- createPool (connect $ defaultClient {port = "8087"}) disconnect 1 -- stripes 10 -- timeout 300 -- max connections let cfg' = cfg { proxyPort = 7078 } runDaemon (cfg' :: Config ResObject) mainPool
See montage for how to define resolutions for a resolution object (ResObject), which is also required to start the proxy.
Your client's request pool must connect (not bind) to that port:
import Data.Conduit.Pool (Pool, createPool) import System.ZMQ as ZMQ import Network.Riak.MontageClient montageZpool <- createPool (do s <- ZMQ.socket ctx Req ZMQ.connect s "tcp://localhost:7078" return s ) ZMQ.close 1 5 1 let (bucket, key) = ("u-info", "1") resp <- montageGet montageZpool bucket key
See Examples and More for full documentation of client requests.
To setup the examples, first download hprotoc:
cabal install hprotoc
Then execute:
cd examples && hprotoc user.proto
You must have montage installed to run the basic proxy which the examples talk with. In your external montage/ directory:
cd examples && runhaskell basic_proxy.hs
See github.com/bumptech/montage for more on the montage haskell setup.
To run the examples, in examples/ execute:
runhaskell Resolution.hs -- a basic last write wins resolution runhaskell Delete.hs -- tests a delete after a put runhaskell Many.hs -- asserts the identity of put many -> get many runhaskell Reference.hs -- a basic, multi-target reference get
See the haddock documentation for type-signatures, descriptions, and source of client functions.