{-# language DuplicateRecordFields #-} {-# language NamedFieldPuns #-} module Socket.Address ( posixToIPv4Peer , ipv4PeerToPosix ) where import Net.Types (IPv4(..)) import qualified Posix.Socket as S import qualified Socket.IPv4 as IPv4 posixToIPv4Peer :: S.SocketAddressInternet -> IPv4.Peer {-# inline posixToIPv4Peer #-} posixToIPv4Peer (S.SocketAddressInternet {address,port}) = IPv4.Peer { address = IPv4 (S.networkToHostLong address) , port = S.networkToHostShort port } ipv4PeerToPosix :: IPv4.Peer -> S.SocketAddressInternet {-# inline ipv4PeerToPosix #-} ipv4PeerToPosix (IPv4.Peer {address, port}) = S.SocketAddressInternet { port = S.hostToNetworkShort port , address = S.hostToNetworkLong (getIPv4 address) }