ngx-export 0.2.0.0 → 0.2.1.0
raw patch · 2 files changed
+21/−9 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ NgxExport: ngxExportServiceIOYY :: Name -> Q [Dec]
Files
- NgxExport.hs +20/−8
- ngx-export.cabal +1/−1
NgxExport.hs view
@@ -10,6 +10,7 @@ ,ngxExportYY ,ngxExportBY ,ngxExportAsyncIOYY+ ,ngxExportServiceIOYY ,ngxExportHandler ,ngxExportDefHandler ,ngxExportUnsafeHandler) where@@ -37,7 +38,7 @@ | BLS ([String] -> Bool) | YY (B.ByteString -> L.ByteString) | BY (B.ByteString -> Bool)- | IOYY (B.ByteString -> IO L.ByteString)+ | IOYY (B.ByteString -> Bool -> IO L.ByteString) | Handler (B.ByteString -> (L.ByteString, String, Int)) | UnsafeHandler (B.ByteString -> (B.ByteString, B.ByteString, Int))@@ -50,21 +51,27 @@ 'Handler, 'UnsafeHandler] [1 ..] :: [(Name, Int)]) ] -ngxExport :: Name -> Name -> Q Type -> Name -> Q [Dec]-ngxExport e h t f = sequence+ngxExport' :: (Name -> Q Exp) -> Name -> Name -> Q Type -> Name -> Q [Dec]+ngxExport' m e h t f = sequence [funD nameFt $ body [|exportType $efVar|], ForeignD . ExportF CCall ftName nameFt <$> [t|IO CInt|], funD nameF $ body [|$hVar $efVar|], ForeignD . ExportF CCall fName nameF <$> t ] where hVar = varE h- efVar = conE e `appE` varE f+ efVar = conE e `appE` m f fName = "ngx_hs_" ++ nameBase f nameF = mkName fName ftName = "type_" ++ fName nameFt = mkName ftName body b = [clause [] (normalB b) []] +ngxExport :: Name -> Name -> Q Type -> Name -> Q [Dec]+ngxExport = ngxExport' varE++ngxExportC :: Name -> Name -> Q Type -> Name -> Q [Dec]+ngxExportC = ngxExport' $ infixE (Just $ varE 'const) (varE '(.)) . Just . varE+ ngxExportSS = ngxExport 'SS 'sS [t|CString -> CInt -> Ptr CString -> IO CInt|]@@ -90,9 +97,13 @@ ngxExport 'BY 'bY [t|CString -> CInt -> IO CUInt|] ngxExportAsyncIOYY =+ ngxExportC 'IOYY 'ioyY+ [t|CString -> CInt ->+ CInt -> CUInt -> Ptr CString -> Ptr CInt -> Ptr CUInt -> IO ()|]+ngxExportServiceIOYY = ngxExport 'IOYY 'ioyY [t|CString -> CInt ->- CInt -> Ptr CString -> Ptr CInt -> Ptr CUInt -> IO ()|]+ CInt -> CUInt -> Ptr CString -> Ptr CInt -> Ptr CUInt -> IO ()|] ngxExportHandler = ngxExport 'Handler 'handler [t|CString -> CInt ->@@ -210,10 +221,11 @@ return l ioyY :: NgxExport -> CString -> CInt ->- CInt -> Ptr CString -> Ptr CInt -> Ptr CUInt -> IO ()-ioyY (IOYY f) x (fromIntegral -> n) (fromIntegral -> fd) p pl r =+ CInt -> CUInt -> Ptr CString -> Ptr CInt -> Ptr CUInt -> IO ()+ioyY (IOYY f) x (fromIntegral -> n) (fromIntegral -> fd)+ ((/= 0) -> fstRun) p pl r = void . async $ do- s <- (Right <$> (B.unsafePackCStringLen (x, n) >>= f))+ s <- (Right <$> (B.unsafePackCStringLen (x, n) >>= flip f fstRun)) `catchIOError` (return . Left . show) either (\s -> do
ngx-export.cabal view
@@ -1,5 +1,5 @@ name: ngx-export-version: 0.2.0.0+version: 0.2.1.0 synopsis: Helper module for Nginx haskell module description: Helper module for <http://github.com/lyokha/nginx-haskell-module Nginx haskell module>