{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE StaticPointers #-}
module Ouroboros.Network.ConnectionId where
import NoThunks.Class (InspectHeap (..), NoThunks)
import Data.Hashable
import GHC.Generics (Generic)
import Ouroboros.Network.Util.ShowProxy (Proxy (..), ShowProxy (..))
data ConnectionId addr = ConnectionId {
forall addr. ConnectionId addr -> addr
localAddress :: !addr,
forall addr. ConnectionId addr -> addr
remoteAddress :: !addr
}
deriving (ConnectionId addr -> ConnectionId addr -> Bool
forall addr.
Eq addr =>
ConnectionId addr -> ConnectionId addr -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ConnectionId addr -> ConnectionId addr -> Bool
$c/= :: forall addr.
Eq addr =>
ConnectionId addr -> ConnectionId addr -> Bool
== :: ConnectionId addr -> ConnectionId addr -> Bool
$c== :: forall addr.
Eq addr =>
ConnectionId addr -> ConnectionId addr -> Bool
Eq, ConnectionId addr -> ConnectionId addr -> Bool
ConnectionId addr -> ConnectionId addr -> Ordering
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall {addr}. Ord addr => Eq (ConnectionId addr)
forall addr.
Ord addr =>
ConnectionId addr -> ConnectionId addr -> Bool
forall addr.
Ord addr =>
ConnectionId addr -> ConnectionId addr -> Ordering
forall addr.
Ord addr =>
ConnectionId addr -> ConnectionId addr -> ConnectionId addr
min :: ConnectionId addr -> ConnectionId addr -> ConnectionId addr
$cmin :: forall addr.
Ord addr =>
ConnectionId addr -> ConnectionId addr -> ConnectionId addr
max :: ConnectionId addr -> ConnectionId addr -> ConnectionId addr
$cmax :: forall addr.
Ord addr =>
ConnectionId addr -> ConnectionId addr -> ConnectionId addr
>= :: ConnectionId addr -> ConnectionId addr -> Bool
$c>= :: forall addr.
Ord addr =>
ConnectionId addr -> ConnectionId addr -> Bool
> :: ConnectionId addr -> ConnectionId addr -> Bool
$c> :: forall addr.
Ord addr =>
ConnectionId addr -> ConnectionId addr -> Bool
<= :: ConnectionId addr -> ConnectionId addr -> Bool
$c<= :: forall addr.
Ord addr =>
ConnectionId addr -> ConnectionId addr -> Bool
< :: ConnectionId addr -> ConnectionId addr -> Bool
$c< :: forall addr.
Ord addr =>
ConnectionId addr -> ConnectionId addr -> Bool
compare :: ConnectionId addr -> ConnectionId addr -> Ordering
$ccompare :: forall addr.
Ord addr =>
ConnectionId addr -> ConnectionId addr -> Ordering
Ord, Int -> ConnectionId addr -> ShowS
forall addr. Show addr => Int -> ConnectionId addr -> ShowS
forall addr. Show addr => [ConnectionId addr] -> ShowS
forall addr. Show addr => ConnectionId addr -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ConnectionId addr] -> ShowS
$cshowList :: forall addr. Show addr => [ConnectionId addr] -> ShowS
show :: ConnectionId addr -> String
$cshow :: forall addr. Show addr => ConnectionId addr -> String
showsPrec :: Int -> ConnectionId addr -> ShowS
$cshowsPrec :: forall addr. Show addr => Int -> ConnectionId addr -> ShowS
Show, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall addr x. Rep (ConnectionId addr) x -> ConnectionId addr
forall addr x. ConnectionId addr -> Rep (ConnectionId addr) x
$cto :: forall addr x. Rep (ConnectionId addr) x -> ConnectionId addr
$cfrom :: forall addr x. ConnectionId addr -> Rep (ConnectionId addr) x
Generic)
deriving Context -> ConnectionId addr -> IO (Maybe ThunkInfo)
Proxy (ConnectionId addr) -> String
forall addr.
Typeable addr =>
Context -> ConnectionId addr -> IO (Maybe ThunkInfo)
forall addr. Typeable addr => Proxy (ConnectionId addr) -> String
forall a.
(Context -> a -> IO (Maybe ThunkInfo))
-> (Context -> a -> IO (Maybe ThunkInfo))
-> (Proxy a -> String)
-> NoThunks a
showTypeOf :: Proxy (ConnectionId addr) -> String
$cshowTypeOf :: forall addr. Typeable addr => Proxy (ConnectionId addr) -> String
wNoThunks :: Context -> ConnectionId addr -> IO (Maybe ThunkInfo)
$cwNoThunks :: forall addr.
Typeable addr =>
Context -> ConnectionId addr -> IO (Maybe ThunkInfo)
noThunks :: Context -> ConnectionId addr -> IO (Maybe ThunkInfo)
$cnoThunks :: forall addr.
Typeable addr =>
Context -> ConnectionId addr -> IO (Maybe ThunkInfo)
NoThunks via InspectHeap (ConnectionId addr)
deriving forall a b. a -> ConnectionId b -> ConnectionId a
forall a b. (a -> b) -> ConnectionId a -> ConnectionId b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: forall a b. a -> ConnectionId b -> ConnectionId a
$c<$ :: forall a b. a -> ConnectionId b -> ConnectionId a
fmap :: forall a b. (a -> b) -> ConnectionId a -> ConnectionId b
$cfmap :: forall a b. (a -> b) -> ConnectionId a -> ConnectionId b
Functor
instance Hashable a => Hashable (ConnectionId a)
instance forall addr. ShowProxy addr => ShowProxy (ConnectionId addr) where
showProxy :: Proxy (ConnectionId addr) -> String
showProxy Proxy (ConnectionId addr)
_ = String
"ConnectionId " forall a. [a] -> [a] -> [a]
++ forall {k} (p :: k). ShowProxy p => Proxy p -> String
showProxy (forall {k} (t :: k). Proxy t
Proxy :: Proxy addr)