-- |
-- Module: Network.Transport.InMemory.Debug
--
-- Miscelanteous functions for debug purposes.
module Network.Transport.InMemory.Debug
  ( breakConnection
  ) where

import Control.Concurrent.STM
import Network.Transport
import Network.Transport.InMemory.Internal

-- | Function that simulate failing connection between two endpoints,
-- after calling this function both endpoints will receive ConnectionEventLost
-- message, and all @LocalConnectionValid@ connections will
-- be put into @LocalConnectionFailed@ state.
breakConnection :: TransportInternals
                -> EndPointAddress          -- ^ @From@ connection
                -> EndPointAddress          -- ^ @To@ connection
                -> String                   -- ^ Error message
                -> IO ()
breakConnection (TransportInternals state) from to message =
  atomically $ apiBreakConnection state from to message