thread in a state
This commit is contained in:
parent
69c4f07ab0
commit
0bdee626ad
2 changed files with 62 additions and 46 deletions
|
@ -22,5 +22,7 @@ cmd = command "p2phttp" SectionPlumbing
|
||||||
paramNothing (withParams seek)
|
paramNothing (withParams seek)
|
||||||
|
|
||||||
seek :: CmdParams -> CommandSeek
|
seek :: CmdParams -> CommandSeek
|
||||||
seek ["server"] = liftIO $ Warp.run 8080 p2pHttpApp
|
seek ["server"] = liftIO $ do
|
||||||
|
st <- mkP2PHttpServerState
|
||||||
|
Warp.run 8080 (p2pHttpApp st)
|
||||||
seek ["client"] = liftIO testClientLock
|
seek ["client"] = liftIO testClientLock
|
||||||
|
|
104
P2P/Http.hs
104
P2P/Http.hs
|
@ -79,45 +79,45 @@ type P2PHttpAPI
|
||||||
p2pHttpAPI :: Proxy P2PHttpAPI
|
p2pHttpAPI :: Proxy P2PHttpAPI
|
||||||
p2pHttpAPI = Proxy
|
p2pHttpAPI = Proxy
|
||||||
|
|
||||||
p2pHttpApp :: Application
|
p2pHttpApp :: P2PHttpServerState -> Application
|
||||||
p2pHttpApp = serve p2pHttpAPI serveP2pHttp
|
p2pHttpApp = serve p2pHttpAPI . serveP2pHttp
|
||||||
|
|
||||||
serveP2pHttp :: Server P2PHttpAPI
|
serveP2pHttp :: P2PHttpServerState -> Server P2PHttpAPI
|
||||||
serveP2pHttp
|
serveP2pHttp st
|
||||||
= serveGet
|
= serveGet st
|
||||||
:<|> serveGet
|
:<|> serveGet st
|
||||||
:<|> serveGet
|
:<|> serveGet st
|
||||||
:<|> serveGet
|
:<|> serveGet st
|
||||||
:<|> serveCheckPresent
|
:<|> serveCheckPresent st
|
||||||
:<|> serveCheckPresent
|
:<|> serveCheckPresent st
|
||||||
:<|> serveCheckPresent
|
:<|> serveCheckPresent st
|
||||||
:<|> serveCheckPresent
|
:<|> serveCheckPresent st
|
||||||
:<|> serveRemove id
|
:<|> serveRemove st id
|
||||||
:<|> serveRemove id
|
:<|> serveRemove st id
|
||||||
:<|> serveRemove dePlus
|
:<|> serveRemove st dePlus
|
||||||
:<|> serveRemove dePlus
|
:<|> serveRemove st dePlus
|
||||||
:<|> serveRemoveBefore
|
:<|> serveRemoveBefore st
|
||||||
:<|> serveGetTimestamp
|
:<|> serveGetTimestamp st
|
||||||
:<|> servePut id
|
:<|> servePut st id
|
||||||
:<|> servePut id
|
:<|> servePut st id
|
||||||
:<|> servePut dePlus
|
:<|> servePut st dePlus
|
||||||
:<|> servePut dePlus Nothing
|
:<|> servePut st dePlus Nothing
|
||||||
:<|> servePutOffset id
|
:<|> servePutOffset st id
|
||||||
:<|> servePutOffset id
|
:<|> servePutOffset st id
|
||||||
:<|> servePutOffset dePlus
|
:<|> servePutOffset st dePlus
|
||||||
:<|> serveLockContent
|
:<|> serveLockContent st
|
||||||
:<|> serveLockContent
|
:<|> serveLockContent st
|
||||||
:<|> serveLockContent
|
:<|> serveLockContent st
|
||||||
:<|> serveLockContent
|
:<|> serveLockContent st
|
||||||
:<|> serveKeepLocked
|
:<|> serveKeepLocked st
|
||||||
:<|> serveKeepLocked
|
:<|> serveKeepLocked st
|
||||||
:<|> serveKeepLocked
|
:<|> serveKeepLocked st
|
||||||
:<|> serveKeepLocked
|
:<|> serveKeepLocked st
|
||||||
:<|> serveGetGeneric
|
:<|> serveGetGeneric st
|
||||||
|
|
||||||
type GetGenericAPI = StreamGet NoFraming OctetStream (SourceIO B.ByteString)
|
type GetGenericAPI = StreamGet NoFraming OctetStream (SourceIO B.ByteString)
|
||||||
|
|
||||||
serveGetGeneric :: B64Key -> Handler (S.SourceT IO B.ByteString)
|
serveGetGeneric :: P2PHttpServerState -> B64Key -> Handler (S.SourceT IO B.ByteString)
|
||||||
serveGetGeneric = undefined
|
serveGetGeneric = undefined
|
||||||
|
|
||||||
type GetAPI
|
type GetAPI
|
||||||
|
@ -130,7 +130,8 @@ type GetAPI
|
||||||
(Headers '[DataLengthHeader] (SourceIO B.ByteString))
|
(Headers '[DataLengthHeader] (SourceIO B.ByteString))
|
||||||
|
|
||||||
serveGet
|
serveGet
|
||||||
:: B64Key
|
:: P2PHttpServerState
|
||||||
|
-> B64Key
|
||||||
-> Maybe (B64UUID ClientSide)
|
-> Maybe (B64UUID ClientSide)
|
||||||
-> Maybe (B64UUID ServerSide)
|
-> Maybe (B64UUID ServerSide)
|
||||||
-> [B64UUID Bypass]
|
-> [B64UUID Bypass]
|
||||||
|
@ -165,7 +166,8 @@ type CheckPresentAPI
|
||||||
:> Post '[JSON] CheckPresentResult
|
:> Post '[JSON] CheckPresentResult
|
||||||
|
|
||||||
serveCheckPresent
|
serveCheckPresent
|
||||||
:: B64Key
|
:: P2PHttpServerState
|
||||||
|
-> B64Key
|
||||||
-> B64UUID ClientSide
|
-> B64UUID ClientSide
|
||||||
-> B64UUID ServerSide
|
-> B64UUID ServerSide
|
||||||
-> [B64UUID Bypass]
|
-> [B64UUID Bypass]
|
||||||
|
@ -197,7 +199,8 @@ type RemoveAPI result
|
||||||
:> Post '[JSON] result
|
:> Post '[JSON] result
|
||||||
|
|
||||||
serveRemove
|
serveRemove
|
||||||
:: (RemoveResultPlus -> t)
|
:: P2PHttpServerState
|
||||||
|
-> (RemoveResultPlus -> t)
|
||||||
-> B64Key
|
-> B64Key
|
||||||
-> B64UUID ClientSide
|
-> B64UUID ClientSide
|
||||||
-> B64UUID ServerSide
|
-> B64UUID ServerSide
|
||||||
|
@ -232,7 +235,8 @@ type RemoveBeforeAPI
|
||||||
:> Post '[JSON] RemoveResult
|
:> Post '[JSON] RemoveResult
|
||||||
|
|
||||||
serveRemoveBefore
|
serveRemoveBefore
|
||||||
:: B64Key
|
:: P2PHttpServerState
|
||||||
|
-> B64Key
|
||||||
-> B64UUID ClientSide
|
-> B64UUID ClientSide
|
||||||
-> B64UUID ServerSide
|
-> B64UUID ServerSide
|
||||||
-> [B64UUID Bypass]
|
-> [B64UUID Bypass]
|
||||||
|
@ -265,7 +269,8 @@ type GetTimestampAPI
|
||||||
:> Post '[JSON] GetTimestampResult
|
:> Post '[JSON] GetTimestampResult
|
||||||
|
|
||||||
serveGetTimestamp
|
serveGetTimestamp
|
||||||
:: B64UUID ClientSide
|
:: P2PHttpServerState
|
||||||
|
-> B64UUID ClientSide
|
||||||
-> B64UUID ServerSide
|
-> B64UUID ServerSide
|
||||||
-> [B64UUID Bypass]
|
-> [B64UUID Bypass]
|
||||||
-> Handler GetTimestampResult
|
-> Handler GetTimestampResult
|
||||||
|
@ -299,7 +304,8 @@ type PutAPI result
|
||||||
:> Post '[JSON] result
|
:> Post '[JSON] result
|
||||||
|
|
||||||
servePut
|
servePut
|
||||||
:: (PutResultPlus -> t)
|
:: P2PHttpServerState
|
||||||
|
-> (PutResultPlus -> t)
|
||||||
-> Maybe Integer
|
-> Maybe Integer
|
||||||
-> B64Key
|
-> B64Key
|
||||||
-> B64UUID ClientSide
|
-> B64UUID ClientSide
|
||||||
|
@ -346,7 +352,8 @@ type PutOffsetAPI result
|
||||||
:> Post '[JSON] result
|
:> Post '[JSON] result
|
||||||
|
|
||||||
servePutOffset
|
servePutOffset
|
||||||
:: (PutOffsetResultPlus -> t)
|
:: P2PHttpServerState
|
||||||
|
-> (PutOffsetResultPlus -> t)
|
||||||
-> B64Key
|
-> B64Key
|
||||||
-> B64UUID ClientSide
|
-> B64UUID ClientSide
|
||||||
-> B64UUID ServerSide
|
-> B64UUID ServerSide
|
||||||
|
@ -382,7 +389,8 @@ type LockContentAPI
|
||||||
:> Post '[JSON] LockResult
|
:> Post '[JSON] LockResult
|
||||||
|
|
||||||
serveLockContent
|
serveLockContent
|
||||||
:: B64Key
|
:: P2PHttpServerState
|
||||||
|
-> B64Key
|
||||||
-> B64UUID ClientSide
|
-> B64UUID ClientSide
|
||||||
-> B64UUID ServerSide
|
-> B64UUID ServerSide
|
||||||
-> [B64UUID Bypass]
|
-> [B64UUID Bypass]
|
||||||
|
@ -423,7 +431,8 @@ type KeepLockedAPI
|
||||||
:> Post '[JSON] LockResult
|
:> Post '[JSON] LockResult
|
||||||
|
|
||||||
serveKeepLocked
|
serveKeepLocked
|
||||||
:: B64Key
|
:: P2PHttpServerState
|
||||||
|
-> B64Key
|
||||||
-> B64UUID ClientSide
|
-> B64UUID ClientSide
|
||||||
-> B64UUID ServerSide
|
-> B64UUID ServerSide
|
||||||
-> [B64UUID Bypass]
|
-> [B64UUID Bypass]
|
||||||
|
@ -431,7 +440,7 @@ serveKeepLocked
|
||||||
-> Maybe KeepAlive
|
-> Maybe KeepAlive
|
||||||
-> S.SourceT IO UnlockRequest
|
-> S.SourceT IO UnlockRequest
|
||||||
-> Handler LockResult
|
-> Handler LockResult
|
||||||
serveKeepLocked k cu su _ _ _ unlockrequeststream = do
|
serveKeepLocked _st k cu su _ _ _ unlockrequeststream = do
|
||||||
_ <- liftIO $ S.unSourceT unlockrequeststream go
|
_ <- liftIO $ S.unSourceT unlockrequeststream go
|
||||||
return (LockResult False)
|
return (LockResult False)
|
||||||
where
|
where
|
||||||
|
@ -518,6 +527,11 @@ testClientLock = do
|
||||||
[]
|
[]
|
||||||
keeplocked
|
keeplocked
|
||||||
|
|
||||||
|
data P2PHttpServerState = P2PHttpServerState
|
||||||
|
|
||||||
|
mkP2PHttpServerState :: IO P2PHttpServerState
|
||||||
|
mkP2PHttpServerState = return P2PHttpServerState
|
||||||
|
|
||||||
type ClientUUID req = QueryParam' '[req] "clientuuid" (B64UUID ClientSide)
|
type ClientUUID req = QueryParam' '[req] "clientuuid" (B64UUID ClientSide)
|
||||||
|
|
||||||
type ServerUUID req = QueryParam' '[req] "serveruuid" (B64UUID ServerSide)
|
type ServerUUID req = QueryParam' '[req] "serveruuid" (B64UUID ServerSide)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue