ngx-export-1.6.2: 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
LanguageHaskell2010

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).

Exception TerminateWorkerProcess

newtype TerminateWorkerProcess Source #

Terminates the worker process.

Being thrown from a service when that runs for the first time, this exception makes Nginx log the supplied message and terminate the worker process without respawning. This can be useful when the service is unable to read its configuration from the Nginx configuration script or to perform an important initialization action.

Since: 1.6.2

Constructors

TerminateWorkerProcess String

Contains the message to log

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 -> () #