Data.Streaming.Network.Internal

streaming-commons-0.1.17: Common lower-level functions needed by various streaming data libraries

Safe Haskell | None
Language | Haskell98

Data.Streaming.Network.Internal

Synopsis

- data ServerSettings = ServerSettings {
  - serverPort :: !Int
  - serverHost :: !HostPreference
  - serverSocket :: !(Maybe Socket)
  - serverAfterBind :: !(Socket -> IO ())
  - serverNeedLocalAddr :: !Bool
  - serverReadBufferSize :: !Int
  }
- data ClientSettings = ClientSettings {
  - clientPort :: !Int
  - clientHost :: !ByteString
  - clientAddrFamily :: !Family
  - clientReadBufferSize :: !Int
  }
- data HostPreference
  - = HostAny
  - | HostIPv4
  - | HostIPv4Only
  - | HostIPv6
  - | HostIPv6Only
  - | Host String
- data Message = Message {
  - msgData :: !ByteString
  - msgSender :: !SockAddr
  }
- data AppData = AppData {
  - appRead' :: !(IO ByteString)
  - appWrite' :: !(ByteString -> IO ())
  - appSockAddr' :: !SockAddr
  - appLocalAddr' :: !(Maybe SockAddr)
  - appCloseConnection' :: !(IO ())
  - appRawSocket' :: Maybe Socket
  }
- data ServerSettingsUnix = ServerSettingsUnix {
  - serverPath :: !FilePath
  - serverAfterBindUnix :: !(Socket -> IO ())
  - serverReadBufferSizeUnix :: !Int
  }
- data ClientSettingsUnix = ClientSettingsUnix {
  - clientPath :: !FilePath
  - clientReadBufferSizeUnix :: !Int
  }
- data AppDataUnix = AppDataUnix {
  - appReadUnix :: !(IO ByteString)
  - appWriteUnix :: !(ByteString -> IO ())
  }

# Documentation

data ServerSettings #

Settings for a TCP server. It takes a port to listen on, and an optional hostname to bind to.

Constructors

ServerSettings |
Fields serverPort :: !Int serverHost :: !HostPreference serverSocket :: !(Maybe Socket) listening socket serverAfterBind :: !(Socket -> IO ()) serverNeedLocalAddr :: !Bool serverReadBufferSize :: !Int

Instances

HasReadBufferSize ServerSettings # | Since 0.1.13
Methods readBufferSizeLens :: Functor f => (Int -> f Int) -> ServerSettings -> f ServerSettings #
HasAfterBind ServerSettings # |
Methods afterBindLens :: Functor f => ((Socket -> IO ()) -> f (Socket -> IO ())) -> ServerSettings -> f ServerSettings #
HasPort ServerSettings # |
Methods portLens :: Functor f => (Int -> f Int) -> ServerSettings -> f ServerSettings #

data ClientSettings #

Settings for a TCP client, specifying how to connect to the server.

Constructors

ClientSettings |
Fields clientPort :: !Int clientHost :: !ByteString clientAddrFamily :: !Family clientReadBufferSize :: !Int

Instances

HasReadBufferSize ClientSettings # | Since 0.1.13
Methods readBufferSizeLens :: Functor f => (Int -> f Int) -> ClientSettings -> f ClientSettings #
HasPort ClientSettings # |
Methods portLens :: Functor f => (Int -> f Int) -> ClientSettings -> f ClientSettings #

data HostPreference #

Which host to bind.

Note: The `IsString` instance recognizes the following special values:

- `*` means `HostAny` - "any IPv4 or IPv6 hostname"
- `*4` means `HostIPv4` - "any IPv4 or IPv6 hostname, IPv4 preferred"
- `!4` means `HostIPv4Only` - "any IPv4 hostname"
- `*6` means `HostIPv6`@ - "any IPv4 or IPv6 hostname, IPv6 preferred"
- `!6` means `HostIPv6Only` - "any IPv6 hostname"

Note that the permissive `*` values allow binding to an IPv4 or an IPv6 hostname, which means you might be able to successfully bind to a port more times than you expect (eg once on the IPv4 localhost 127.0.0.1 and again on the IPv6 localhost 0:0:0:0:0:0:0:1).

