git.iko.soy/distributed-process
on master help sign in
Remove dependency on regex-applicative
commitd4be8a7b34c4af0aade7c476bcd56f0461511c96 authorEdsko de Vries <edsko@edsko.net> dateTue 15 May 2012, 13:10 (14 years ago) parentb9e6b58
2 files changed+9−10
network-transport-2/network-transport.cabal−2 network-transport-2/src/Network/Transport/TCP.hs+9−8
network-transport-2/network-transport.cabal−2
@@ -13,7 +13,6 @@ Library
1313 containers,
1414 data-lens,
1515 network,
16− regex-applicative,
1716 mtl,
1817 transformers
1918 Exposed-modules: Network.Transport,
@@ -32,7 +31,6 @@ Test-Suite TestTCP
3231 bytestring,
3332 data-lens,
3433 network,
35− regex-applicative,
3634 mtl,
3735 transformers,
3836 ansi-terminal
network-transport-2/src/Network/Transport/TCP.hs+9−8
@@ -70,13 +70,13 @@ import Control.Concurrent.MVar ( MVar
7070 , withMVar
7171 )
7272import Control.Category ((>>>))
73−import Control.Applicative ((<*>), (*>), (<$>))
73+import Control.Applicative ((<$>))
7474import Control.Monad (forM, forM_, void, when, unless)
7575import Control.Exception (IOException, SomeException, handle, throw, try, bracketOnError)
7676import Data.IORef (IORef, newIORef, writeIORef, readIORef)
7777import Data.ByteString (ByteString)
7878import qualified Data.ByteString as BS (concat)
79−import qualified Data.ByteString.Char8 as BSC (pack, unpack)
79+import qualified Data.ByteString.Char8 as BSC (pack, unpack, split)
8080import Data.Int (Int32)
8181import Data.IntMap (IntMap)
8282import qualified Data.IntMap as IntMap (empty)
@@ -85,7 +85,6 @@ import qualified Data.IntSet as IntSet (empty, insert, elems, singleton, null, d
8585import Data.Map (Map)
8686import qualified Data.Map as Map (empty, elems, size)
8787import Data.Lens.Lazy (Lens, lens, intMapLens, mapLens, (^.), (^=), (^+=), (^%=))
88−import Text.Regex.Applicative (RE, few, anySym, sym, many, match)
8988import System.IO (hPutStrLn, stderr)
9089
9190-- $design
@@ -733,12 +732,14 @@ encodeEndPointAddress host port ix = EndPointAddress . BSC.pack $
733732 host ++ ":" ++ port ++ ":" ++ show ix
734733
735734-- | Decode end point address
736−-- TODO: This uses regular expression parsing, which is nice, but unnecessary
737735decodeEndPointAddress :: EndPointAddress -> Maybe (N.HostName, N.ServiceName, EndPointId)
738−decodeEndPointAddress (EndPointAddress bs) = match endPointAddressRE (BSC.unpack bs)
739− where
740− endPointAddressRE :: RE Char (N.HostName, N.ServiceName, EndPointId)
741− endPointAddressRE = (,,) <$> few anySym <*> (sym ':' *> few anySym) <*> (sym ':' *> (read <$> many anySym))
736+decodeEndPointAddress (EndPointAddress bs) = case map BSC.unpack $ BSC.split ':' bs of
737+ [host, port, endPointIdStr] ->
738+ case reads endPointIdStr of
739+ [(endPointId, "")] -> Just (host, port, endPointId)
740+ _ -> Nothing
741+ _ ->
742+ Nothing
742743
743744-- | Do a (blocking) remote request
744745--