X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=python%2Fovs%2Freconnect.py;h=8817494686678d3d3ff8eddc65d02ccdbfece1a4;hb=63b1a5213331cd962be05df57f1375db902216c5;hp=3a7118859c80d2de325b88d46886234991776a28;hpb=eba18f0044cbe3654b4c796bbe7c056ca1793c70;p=openvswitch diff --git a/python/ovs/reconnect.py b/python/ovs/reconnect.py index 3a711885..88174946 100644 --- a/python/ovs/reconnect.py +++ b/python/ovs/reconnect.py @@ -1,4 +1,4 @@ -# Copyright (c) 2010 Nicira Networks +# Copyright (c) 2010, 2011 Nicira Networks # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -72,7 +72,7 @@ class Reconnect(object): return CONNECT class ConnectInProgress(object): - name = "CONNECT_IN_PROGRESS" + name = "CONNECTING" is_connected = False @staticmethod @@ -117,7 +117,7 @@ class Reconnect(object): % (fsm.name, (now - fsm.state_entered) / 1000.0)) return DISCONNECT - class Reconnect: + class Reconnect(object): name = "RECONNECT" is_connected = False @@ -145,8 +145,8 @@ class Reconnect(object): self.state_entered = now self.backoff = 0 self.last_received = now - self.last_connected = now - self.last_disconnected = now + self.last_connected = None + self.last_disconnected = None self.max_tries = None self.creation_time = now @@ -332,15 +332,15 @@ class Reconnect(object): % self.name) else: if self.passive: - type = "listen" + type_ = "listen" else: - type = "connection" + type_ = "connection" if error > 0: logging.warning("%s: %s attempt failed (%s)" - % (self.name, type, os.strerror(error))) + % (self.name, type_, os.strerror(error))) else: self.info_level("%s: %s attempt timed out" - % (self.name, type)) + % (self.name, type_)) if (self.state in (Reconnect.Active, Reconnect.Idle)): self.last_disconnected = now @@ -513,8 +513,8 @@ class Reconnect(object): def timeout(self, now): """Returns the number of milliseconds after which self.run() should be - called if nothing else notable happens in the meantime, or a negative - number if this is currently unnecessary.""" + called if nothing else notable happens in the meantime, or None if this + is currently unnecessary.""" deadline = self.state.deadline(self) if deadline is not None: remaining = deadline - now @@ -529,23 +529,21 @@ class Reconnect(object): False otherwise.""" return self.state.is_connected - def get_connection_duration(self, now): - """Returns the number of milliseconds for which this FSM has been - continuously connected to its peer. (If this FSM is not currently - connected, this is 0.)""" - if self.is_connected(): + def get_last_connect_elapsed(self, now): + """Returns the number of milliseconds since 'fsm' was last connected + to its peer. Returns None if never connected.""" + if self.last_connected: return now - self.last_connected else: - return 0 + return None - def get_disconnect_duration(self, now): - """Returns the number of milliseconds for which this FSM has been - continuously disconnected from its peer. (If this FSM is not currently - connected, this is 0.)""" - if not self.is_connected(): + def get_last_disconnect_elapsed(self, now): + """Returns the number of milliseconds since 'fsm' was last disconnected + from its peer. Returns None if never disconnected.""" + if self.last_disconnected: return now - self.last_disconnected else: - return 0 + return None def get_stats(self, now): class Stats(object): @@ -558,10 +556,11 @@ class Reconnect(object): stats.backoff = self.backoff stats.seqno = self.seqno stats.is_connected = self.is_connected() - stats.current_connection_duration = self.get_connection_duration(now) - stats.current_disconnect_duration = self.get_disconnect_duration(now) - stats.total_connected_duration = (stats.current_connection_duration + - self.total_connected_duration) + stats.msec_since_connect = self.get_last_connect_elapsed(now) + stats.msec_since_disconnect = self.get_last_disconnect_elapsed(now) + stats.total_connected_duration = self.total_connected_duration + if self.is_connected(): + stats.total_connected_duration += self.get_last_connect_elapsed(now) stats.n_attempted_connections = self.n_attempted_connections stats.n_successful_connections = self.n_successful_connections stats.state = self.state.name