import Network.AMQP.Utils.Options
import Paths_amqp_utils (version)
import System.Environment
+import System.Exit
import System.INotify
import qualified System.Posix.Files as F
if (confirm args)
then waitForConfirms chan >>= (printparam' "confirmed") . show
else return ()
- closeConnection conn
- hr "connection closed"
+ X.catch (closeConnection conn) exceptionHandler
+
+-- | A handler for clean exit
+exceptionHandler :: AMQPException -> IO ()
+exceptionHandler (ChannelClosedException Normal txt) = printparam' "exit" txt >> exitWith ExitSuccess
+exceptionHandler (ConnectionClosedException Normal txt) = printparam' "exit" txt >> exitWith ExitSuccess
+exceptionHandler x = printparam' "exception" (show x) >> exitWith (ExitFailure 1)
-- | The handler for publisher confirms
confirmCallback :: (Word64, Bool, AckType) -> IO ()