import Data.ByteString.Lazy.Char8 (ByteString)
import qualified Data.Sequence as S
import Data.Sequence (Seq)
-import Network
+import Network.Socket
import Network.HTTP.Lucu.Config
import Network.HTTP.Lucu.HttpVersion
import Network.HTTP.Lucu.Request
data Interaction = Interaction {
itrConfig :: Config
- , itrRemoteHost :: HostName
+ , itrRemoteAddr :: SockAddr
, itrResourcePath :: Maybe [String]
- , itrRequest :: Maybe Request
+ , itrRequest :: TVar (Maybe Request)
, itrResponse :: TVar Response
-- FIXME: この三つは本來 TVar であるべきでないので、唯の Bool にす
defaultPageContentType = "application/xhtml+xml"
-newInteraction :: Config -> HostName -> Maybe Request -> IO Interaction
-newInteraction conf host req
- = do responce <- newTVarIO $ Response {
+newInteraction :: Config -> SockAddr -> Maybe Request -> IO Interaction
+newInteraction conf addr req
+ = do request <- newTVarIO $ req
+ responce <- newTVarIO $ Response {
resVersion = HttpVersion 1 1
, resStatus = Ok
, resHeaders = [("Content-Type", defaultPageContentType)]
return $ Interaction {
itrConfig = conf
- , itrRemoteHost = host
+ , itrRemoteAddr = addr
, itrResourcePath = Nothing
- , itrRequest = req
+ , itrRequest = request
, itrResponse = responce
, itrRequestHasBody = requestHasBody