Any other value is treated as a hostname. As an example, to bind to the IPv4 local host only, use "127.0.0.1".

Constructors

HostAny |
HostIPv4 |
HostIPv4Only |
HostIPv6 |
HostIPv6Only |
Host String |

Instances

Eq HostPreference # |
Methods (==) :: HostPreference -> HostPreference -> Bool # (/=) :: HostPreference -> HostPreference -> Bool #
Ord HostPreference # |
Methods compare :: HostPreference -> HostPreference -> Ordering # (<) :: HostPreference -> HostPreference -> Bool # (<=) :: HostPreference -> HostPreference -> Bool # (>) :: HostPreference -> HostPreference -> Bool # (>=) :: HostPreference -> HostPreference -> Bool # max :: HostPreference -> HostPreference -> HostPreference # min :: HostPreference -> HostPreference -> HostPreference #
Read HostPreference # |
Methods readsPrec :: Int -> ReadS HostPreference # readList :: ReadS [HostPreference] # readPrec :: ReadPrec HostPreference # readListPrec :: ReadPrec [HostPreference] #
Show HostPreference # |
Methods showsPrec :: Int -> HostPreference -> ShowS # show :: HostPreference -> String # showList :: [HostPreference] -> ShowS #
IsString HostPreference # |
Methods fromString :: String -> HostPreference #

data Message #

Representation of a single UDP message

Constructors

Message |
Fields msgData :: !ByteString msgSender :: !SockAddr

data AppData #

The data passed to an `Application`.

Constructors

AppData |
Fields appRead' :: !(IO ByteString) appWrite' :: !(ByteString -> IO ()) appSockAddr' :: !SockAddr appLocalAddr' :: !(Maybe SockAddr) appCloseConnection' :: !(IO ()) appRawSocket' :: Maybe Socket

Instances

HasReadWrite AppData # |
Methods readLens :: Functor f => (IO ByteString -> f (IO ByteString)) -> AppData -> f AppData # writeLens :: Functor f => ((ByteString -> IO ()) -> f (ByteString -> IO ())) -> AppData -> f AppData #

data ServerSettingsUnix #

Settings for a Unix domain sockets server.

Constructors

ServerSettingsUnix |
Fields serverPath :: !FilePath serverAfterBindUnix :: !(Socket -> IO ()) serverReadBufferSizeUnix :: !Int

Instances

HasReadBufferSize ServerSettingsUnix # | Since 0.1.13
Methods readBufferSizeLens :: Functor f => (Int -> f Int) -> ServerSettingsUnix -> f ServerSettingsUnix #
HasAfterBind ServerSettingsUnix # |
Methods afterBindLens :: Functor f => ((Socket -> IO ()) -> f (Socket -> IO ())) -> ServerSettingsUnix -> f ServerSettingsUnix #
HasPath ServerSettingsUnix # |
Methods pathLens :: Functor f => (FilePath -> f FilePath) -> ServerSettingsUnix -> f ServerSettingsUnix #

data ClientSettingsUnix #

Settings for a Unix domain sockets client.

Constructors

ClientSettingsUnix |
Fields clientPath :: !FilePath clientReadBufferSizeUnix :: !Int

Instances

HasReadBufferSize ClientSettingsUnix # | Since 0.1.14
Methods readBufferSizeLens :: Functor f => (Int -> f Int) -> ClientSettingsUnix -> f ClientSettingsUnix #
HasPath ClientSettingsUnix # |
Methods pathLens :: Functor f => (FilePath -> f FilePath) -> ClientSettingsUnix -> f ClientSettingsUnix #

data AppDataUnix #

The data passed to a Unix domain sockets `Application`.

Constructors

AppDataUnix |
Fields appReadUnix :: !(IO ByteString) appWriteUnix :: !(ByteString -> IO ())

Instances

HasReadWrite AppDataUnix # |
Methods readLens :: Functor f => (IO ByteString -> f (IO ByteString)) -> AppDataUnix -> f AppDataUnix # writeLens :: Functor f => ((ByteString -> IO ()) -> f (ByteString -> IO ())) -> AppDataUnix -> f AppDataUnix #