packages feed

faktory 1.1.2.2 → 1.1.2.3

raw patch · 4 files changed

+60/−13 lines, 4 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ Network.Connection.Compat: ConnectionParams :: HostName -> PortNumber -> Maybe TLSSettings -> Maybe ProxySettings -> ConnectionParams
+ Network.Connection.Compat: HostCannotConnect :: String -> [IOException] -> HostCannotConnect
+ Network.Connection.Compat: HostNotResolved :: String -> HostNotResolved
+ Network.Connection.Compat: LineTooLong :: LineTooLong
+ Network.Connection.Compat: OtherProxy :: HostName -> PortNumber -> ProxySettings
+ Network.Connection.Compat: SockSettingsEnvironment :: Maybe String -> ProxySettings
+ Network.Connection.Compat: SockSettingsSimple :: HostName -> PortNumber -> ProxySettings
+ Network.Connection.Compat: TLSSettings :: ClientParams -> TLSSettings
+ Network.Connection.Compat: TLSSettingsSimple :: Bool -> Bool -> Bool -> TLSSettings
+ Network.Connection.Compat: [connectionHostname] :: ConnectionParams -> HostName
+ Network.Connection.Compat: [connectionPort] :: ConnectionParams -> PortNumber
+ Network.Connection.Compat: [connectionUseSecure] :: ConnectionParams -> Maybe TLSSettings
+ Network.Connection.Compat: [connectionUseSocks] :: ConnectionParams -> Maybe ProxySettings
+ Network.Connection.Compat: [settingDisableCertificateValidation] :: TLSSettings -> Bool
+ Network.Connection.Compat: [settingDisableSession] :: TLSSettings -> Bool
+ Network.Connection.Compat: [settingUseServerName] :: TLSSettings -> Bool
+ Network.Connection.Compat: connectFromHandle :: ConnectionContext -> Handle -> ConnectionParams -> IO Connection
+ Network.Connection.Compat: connectFromSocket :: ConnectionContext -> Socket -> ConnectionParams -> IO Connection
+ Network.Connection.Compat: connectTo :: ConnectionContext -> ConnectionParams -> IO Connection
+ Network.Connection.Compat: connectionClose :: Connection -> IO ()
+ Network.Connection.Compat: connectionGet :: Connection -> Int -> IO ByteString
+ Network.Connection.Compat: connectionGetChunk :: Connection -> IO ByteString
+ Network.Connection.Compat: connectionGetChunk' :: Connection -> (ByteString -> (a, ByteString)) -> IO a
+ Network.Connection.Compat: connectionGetExact :: Connection -> Int -> IO ByteString
+ Network.Connection.Compat: connectionGetLine :: Int -> Connection -> IO ByteString
+ Network.Connection.Compat: connectionIsSecure :: Connection -> IO Bool
+ Network.Connection.Compat: connectionPut :: Connection -> ByteString -> IO ()
+ Network.Connection.Compat: connectionSessionManager :: Manager -> SessionManager
+ Network.Connection.Compat: connectionSetSecure :: ConnectionContext -> Connection -> TLSSettings -> IO ()
+ Network.Connection.Compat: connectionWaitForInput :: Connection -> Int -> IO Bool
+ Network.Connection.Compat: data Connection
+ Network.Connection.Compat: data ConnectionContext
+ Network.Connection.Compat: data ConnectionParams
+ Network.Connection.Compat: data HostCannotConnect
+ Network.Connection.Compat: data HostNotResolved
+ Network.Connection.Compat: data LineTooLong
+ Network.Connection.Compat: data ProxySettings
+ Network.Connection.Compat: data TLSSettings
+ Network.Connection.Compat: initConnectionContext :: IO ConnectionContext
+ Network.Connection.Compat: type SockSettings = ProxySettings

Files

CHANGELOG.md view
@@ -1,6 +1,8 @@-## [*Unreleased*](https://github.com/frontrowed/faktory_worker_haskell/compare/v1.1.2.2...main)+## [*Unreleased*](https://github.com/frontrowed/faktory_worker_haskell/compare/v1.1.2.3...main) -None+## [v1.1.2.3](https://github.com/frontrowed/faktory_worker_haskell/compare/v1.1.2.2...v1.1.2.3)++- Set `KeepAlive` in connections to Faktory ([@jagonalez](https://github.com/freckle/faktory_worker_haskell/pull/86))  ## [v1.1.2.2](https://github.com/frontrowed/faktory_worker_haskell/compare/v1.1.2.1...v1.1.2.2) 
faktory.cabal view
@@ -1,6 +1,6 @@ cabal-version:   1.18 name:            faktory-version:         1.1.2.2+version:         1.1.2.3 license:         MIT license-file:    LICENSE copyright:       2018 Freckle Education@@ -67,6 +67,7 @@         Faktory.Settings         Faktory.Settings.Queue         Faktory.Worker+        Network.Connection.Compat      hs-source-dirs:     library     other-modules:      Paths_faktory
library/Faktory/Connection.hs view
@@ -11,19 +11,11 @@ import Control.Applicative ((<|>)) import Data.Maybe (fromMaybe) import Data.Void-import Network.Connection+import Network.Connection.Compat import Network.Socket (HostName, PortNumber) import System.Environment (lookupEnv) import Text.Megaparsec-  ( Parsec-  , anySingle-  , errorBundlePretty-  , manyTill-  , optional-  , parse-  , some-  , (<?>)-  )+  (Parsec, anySingle, errorBundlePretty, manyTill, optional, parse, some, (<?>)) import Text.Megaparsec.Char (char, digitChar, string, upperChar)  newtype Namespace = Namespace Text
+ library/Network/Connection/Compat.hs view
@@ -0,0 +1,52 @@+-- | Copy of 'Network.Connection.connectTo' with 'KeepAlive'+--+-- <https://hackage.haskell.org/package/connection-0.3.1/docs/src/Network.Connection.html#connectTo>+--+module Network.Connection.Compat+  ( connectTo+  , module Network.Connection+  ) where++import Prelude++import Control.Exception (IOException, bracketOnError, throwIO, try)+import Network.Connection hiding (connectTo)+import Network.Socket+import qualified Network.Socket as S++-- brittany --exactprint-only++connectTo :: ConnectionContext -> ConnectionParams -> IO Connection+connectTo cg cParams =+  bracketOnError+    (resolve (connectionHostname cParams) (connectionPort cParams))+    (close . fst)+    ( \(h, _) ->+      connectFromSocket cg h cParams+    )++resolve :: String -> PortNumber -> IO (Socket, SockAddr)+resolve host port = do+    let hints = defaultHints { addrFlags = [AI_ADDRCONFIG], addrSocketType = Stream }+    addrs <- getAddrInfo (Just hints) (Just host) (Just $ show port)+    firstSuccessful $ map tryToConnect addrs+  where+    tryToConnect addr =+        bracketOnError+          (socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr))+          close+          (\sock -> do+            setSocketOption sock KeepAlive 1+            S.connect sock (addrAddress addr)+            return (sock, addrAddress addr)+            )+    firstSuccessful = go []+      where+        go :: [IOException] -> [IO a] -> IO a+        go []      [] = throwIO $ HostNotResolved host+        go l@(_:_) [] = throwIO $ HostCannotConnect host l+        go acc     (act:followingActs) = do+            er <- try act+            case er of+                Left err -> go (err:acc) followingActs+                Right r  -> return r