Improve calculateRetryWaitMilliseconds (#63)
* improve calculateRetryWaitMilliseconds * update comment
This commit is contained in:
		
				
					committed by
					
						 Benjamin Sergeant
						Benjamin Sergeant
					
				
			
			
				
	
			
			
			
						parent
						
							6bcbaea293
						
					
				
				
					commit
					0c689bc382
				
			| @@ -13,16 +13,21 @@ | |||||||
|  |  | ||||||
| namespace | namespace | ||||||
| { | { | ||||||
|     uint64_t calculateRetryWaitMilliseconds(uint64_t retry_count) |     uint64_t calculateRetryWaitMilliseconds(uint32_t retry_count) | ||||||
|     { |     { | ||||||
|         // This will overflow quite fast for large value of retry_count |         uint64_t wait_time; | ||||||
|         // and will become 0, in which case the wait time will be none |  | ||||||
|         // and we'll be constantly retrying to connect. |  | ||||||
|         uint64_t wait_time = ((uint64_t) std::pow(2, retry_count) * 100L); |  | ||||||
|  |  | ||||||
|         // cap the wait time to 10s, or to retry_count == 10 for which wait_time > 10s |         if (retry_count <= 6) | ||||||
|         uint64_t tenSeconds = 10 * 1000; |         { | ||||||
|         return (wait_time > tenSeconds || retry_count > 10) ? tenSeconds : wait_time; |             // max wait_time is 6400 ms (2 ^ 6 = 64) | ||||||
|  |             wait_time = ((uint64_t)std::pow(2, retry_count) * 100L); | ||||||
|  |         } | ||||||
|  |         else | ||||||
|  |         { | ||||||
|  |             wait_time = 10 * 1000; // 10 sec | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return wait_time; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -228,7 +233,7 @@ namespace ix | |||||||
|  |  | ||||||
|     void WebSocket::reconnectPerpetuallyIfDisconnected() |     void WebSocket::reconnectPerpetuallyIfDisconnected() | ||||||
|     { |     { | ||||||
|         uint64_t retries = 0; |         uint32_t retries = 0; | ||||||
|         WebSocketErrorInfo connectErr; |         WebSocketErrorInfo connectErr; | ||||||
|         ix::WebSocketInitResult status; |         ix::WebSocketInitResult status; | ||||||
|         using millis = std::chrono::duration<double, std::milli>; |         using millis = std::chrono::duration<double, std::milli>; | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ namespace ix | |||||||
| { | { | ||||||
|     struct WebSocketErrorInfo |     struct WebSocketErrorInfo | ||||||
|     { |     { | ||||||
|         uint64_t retries; |         uint32_t retries; | ||||||
|         double wait_time; |         double wait_time; | ||||||
|         int http_status; |         int http_status; | ||||||
|         std::string reason; |         std::string reason; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user