module Network.Wai.Handler.Warp.Types where
import Control.Exception
import Data.ByteString (ByteString)
import Data.Typeable (Typeable)
import Network.HTTP.Types.Header
import Network.Socket (Socket)
import qualified Network.Wai.Handler.Warp.Date as D
import qualified Network.Wai.Handler.Warp.FdCache as F
import qualified Network.Wai.Handler.Warp.Timeout as T
import Network.Wai.Handler.Warp.Buffer (Buffer,BufSize)
type Port = Int
type HeaderValue = ByteString
hTransferEncoding :: HeaderName
hTransferEncoding = "Transfer-Encoding"
hContentRange :: HeaderName
hContentRange = "Content-Range"
hAcceptRanges :: HeaderName
hAcceptRanges = "Accept-Ranges"
hServer :: HeaderName
hServer = "Server"
data InvalidRequest = NotEnoughLines [String]
| BadFirstLine String
| NonHttp
| IncompleteHeaders
| ConnectionClosedByPeer
| OverLargeHeader
deriving (Eq, Show, Typeable)
instance Exception InvalidRequest
data ConnSendFileOverride = NotOverride
| Override Socket
data Connection = Connection
{ connSendMany :: [ByteString] -> IO ()
, connSendAll :: ByteString -> IO ()
, connSendFile :: FilePath -> Integer -> Integer -> IO () -> [ByteString] -> IO ()
, connClose :: IO ()
, connRecv :: IO ByteString
, connBuffer :: Buffer
, connBufferSize :: BufSize
, connSendFileOverride :: ConnSendFileOverride
}
data InternalInfo = InternalInfo {
threadHandle :: T.Handle
, fdCacher :: Maybe F.MutableFdCache
, dateCacher :: D.DateCache
}