)
where
import Blaze.ByteString.Builder (Builder)
-import Control.Applicative
import Control.Concurrent.STM
import Data.Ascii (Ascii)
import qualified Data.ByteString as BS
import Data.Sequence (Seq)
import qualified Data.Sequence as S
+import Data.Text (Text)
import Network.Socket
import Network.HTTP.Lucu.Config
import Network.HTTP.Lucu.Headers
, itrLocalPort ∷ !PortNumber
, itrRemoteAddr ∷ !SockAddr
, itrRemoteCert ∷ !(Maybe X509)
- , itrResourcePath ∷ !(Maybe [Ascii])
+ , itrResourcePath ∷ !(Maybe [Text])
, itrRequest ∷ !(TVar (Maybe Request))
, itrResponse ∷ !(TVar Response)
, itrWillClose ∷ !(TVar Bool)
, itrBodyToSend ∷ !(TMVar Builder)
- , itrBodyIsNull ∷ !(TVar Bool)
+ , itrSentNoBody ∷ !(TVar Bool)
, itrState ∷ !(TVar InteractionState)
willClose ← newTVarIO False
bodyToSend ← newEmptyTMVarIO
- bodyIsNull ← newTVarIO True -- 一度でも bodyToSend が空でなくなったら False
+ sentNoBody ← newTVarIO True -- 一度でも bodyToSend が空でなくなったら False
state ← newTVarIO ExaminingRequest
, itrWillClose = willClose
, itrBodyToSend = bodyToSend
- , itrBodyIsNull = bodyIsNull
+ , itrSentNoBody = sentNoBody
, itrState = state
writeItr accessor a itr
= writeTVar (accessor itr) a
-readItr ∷ (Interaction → TVar a) → (a → b) → Interaction → STM b
+readItr ∷ (Interaction → TVar a) → Interaction → STM a
{-# INLINE readItr #-}
-readItr accessor reader itr
- = reader <$> readTVar (accessor itr)
+readItr accessor itr
+ = readTVar (accessor itr)
updateItr ∷ (Interaction → TVar a) → (a → a) → Interaction → STM ()
{-# INLINE updateItr #-}
updateItr accessor updator itr
- = do old ← readItr accessor id itr
+ = do old ← readItr accessor itr
writeItr accessor (updator old) itr