- itrConfig :: !Config
- , itrRemoteAddr :: !SockAddr
- , itrResourcePath :: !(Maybe [String])
- , itrRequest :: !(TVar (Maybe Request))
- , itrResponse :: !(TVar Response)
-
- -- FIXME: この三つは本來 TVar であるべきでないので、唯の Bool にす
- -- るに越した事は無いが、それは重要でない。
- , itrRequestHasBody :: !(TVar Bool)
- , itrRequestIsChunked :: !(TVar Bool)
- , itrExpectedContinue :: !(TVar Bool)
-
- , itrReqChunkLength :: !(TVar (Maybe Int))
- , itrReqChunkRemaining :: !(TVar (Maybe Int))
- , itrReqChunkIsOver :: !(TVar Bool)
- , itrReqBodyWanted :: !(TVar (Maybe Int))
- , itrReqBodyWasteAll :: !(TVar Bool)
- , itrReceivedBody :: !(TVar ByteString) -- Resource が受領した部分は削除される
-
- , itrWillReceiveBody :: !(TVar Bool)
- , itrWillChunkBody :: !(TVar Bool)
- , itrWillDiscardBody :: !(TVar Bool)
- , itrWillClose :: !(TVar Bool)
-
- , itrBodyToSend :: !(TVar ByteString)
- , itrBodyIsNull :: !(TVar Bool)
-
- , itrState :: !(TVar InteractionState)
-
- , itrWroteContinue :: !(TVar Bool)
- , itrWroteHeader :: !(TVar Bool)
+ itrConfig ∷ !Config
+ , itrLocalPort ∷ !PortNumber
+ , itrRemoteAddr ∷ !SockAddr
+ , itrRemoteCert ∷ !(Maybe X509)
+ , itrResourcePath ∷ !(Maybe [Text])
+ , itrRequest ∷ !(Maybe Request)
+
+ , itrExpectedContinue ∷ !(Maybe Bool)
+ , itrReqBodyLength ∷ !(Maybe RequestBodyLength)
+
+ , itrReqBodyWanted ∷ !(TVar Int)
+ , itrReqBodyWasteAll ∷ !(TVar Bool)
+ , itrReqChunkIsOver ∷ !(TVar Bool)
+ , itrReceivedBody ∷ !(TVar (Seq BS.ByteString))
+ , itrReceivedBodyLen ∷ !(TVar Int)
+
+ , itrResponse ∷ !(TVar Response)
+ , itrWillChunkBody ∷ !(TVar Bool)
+ , itrWillDiscardBody ∷ !(TVar Bool)
+ , itrWillClose ∷ !(TVar Bool)
+ , itrBodyToSend ∷ !(TMVar Builder)
+ , itrSentNoBodySoFar ∷ !(TVar Bool)
+
+ , itrState ∷ !(TVar InteractionState)