ngx-export-1.6.0: Helper module for Nginx haskell module

Copyright(c) Alexey Radkov 2016-2018
LicenseBSD-style
Maintaineralexey.radkov@gmail.com
Stabilitystable
Portabilitynon-portable (requires POSIX)
Safe HaskellNone
LanguageHaskell98

NgxExport

Contents

Description

Export regular haskell functions for using in directives of nginx-haskell-module.

Synopsis

Type declarations

type ContentHandlerResult = (ByteString, ByteString, Int) Source #

The 3-tuple contains (content, content-type, HTTP-status).

type UnsafeContentHandlerResult = (ByteString, ByteString, Int) Source #

The 3-tuple contains (content, content-type, HTTP-status).

Both the content and the content-type are supposed to be referring to low-level string literals that do not need to be freed upon an HTTP request termination and must not be garbage-collected in the Haskell RTS.

Exporters

Synchronous handlers

ngxExportSS :: Name -> Q [Dec] Source #

Exports a function of type

String -> String

for using in directive haskell_run.

ngxExportSSS :: Name -> Q [Dec] Source #

Exports a function of type

String -> String -> String

for using in directive haskell_run.

ngxExportSLS :: Name -> Q [Dec] Source #

Exports a function of type

[String] -> String

for using in directive haskell_run.

ngxExportBS :: Name -> Q [Dec] Source #

Exports a function of type

String -> Bool

for using in directive haskell_run.

ngxExportBSS :: Name -> Q [Dec] Source #

Exports a function of type

String -> String -> Bool

for using in directive haskell_run.

ngxExportBLS :: Name -> Q [Dec] Source #

Exports a function of type

[String] -> Bool

for using in directive haskell_run.

ngxExportYY :: Name -> Q [Dec] Source #

Exports a function of type

ByteString -> ByteString

for using in directive haskell_run.

ngxExportBY :: Name -> Q [Dec] Source #

Exports a function of type

ByteString -> Bool

for using in directive haskell_run.

ngxExportIOYY :: Name -> Q [Dec] Source #

Exports a function of type

ByteString -> IO ByteString

for using in directive haskell_run.

Asynchronous handlers and services

ngxExportAsyncIOYY :: Name -> Q [Dec] Source #

Exports a function of type

ByteString -> IO ByteString

for using in directive haskell_run_async.

ngxExportAsyncOnReqBody :: Name -> Q [Dec] Source #

Exports a function of type

ByteString -> ByteString -> IO ByteString

for using in directive haskell_run_async_on_request_body.

The first argument of the exported function contains buffers of the client request body.

ngxExportServiceIOYY :: Name -> Q [Dec] Source #

Exports a function of type

ByteString -> Bool -> IO ByteString

for using in directives haskell_run_service and haskell_service_var_update_callback.

The boolean argument of the exported function marks that the service is being run for the first time.

Content handlers

ngxExportHandler :: Name -> Q [Dec] Source #

Exports a function of type

ByteString -> ContentHandlerResult

for using in directives haskell_content and haskell_static_content.

ngxExportDefHandler :: Name -> Q [Dec] Source #

Exports a function of type

ByteString -> ByteString

for using in directives haskell_content and haskell_static_content.

ngxExportUnsafeHandler :: Name -> Q [Dec] Source #

Exports a function of type

ByteString -> UnsafeContentHandlerResult

for using in directive haskell_unsafe_content.

ngxExportAsyncHandler :: Name -> Q [Dec] Source #

Exports a function of type

ByteString -> IO ContentHandlerResult

for using in directive haskell_async_content.

ngxExportAsyncHandlerOnReqBody :: Name -> Q [Dec] Source #

Exports a function of type

ByteString -> ByteString -> IO ContentHandlerResult

for using in directive haskell_async_content_on_request_body.

The first argument of the exported function contains buffers of the client request body.

Service hooks

ngxExportServiceHook :: Name -> Q [Dec] Source #

Exports a function of type

ByteString -> IO ByteString

for using in directives haskell_service_hook and haskell_service_update_hook.

Opaque pointers to Nginx global objects

ngxCyclePtr :: IO (Ptr ()) Source #

Returns an opaque pointer to the Nginx cycle object for using it in C plugins.

Actual type of the returned pointer is

ngx_cycle_t *

