From 795115d2de657598a679d7efecf0574d6ed2240b Mon Sep 17 00:00:00 2001 From: Ning Sun Date: Sat, 23 Apr 2016 20:53:47 +0800 Subject: [PATCH] (feat) added channel close handler to fail request fast Signed-off-by: Ning Sun --- src/slacker/client/common.clj | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/slacker/client/common.clj b/src/slacker/client/common.clj index bf93614..c31a46c 100644 --- a/src/slacker/client/common.clj +++ b/src/slacker/client/common.clj @@ -314,7 +314,17 @@ (instance? ConnectException exc) (instance? ClosedChannelException exc)) (log/warn "Failed to connect to server or connection lost.") - (log/error exc "Unexpected error in event loop"))))) + (log/error exc "Unexpected error in event loop"))) + (on-inactive [ch] + (let [rmap (-> ch + (channel-hostport) + (@server-requests) + :pendings)] + (doseq [handler (vals @rmap)] + (when (not-empty handler) + (deliver (:promise handler) + {:cause {:error :connection-broken}}))) + (reset! rmap {}))))) (def ^:dynamic *options* {:tcp-nodelay true