acceptRequest input
-- キューに最大パイプライン深度以上のリクエストが溜まってゐる
-- 時は、それが限度以下になるまで待つ。
- = do atomically $ do queue <- readTVar tQueue
+ = {-# SCC "acceptRequest" #-}
+ do atomically $ do queue <- readTVar tQueue
when (S.length queue >= cnfMaxPipelineDepth cnf)
retry
acceptNonparsableRequest :: StatusCode -> IO ()
acceptNonparsableRequest status
- = do itr <- newInteraction cnf addr Nothing
+ = {-# SCC "acceptNonparsableRequest" #-}
+ do itr <- newInteraction cnf addr Nothing
atomically $ do updateItr itr itrResponse
$ \ res -> res {
resStatus = status
acceptParsableRequest :: Request -> ByteString -> IO ()
acceptParsableRequest req input
- = do itr <- newInteraction cnf addr (Just req)
+ = {-# SCC "acceptParsableRequest" #-}
+ do itr <- newInteraction cnf addr (Just req)
action
<- atomically $
do preprocess itr
acceptSemanticallyInvalidRequest :: Interaction -> ByteString -> STM (IO ())
acceptSemanticallyInvalidRequest itr input
- = do writeItr itr itrState Done
+ = {-# SCC "acceptSemanticallyInvalidRequest" #-}
+ do writeItr itr itrState Done
writeDefaultPage itr
postprocess itr
enqueue itr
acceptRequestForNonexistentResource :: Interaction -> ByteString -> STM (IO ())
acceptRequestForNonexistentResource itr input
- = do updateItr itr itrResponse
+ = {-# SCC "acceptRequestForNonexistentResource" #-}
+ do updateItr itr itrResponse
$ \res -> res {
resStatus = NotFound
}
acceptRequestForExistentResource :: Interaction -> ByteString -> [String] -> ResourceDef -> STM (IO ())
acceptRequestForExistentResource oldItr input rsrcPath rsrcDef
- = do let itr = oldItr { itrResourcePath = Just rsrcPath }
+ = {-# SCC "acceptRequestForExistentResource" #-}
+ do let itr = oldItr { itrResourcePath = Just rsrcPath }
requestHasBody <- readItr itr itrRequestHasBody id
enqueue itr
return $ do runResource rsrcDef itr
observeRequest :: Interaction -> ByteString -> IO ()
observeRequest itr input
- = do isChunked <- atomically $ readItr itr itrRequestIsChunked id
+ = {-# SCC "observeRequest" #-}
+ do isChunked <- atomically $ readItr itr itrRequestIsChunked id
if isChunked then
observeChunkedRequest itr input
else
observeChunkedRequest :: Interaction -> ByteString -> IO ()
observeChunkedRequest itr input
- = do action
+ = {-# SCC "observeChunkedRequest" #-}
+ do action
<- atomically $
do isOver <- readItr itr itrReqChunkIsOver id
if isOver then
seekNextChunk :: Interaction -> ByteString -> STM (IO ())
seekNextChunk itr input
- = case parse chunkHeaderP input of
+ = {-# SCC "seekNextChunk" #-}
+ case parse chunkHeaderP input of
-- 最終チャンク (中身が空)
(Success 0, input')
-> case parse chunkTrailerP input' of
chunkWasMalformed :: Interaction -> IO ()
chunkWasMalformed itr
- = atomically $ do updateItr itr itrResponse
+ = {-# SCC "chunkWasMalformed" #-}
+ atomically $ do updateItr itr itrResponse
$ \ res -> res {
resStatus = BadRequest
}
observeNonChunkedRequest :: Interaction -> ByteString -> IO ()
observeNonChunkedRequest itr input
- = do action
+ = {-# SCC "observeNonChunkedRequest" #-}
+ do action
<- atomically $
do wantedM <- readItr itr itrReqBodyWanted id
if wantedM == Nothing then
action
enqueue :: Interaction -> STM ()
- enqueue itr = do queue <- readTVar tQueue
+ enqueue itr = {-# SCC "enqueue" #-}
+ do queue <- readTVar tQueue
writeTVar tQueue (itr <| queue)
\ No newline at end of file