Browse Source

Cleanup

master
Denis Tereshkin 9 years ago
parent
commit
54de94ada7
  1. 7
      src/Data/ATrade.hs
  2. 4
      src/QuoteSource/DataImport.hs
  3. 3
      src/QuoteSource/Server.hs

7
src/Data/ATrade.hs

@ -61,12 +61,11 @@ data Tick = Tick {
} deriving (Show, Eq) } deriving (Show, Eq)
serializeTick :: Tick -> [ByteString] serializeTick :: Tick -> [ByteString]
serializeTick tick = do serializeTick tick = header : [rawdata]
header : [rawdata]
where where
header = B.fromChunks [ E.encodeUtf8 . T.pack $ security tick ] header = B.fromChunks [ E.encodeUtf8 . T.pack $ security tick ]
rawdata = toLazyByteString $ mconcat [ rawdata = toLazyByteString $ mconcat [
putWord32le $ fromIntegral 1, putWord32le 1,
putWord64le $ fromIntegral . toSeconds . timestamp $ tick, putWord64le $ fromIntegral . toSeconds . timestamp $ tick,
putWord32le $ fromIntegral . truncate . (* 1000000) . fractionalPart . utctDayTime . timestamp $ tick, putWord32le $ fromIntegral . truncate . (* 1000000) . fractionalPart . utctDayTime . timestamp $ tick,
putWord32le $ fromIntegral . fromEnum . datatype $ tick, putWord32le $ fromIntegral . fromEnum . datatype $ tick,
@ -74,5 +73,5 @@ serializeTick tick = do
putWord32le $ truncate . (* 1000000000) . fractionalPart $ value tick, putWord32le $ truncate . (* 1000000000) . fractionalPart $ value tick,
putWord32le $ fromIntegral $ volume tick ] putWord32le $ fromIntegral $ volume tick ]
fractionalPart :: (RealFrac a) => a -> a fractionalPart :: (RealFrac a) => a -> a
fractionalPart x = x - (fromIntegral (floor x)) fractionalPart x = x - fromIntegral (floor x)

4
src/QuoteSource/DataImport.hs

@ -30,8 +30,8 @@ ddeCallback state topic table = do
Just (MkTableParser myParser) -> do Just (MkTableParser myParser) -> do
timeHint <- getCurrentTime timeHint <- getCurrentTime
let stateWithTimeHint = giveTimestampHint myParser timeHint let stateWithTimeHint = giveTimestampHint myParser timeHint
let (ticks, newState) = runState (parseXlTable table) $ stateWithTimeHint let (ticks, newState) = runState (parseXlTable table) stateWithTimeHint
modifyIORef (parsers state) (\m -> M.insert topic (MkTableParser newState) m) modifyIORef (parsers state) (M.insert topic (MkTableParser newState))
writeList2Chan (tickChannel state) ticks writeList2Chan (tickChannel state) ticks
return True return True
_ -> return False _ -> return False

3
src/QuoteSource/Server.hs

@ -16,8 +16,7 @@ data QuoteSourceServer = QuoteSourceServerState {
} }
serverThread :: QuoteSourceServer -> IO () serverThread :: QuoteSourceServer -> IO ()
serverThread state = do serverThread state = finally serverThread' cleanup
finally serverThread' cleanup
where where
cleanup = close $ outSocket state cleanup = close $ outSocket state

Loading…
Cancel
Save