(value of argument cycle in the worker's initialization function).

ngxUpstreamMainConfPtr :: IO (Ptr ()) Source #

Returns an opaque pointer to the Nginx upstream main configuration for using it in C plugins.

Actual type of the returned pointer is

ngx_http_upstream_main_conf_t *

(value of expression

    ngx_http_cycle_get_module_main_conf(cycle, ngx_http_upstream_module)

in the worker's initialization function).

ngxCachedTimePtr :: IO (Ptr (Ptr ())) Source #

Returns an opaque pointer to the Nginx cached time object for using it in C plugins.

Actual type of the returned pointer is

volatile ngx_time_t **

(address of the Nginx global variable ngx_cached_time).

Re-exported data constructors from Foreign.C

Re-exports are needed by exporters for marshalling in foreign calls.

newtype CInt #

Haskell type representing the C int type.

Constructors

CInt Int32 
Instances
Bounded CInt 
Instance details

Defined in Foreign.C.Types

Enum CInt 
Instance details

Defined in Foreign.C.Types

Methods

succ :: CInt -> CInt #

pred :: CInt -> CInt #

toEnum :: Int -> CInt #

fromEnum :: CInt -> Int #

enumFrom :: CInt -> [CInt] #

enumFromThen :: CInt -> CInt -> [CInt] #

enumFromTo :: CInt -> CInt -> [CInt] #

enumFromThenTo :: CInt -> CInt -> CInt -> [CInt] #

Eq CInt 
Instance details

Defined in Foreign.C.Types

Methods

(==) :: CInt -> CInt -> Bool #

(/=) :: CInt -> CInt -> Bool #

Integral CInt 
Instance details

Defined in Foreign.C.Types

Methods

quot :: CInt -> CInt -> CInt #

rem :: CInt -> CInt -> CInt #

div :: CInt -> CInt -> CInt #

mod :: CInt -> CInt -> CInt #

quotRem :: CInt -> CInt -> (CInt, CInt) #

divMod :: CInt -> CInt -> (CInt, CInt) #

toInteger :: CInt -> Integer #

Num CInt 
Instance details

Defined in Foreign.C.Types

Methods

(+) :: CInt -> CInt -> CInt #

(-) :: CInt -> CInt -> CInt #

(*) :: CInt -> CInt -> CInt #

negate :: CInt -> CInt #

abs :: CInt -> CInt #

signum :: CInt -> CInt #

fromInteger :: Integer -> CInt #

Ord CInt 
Instance details

Defined in Foreign.C.Types

Methods

compare :: CInt -> CInt -> Ordering #

(<) :: CInt -> CInt -> Bool #

(<=) :: CInt -> CInt -> Bool #

(>) :: CInt -> CInt -> Bool #

(>=) :: CInt -> CInt -> Bool #

max :: CInt -> CInt -> CInt #

min :: CInt -> CInt -> CInt #

Read CInt 
Instance details

Defined in Foreign.C.Types

Real CInt 
Instance details

Defined in Foreign.C.Types

Methods

toRational :: CInt -> Rational #

Show CInt 
Instance details

Defined in Foreign.C.Types

Methods

showsPrec :: Int -> CInt -> ShowS #

show :: CInt -> String #

showList :: [CInt] -> ShowS #

Storable CInt 
Instance details

Defined in Foreign.C.Types

Methods

sizeOf :: CInt -> Int #

alignment :: CInt -> Int #

peekElemOff :: Ptr CInt -> Int -> IO CInt #

pokeElemOff :: Ptr CInt -> Int -> CInt -> IO () #

peekByteOff :: Ptr b -> Int -> IO CInt #

pokeByteOff :: Ptr b -> Int -> CInt -> IO () #

peek :: Ptr CInt -> IO CInt #

poke :: Ptr CInt -> CInt -> IO () #

Bits CInt 
Instance details

Defined in Foreign.C.Types

FiniteBits CInt 
Instance details

Defined in Foreign.C.Types

NFData CInt

Since: deepseq-1.4.0.0

Instance details

Defined in Control.DeepSeq

Methods

rnf :: CInt -> () #

newtype CUInt #

Haskell type representing the C unsigned int type.

Constructors

CUInt Word32 
Instances
Bounded CUInt 
Instance details

Defined in Foreign.C.Types

Enum CUInt 
Instance details

Defined in Foreign.C.Types

Eq CUInt 
Instance details

Defined in Foreign.C.Types

Methods

(==) :: CUInt -> CUInt -> Bool #

(/=) :: CUInt -> CUInt -> Bool #

Integral CUInt 
Instance details

Defined in Foreign.C.Types

Num CUInt 
Instance details

Defined in Foreign.C.Types

Ord CUInt 
Instance details

Defined in Foreign.C.Types

Methods

compare :: CUInt -> CUInt -> Ordering #

(<) :: CUInt -> CUInt -> Bool #

(<=) :: CUInt -> CUInt -> Bool #

(>) :: CUInt -> CUInt -> Bool #

(>=) :: CUInt -> CUInt -> Bool #

max :: CUInt -> CUInt -> CUInt #

min :: CUInt -> CUInt -> CUInt #

Read CUInt 
Instance details

Defined in Foreign.C.Types

Real CUInt 
Instance details

Defined in Foreign.C.Types

Methods

toRational :: CUInt -> Rational #

Show CUInt 
Instance details

Defined in Foreign.C.Types

Methods

showsPrec :: Int -> CUInt -> ShowS #

show :: CUInt -> String #

showList :: [CUInt] -> ShowS #

Storable CUInt 
Instance details

Defined in Foreign.C.Types

Methods

sizeOf :: CUInt -> Int #

alignment :: CUInt -> Int #

peekElemOff :: Ptr CUInt -> Int -> IO CUInt #

pokeElemOff :: Ptr CUInt -> Int -> CUInt -> IO () #

peekByteOff :: Ptr b -> Int -> IO CUInt #

pokeByteOff :: Ptr b -> Int -> CUInt -> IO () #

peek :: Ptr CUInt -> IO CUInt #

poke :: Ptr CUInt -> CUInt -> IO () #

Bits CUInt 
Instance details

Defined in Foreign.C.Types

FiniteBits CUInt 
Instance details

Defined in Foreign.C.Types

NFData CUInt

Since: deepseq-1.4.0.0

Instance details

Defined in Control.DeepSeq

Methods

rnf :: CUInt -> () #