3 changed files with 17 additions and 8 deletions
@ -1,14 +1,26 @@ |
|||||||
|
|
||||||
module ATrade.MDS.HistoryServer ( |
module ATrade.MDS.HistoryServer ( |
||||||
|
startHistoryServer, |
||||||
|
stopHistoryServer |
||||||
) where |
) where |
||||||
|
|
||||||
import System.ZMQ4 |
import System.ZMQ4 |
||||||
import ATrade.MDS.Database |
import ATrade.MDS.Database |
||||||
import Control.Concurrent |
import Control.Concurrent |
||||||
|
|
||||||
data HistoryServer = HistoryServer ThreadId |
data HistoryServer = HistoryServer (MVar ()) (MVar ()) ThreadId |
||||||
} |
|
||||||
|
|
||||||
startHistoryServer :: DatabaseInterface -> Context -> IO HistoryServer |
startHistoryServer :: DatabaseInterface -> Context -> IO HistoryServer |
||||||
startHistoryServer db ctx = do |
startHistoryServer db ctx = do |
||||||
|
sock <- socket ctx Router |
||||||
|
killMv <- newEmptyMVar |
||||||
|
compMv <- newEmptyMVar |
||||||
|
tid <- forkFinally (serverThread sock killMv compMv) (cleanup sock killMv compMv) |
||||||
|
return $ HistoryServer killMv compMv tid |
||||||
|
where |
||||||
|
serverThread sock killMv compMv = undefined |
||||||
|
cleanup sock killMv compMv = undefined |
||||||
|
|
||||||
|
stopHistoryServer :: HistoryServer -> IO () |
||||||
|
stopHistoryServer (HistoryServer killMv compMv tid) = putMVar killMv () >> killThread tid >> readMVar compMv |
||||||
|
|
||||||
|
|||||||
Loading…
Reference in new issue