Use an IORef
rather than a MVar
.
The job of a manager is to synchronize threads, so it is not necessary to block.
This commit is contained in:
parent
1af0d7b5ab
commit
aeb1136658
1 changed files with 4 additions and 6 deletions
|
@ -3,13 +3,13 @@
|
||||||
module Servant.Common.Req where
|
module Servant.Common.Req where
|
||||||
|
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
import Control.Concurrent
|
|
||||||
import Control.Exception
|
import Control.Exception
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Control.Monad.Catch (MonadThrow)
|
import Control.Monad.Catch (MonadThrow)
|
||||||
import Control.Monad.IO.Class
|
import Control.Monad.IO.Class
|
||||||
import Control.Monad.Trans.Either
|
import Control.Monad.Trans.Either
|
||||||
import Data.ByteString.Lazy hiding (pack, filter, map, null)
|
import Data.ByteString.Lazy hiding (pack, filter, map, null)
|
||||||
|
import Data.IORef
|
||||||
import Data.String
|
import Data.String
|
||||||
import Data.String.Conversions
|
import Data.String.Conversions
|
||||||
import Data.Proxy
|
import Data.Proxy
|
||||||
|
@ -98,13 +98,11 @@ reqToRequest req (BaseUrl reqScheme reqHost reqPort) =
|
||||||
-- * performing requests
|
-- * performing requests
|
||||||
|
|
||||||
{-# NOINLINE __manager #-}
|
{-# NOINLINE __manager #-}
|
||||||
__manager :: MVar Manager
|
__manager :: IORef Manager
|
||||||
__manager = unsafePerformIO (newManager tlsManagerSettings >>= newMVar)
|
__manager = unsafePerformIO (newManager tlsManagerSettings >>= newIORef)
|
||||||
|
|
||||||
__withGlobalManager :: (Manager -> IO a) -> IO a
|
__withGlobalManager :: (Manager -> IO a) -> IO a
|
||||||
__withGlobalManager action = modifyMVar __manager $ \ manager -> do
|
__withGlobalManager action = readIORef __manager >>= action
|
||||||
result <- action manager
|
|
||||||
return (manager, result)
|
|
||||||
|
|
||||||
|
|
||||||
displayHttpRequest :: Method -> String
|
displayHttpRequest :: Method -> String
|
||||||
|
|
Loading…
Reference in a new issue