asif 2.0.0 → 3.0.0
raw patch · 13 files changed
+40/−47 lines, 13 filesdep +hw-ipdep −arbor-ipnew-uploaderPVP ok
version bump matches the API change (PVP)
Dependencies added: hw-ip
Dependencies removed: arbor-ip
API changes (from Hackage documentation)
- Arbor.File.Format.Asif.ByteString.Builder: segmentsC :: (MonadIO m, MonadResource m) => String -> Maybe POSIXTime -> [Segment Handle] -> m (Source m ByteString)
+ Arbor.File.Format.Asif.ByteString.Builder: segmentsC :: (MonadIO m, MonadResource m) => String -> Maybe POSIXTime -> [Segment Handle] -> m (ConduitT () ByteString m ())
- Arbor.File.Format.Asif.ByteString.Builder: segmentsRawC :: MonadIO m => String -> [Handle] -> Source m ByteString
+ Arbor.File.Format.Asif.ByteString.Builder: segmentsRawC :: MonadIO m => String -> [Handle] -> ConduitT () ByteString m ()
Files
- app/App/Commands.hs +1/−1
- app/App/Commands/Dump.hs +2/−2
- app/App/Commands/EncodeFiles.hs +1/−1
- app/App/Commands/ExtractFiles.hs +1/−1
- app/App/Commands/ExtractSegments.hs +1/−1
- app/Main.hs +1/−1
- asif.cabal +17/−18
- src/Arbor/File/Format/Asif/ByIndex.hs +5/−5
- src/Arbor/File/Format/Asif/ByteString/Builder.hs +3/−4
- src/Arbor/File/Format/Asif/Get.hs +1/−1
- src/Arbor/File/Format/Asif/Segment.hs +1/−1
- src/Arbor/File/Format/Asif/Type.hs +1/−1
- test/Gen/Feed.hs +5/−10
app/App/Commands.hs view
@@ -6,7 +6,7 @@ import App.Commands.EncodeFiles import App.Commands.ExtractFiles import App.Commands.ExtractSegments-import Data.Monoid+import Data.Monoid ((<>)) import Options.Applicative globalOptions :: Parser (IO ())
app/App/Commands/Dump.hs view
@@ -18,7 +18,7 @@ import Data.Generics.Product.Any import Data.List import Data.Maybe-import Data.Monoid+import Data.Monoid ((<>)) import Data.Thyme.Clock import Data.Thyme.Clock.POSIX (POSIXTime) import Data.Thyme.Format (formatTime)@@ -95,7 +95,7 @@ Just (Known F.TimeMillis64LE) -> forM_ (LBS.chunkBy 8 (segment ^. the @"payload")) $ \bs -> do let w = G.runGet G.getInt64le (LBS.take 8 (bs <> LBS.replicate 8 0))- let t :: POSIXTime = (w `div` 1000) ^. from microseconds+ let t :: POSIXTime = (w * 1000) ^. from microseconds liftIO $ IO.hPutStrLn hOut $ showTime (posixSecondsToUTCTime t) <> " (" <> show w <> " ms)" Just (Known F.TimeMicros64LE) -> forM_ (LBS.chunkBy 8 (segment ^. the @"payload")) $ \bs -> do
app/App/Commands/EncodeFiles.hs view
@@ -13,7 +13,7 @@ import Control.Monad.IO.Class (liftIO) import Control.Monad.Trans.Resource (MonadResource, runResourceT) import Data.Generics.Product.Any-import Data.Monoid+import Data.Monoid ((<>)) import Options.Applicative import qualified Data.ByteString as BS
app/App/Commands/ExtractFiles.hs view
@@ -14,7 +14,7 @@ import Data.Generics.Product.Any import Data.List import Data.Maybe-import Data.Monoid+import Data.Monoid ((<>)) import Options.Applicative import System.Directory
app/App/Commands/ExtractSegments.hs view
@@ -12,7 +12,7 @@ import Control.Monad.IO.Class (liftIO) import Control.Monad.Trans.Resource (MonadResource, runResourceT) import Data.Generics.Product.Any-import Data.Monoid+import Data.Monoid ((<>)) import Options.Applicative import System.Directory import Text.Printf
app/Main.hs view
@@ -4,7 +4,7 @@ import App.Commands import Control.Monad-import Data.Semigroup+import Data.Semigroup ((<>)) import Options.Applicative import qualified System.IO as IO
asif.cabal view
@@ -1,11 +1,9 @@--- This file has been generated from package.yaml by hpack version 0.28.2.+-- This file has been generated from package.yaml by hpack version 0.18.1. -- -- see: https://github.com/sol/hpack------ hash: de051b0b916332afc5b6b544ffaf3c0cabbf5c7dbc32317927f1dbe7b6e0c55c name: asif-version: 2.0.0+version: 3.0.0 description: Please see the README on Github at <https://github.com/packetloop/asif#readme> category: Services homepage: https://github.com/packetloop/asif#readme@@ -17,6 +15,7 @@ license-file: LICENSE build-type: Simple cabal-version: >= 1.10+ extra-source-files: ChangeLog.md README.md@@ -31,8 +30,8 @@ default-extensions: BangPatterns FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving MultiParamTypeClasses OverloadedStrings TupleSections ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints build-depends:- attoparsec- , base >=4.7 && <5+ base >= 4.7 && < 5+ , attoparsec , binary , bytestring , conduit@@ -44,6 +43,7 @@ , exceptions , generic-lens , hw-bits+ , hw-ip , iproute , lens , old-locale@@ -81,9 +81,8 @@ default-extensions: BangPatterns FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving MultiParamTypeClasses OverloadedStrings TupleSections ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -threaded -rtsopts -O2 -msse4.2 build-depends:- asif+ base >= 4.7 && < 5 , attoparsec- , base >=4.7 && <5 , binary , bytestring , conduit@@ -91,20 +90,22 @@ , conduit-extra , containers , cpu- , directory , either , exceptions , generic-lens , hw-bits+ , hw-ip , iproute , lens , old-locale- , optparse-applicative , resourcet , temporary-resourcet , text , thyme , vector+ , asif+ , directory+ , optparse-applicative other-modules: App.Commands App.Commands.Dump@@ -113,7 +114,6 @@ App.Commands.ExtractSegments App.Commands.Options.Type App.IO- Paths_asif default-language: Haskell2010 test-suite asif-test@@ -124,10 +124,8 @@ default-extensions: BangPatterns FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving MultiParamTypeClasses OverloadedStrings TupleSections ghc-options: -threaded -rtsopts -with-rtsopts=-N build-depends:- arbor-ip- , asif+ base >= 4.7 && < 5 , attoparsec- , base >=4.7 && <5 , binary , bytestring , conduit@@ -138,10 +136,8 @@ , either , exceptions , generic-lens- , hedgehog- , hspec , hw-bits- , hw-hspec-hedgehog+ , hw-ip , iproute , lens , old-locale@@ -150,11 +146,14 @@ , text , thyme , vector+ , asif+ , hspec+ , hedgehog+ , hw-hspec-hedgehog other-modules: Arbor.File.Format.Asif.ByteString.BuilderSpec Arbor.File.Format.Asif.Data.IpSpec Arbor.File.Format.AsifSpec Gen.Feed TestApp- Paths_asif default-language: Haskell2010
src/Arbor/File/Format/Asif/ByIndex.hs view
@@ -7,7 +7,7 @@ ( ByIndex(..) ) where -import Data.Monoid+import Data.Monoid ((<>)) import qualified Data.Semigroup as S @@ -22,8 +22,8 @@ mappend = (S.<>) mempty = ByIndex [] -appendByIndex :: (Monoid a, S.Semigroup a) => [a] -> [a] -> [a]-appendByIndex (a:as) (b:bs) = (a <> b):appendByIndex as bs-appendByIndex (a:as) bs = a :appendByIndex as bs-appendByIndex as (b:bs) = b :appendByIndex as bs+appendByIndex :: Monoid a => [a] -> [a] -> [a]+appendByIndex (a:as) (b:bs) = (a `mappend` b):appendByIndex as bs+appendByIndex (a:as) bs = a :appendByIndex as bs+appendByIndex as (b:bs) = b :appendByIndex as bs appendByIndex [] [] = []
src/Arbor/File/Format/Asif/ByteString/Builder.hs view
@@ -16,11 +16,10 @@ import Control.Monad import Data.Bits import Data.ByteString.Builder-import Data.Conduit (Source) import Data.Generics.Product.Any import Data.Int import Data.Maybe-import Data.Monoid+import Data.Monoid ((<>)) import Data.String import Data.Thyme.Clock import Data.Thyme.Clock.POSIX (POSIXTime, getPOSIXTime)@@ -70,7 +69,7 @@ intersperse :: Int64 -> Int64 -> B.Builder intersperse a b = B.word32LE (fromIntegral a) <> B.word32LE (fromIntegral b) -segmentsRawC :: MonadIO m => String -> [IO.Handle] -> Source m BS.ByteString+segmentsRawC :: MonadIO m => String -> [IO.Handle] -> ConduitT () BS.ByteString m () segmentsRawC asifType handles = do let segmentCount = fromIntegral $ length handles :: Int64 @@ -95,7 +94,7 @@ => String -> Maybe POSIXTime -> [Z.Segment IO.Handle]- -> m (Source m BS.ByteString)+ -> m (ConduitT () BS.ByteString m ()) segmentsC asifType maybeTimestamp metas = do fileTime <- maybe (liftIO getPOSIXTime) return maybeTimestamp (_, _, hFilenames ) <- IO.openTempFile Nothing "asif-filenames"
src/Arbor/File/Format/Asif/Get.hs view
@@ -4,7 +4,7 @@ import Control.Lens import Control.Monad import Data.Binary.Get-import Data.Monoid+import Data.Monoid ((<>)) import Data.Text (Text) import Data.Thyme.Clock (microseconds) import Data.Thyme.Clock.POSIX (POSIXTime)
src/Arbor/File/Format/Asif/Segment.hs view
@@ -17,7 +17,7 @@ import Data.Binary.Get import Data.Generics.Product.Any import Data.Maybe-import Data.Monoid+import Data.Monoid ((<>)) import Data.Text (Text, pack) import qualified Arbor.File.Format.Asif.Extract as E
src/Arbor/File/Format/Asif/Type.hs view
@@ -5,7 +5,7 @@ import Arbor.File.Format.Asif.Format (Format) import Arbor.File.Format.Asif.Maybe import Arbor.File.Format.Asif.Whatever-import Data.Semigroup+import Data.Semigroup (Semigroup, (<>)) import Data.Text (Text) import Data.Thyme.Clock.POSIX (POSIXTime) import GHC.Generics
test/Gen/Feed.hs view
@@ -5,22 +5,17 @@ , ordBy ) where -import Arbor.Network.Ip import Data.Word+import HaskellWorks.Data.Network.Ip+import HaskellWorks.Data.Network.Ip.Internal import Hedgehog import qualified Hedgehog.Gen as G import qualified Hedgehog.Range as R -ipv4 :: MonadGen m => Word8 -> Word8 -> m IPv4-ipv4 start stop = do- o1 <- w8- o2 <- w8- o3 <- w8- o4 <- w8- return $ ipFromOctets o1 o2 o3 o4- where- w8 = G.word8 (R.linear start stop)+ipv4 :: MonadGen m => Word8 -> Word8 -> m Ipv4Address+ipv4 start stop = Ipv4Address <$> (fourOctetsToWord32 <$> w8 <*> w8 <*> w8 <*> w8)+ where w8 = G.word8 (R.linear start stop) feedElemIp :: MonadGen m => Range Word32 -> m Word32 feedElemIp = G.word32