skylark-client 0.1.2 → 0.1.3
raw patch · 2 files changed
+15/−2 lines, 2 files
Files
- skylark-client.cabal +1/−1
- src/Network/Skylark/Client.hs +14/−1
skylark-client.cabal view
@@ -1,5 +1,5 @@ name: skylark-client-version: 0.1.2+version: 0.1.3 synopsis: Skylark client. description: Skylark network client. homepage: https://github.com/githubuser/skylark-client#readme
src/Network/Skylark/Client.hs view
@@ -4,6 +4,7 @@ module Network.Skylark.Client ( runSkylark+ , runSkylark' ) where import Control.Concurrent.Async.Lifted@@ -56,7 +57,7 @@ , requestBody = requestBodySourceChunked $ sourceTBQueue queue } --- | Run Skylark client.+-- | Run Skylark client with connections concurrent. -- runSkylark :: MonadControl m => String -> ByteString -> Source m ByteString -> Sink ByteString m () -> m () runSkylark url device source sink = do@@ -67,3 +68,15 @@ void $ concurrently (concurrently (download device manager request downQueue) (sourceTBQueue downQueue $$ sink)) (concurrently (source $$ sinkTBQueue upQueue) (upload device manager request upQueue))++-- | Run Skylark client with connections racing.+--+runSkylark' :: MonadControl m => String -> ByteString -> Source m ByteString -> Sink ByteString m () -> m ()+runSkylark' url device source sink = do+ manager <- liftIO $ newManager tlsManagerSettings+ request <- parseRequest url+ upQueue <- liftIO $ atomically $ newTBQueue 8192+ downQueue <- liftIO $ atomically $ newTBQueue 8192+ race_+ (race_ (download device manager request downQueue) (sourceTBQueue downQueue $$ sink))+ (race_ (source $$ sinkTBQueue upQueue) (upload device manager request upQueue))