lib/app: move up the delay services to AsyncHttpRequest
authorAlexis Laferrière <alexis.laf@xymus.net>
Sat, 21 Nov 2015 21:58:52 +0000 (16:58 -0500)
committerAlexis Laferrière <alexis.laf@xymus.net>
Sat, 12 Mar 2016 18:29:22 +0000 (13:29 -0500)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

contrib/tnitter/src/tnitter_app.nit
lib/app/http_request.nit

index dcbfffe..b8a955a 100644 (file)
@@ -36,7 +36,7 @@ import json::serialization
 import model
 
 # Delay in seconds before the next request after an error
-fun request_delay_on_error: Int do return 60
+fun request_delay_on_error: Float do return 60.0
 
 redef class App
        redef fun on_create
@@ -106,13 +106,7 @@ abstract class AsyncTnitterRequest
        redef var rest_action
 
        # Should this request be delayed by `request_delay_on_error` seconds?
-       var delay: Bool
-
-       redef fun main
-       do
-               if delay then nanosleep(request_delay_on_error, 0)
-               return super
-       end
+       fun after_error(value: Bool) is autoinit do if value then delay = request_delay_on_error
 end
 
 # Async request to list latest posts, either immediately or by push notification
index 4b62f4a..9a5feca 100644 (file)
@@ -48,6 +48,9 @@ class AsyncHttpRequest
        # Should the response content be deserialized from JSON?
        var deserialize_json = true is writable
 
+       # Delay in seconds before sending this request
+       var delay = 0.0 is writable
+
        redef fun start
        do
                before
@@ -56,6 +59,9 @@ class AsyncHttpRequest
 
        redef fun main
        do
+               var delay = delay
+               if delay > 0.0 then delay.sleep
+
                var uri = rest_server_uri / rest_action
 
                # Execute REST request