summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-02-11 10:25:06 +0000
committerErik Johnston <erik@matrix.org>2015-02-11 10:25:06 +0000
commitdcf52469e821b3b2b69a0610c2c4f025a5aac68f (patch)
treeec7527eedb3de013c6ff2a34883e627df1890a09
parentTime out HTTP federation requests (diff)
downloadsynapse-dcf52469e821b3b2b69a0610c2c4f025a5aac68f.tar.xz
Move time_bound_deferred into Clock
-rw-r--r--synapse/http/matrixfederationclient.py5
-rw-r--r--synapse/util/__init__.py21
-rw-r--r--synapse/util/async.py20
3 files changed, 22 insertions, 24 deletions
diff --git a/synapse/http/matrixfederationclient.py b/synapse/http/matrixfederationclient.py
index fdc1e2678e..74e523960f 100644
--- a/synapse/http/matrixfederationclient.py
+++ b/synapse/http/matrixfederationclient.py
@@ -22,7 +22,7 @@ from twisted.web._newclient import ResponseDone
 
 from synapse.http.agent_name import AGENT_NAME
 from synapse.http.endpoint import matrix_federation_endpoint
-from synapse.util.async import sleep, time_bound_deferred
+from synapse.util.async import sleep
 from synapse.util.logcontext import PreserveLoggingContext
 
 from syutil.jsonutil import encode_canonical_json
@@ -129,9 +129,8 @@ class MatrixFederationHttpClient(object):
                         producer
                     )
 
-                    response = yield time_bound_deferred(
+                    response = yield self.clock.time_bound_deferred(
                         request_deferred,
-                        clock=self.clock,
                         time_out=60,
                     )
 
diff --git a/synapse/util/__init__.py b/synapse/util/__init__.py
index 4e837a918e..2da8dfa719 100644
--- a/synapse/util/__init__.py
+++ b/synapse/util/__init__.py
@@ -15,7 +15,7 @@
 
 from synapse.util.logcontext import LoggingContext
 
-from twisted.internet import reactor
+from twisted.internet import defer, reactor
 
 import time
 
@@ -45,3 +45,22 @@ class Clock(object):
 
     def cancel_call_later(self, timer):
         timer.cancel()
+
+    def time_bound_deferred(self, given_deferred, time_out):
+        ret_deferred = defer.Deferred()
+
+        def timed_out():
+            if not given_deferred.called:
+                given_deferred.cancel()
+                ret_deferred.errback(RuntimeError("Timed out"))
+
+        timer = self.call_later(time_out, timed_out)
+
+        def succeed(result):
+            self.cancel_call_later(timer)
+            ret_deferred.callback(result)
+
+        given_deferred.addCallback(succeed)
+        given_deferred.addErrback(ret_deferred.errback)
+
+        return ret_deferred
diff --git a/synapse/util/async.py b/synapse/util/async.py
index d4d1d4b472..c4fe5d522f 100644
--- a/synapse/util/async.py
+++ b/synapse/util/async.py
@@ -32,23 +32,3 @@ def run_on_reactor():
     iteration of the main loop
     """
     return sleep(0)
-
-
-def time_bound_deferred(given_deferred, clock, time_out):
-    ret_deferred = defer.Deferred()
-
-    def timed_out():
-        if not given_deferred.called:
-            given_deferred.cancel()
-            ret_deferred.errback(RuntimeError("Timed out"))
-
-    timer = clock.call_later(time_out, timed_out)
-
-    def succeed(result):
-        clock.cancel_call_later(timer)
-        ret_deferred.callback(result)
-
-    given_deferred.addCallback(succeed)
-    given_deferred.addErrback(ret_deferred.errback)
-
-    return ret_deferred