From 05b776aae2e78df51b5fb6bd6cdeddf1b3479583 Mon Sep 17 00:00:00 2001 From: Marcin Michalski Date: Mon, 13 Aug 2018 14:26:15 +0200 Subject: [PATCH 1/3] reactor Timer ordering --- hazelcast/reactor.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/hazelcast/reactor.py b/hazelcast/reactor.py index 0ba4c7426c..3e6e14ee95 100644 --- a/hazelcast/reactor.py +++ b/hazelcast/reactor.py @@ -6,8 +6,10 @@ import sys import threading import time -from hazelcast.six.moves import queue from collections import deque +from functools import total_ordering + +from hazelcast.six.moves import queue from hazelcast.connection import Connection, BUFFER_SIZE from hazelcast.exception import HazelcastError @@ -191,6 +193,7 @@ def close(self, cause): self._connection_closed_callback(self, cause) +@total_ordering class Timer(object): canceled = False @@ -199,6 +202,15 @@ def __init__(self, end, timer_ended_cb, timer_canceled_cb): self.timer_ended_cb = timer_ended_cb self.timer_canceled_cb = timer_canceled_cb + def __eq__(self, other): + return self.end == other.end + + def __ne__(self, other): + return not (self == other) + + def __lt__(self, other): + return self.end < other.end + def cancel(self): self.canceled = True self.timer_canceled_cb(self) From 7ba0c7a34fedcc1aa78e493fba20f324f81b95f2 Mon Sep 17 00:00:00 2001 From: Marcin Michalski Date: Mon, 13 Aug 2018 22:10:47 +0200 Subject: [PATCH 2/3] reactor Timer ordering - minimal implementation --- hazelcast/reactor.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/hazelcast/reactor.py b/hazelcast/reactor.py index 3e6e14ee95..5df0855b75 100644 --- a/hazelcast/reactor.py +++ b/hazelcast/reactor.py @@ -6,10 +6,8 @@ import sys import threading import time -from collections import deque -from functools import total_ordering - from hazelcast.six.moves import queue +from collections import deque from hazelcast.connection import Connection, BUFFER_SIZE from hazelcast.exception import HazelcastError @@ -193,7 +191,6 @@ def close(self, cause): self._connection_closed_callback(self, cause) -@total_ordering class Timer(object): canceled = False @@ -202,12 +199,6 @@ def __init__(self, end, timer_ended_cb, timer_canceled_cb): self.timer_ended_cb = timer_ended_cb self.timer_canceled_cb = timer_canceled_cb - def __eq__(self, other): - return self.end == other.end - - def __ne__(self, other): - return not (self == other) - def __lt__(self, other): return self.end < other.end From e4251bbea2d2080fca290862a22b1426022318c7 Mon Sep 17 00:00:00 2001 From: Marcin Michalski Date: Thu, 16 Aug 2018 16:19:45 +0200 Subject: [PATCH 3/3] reactor Timer ordering - fully comparable implementation --- hazelcast/reactor.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hazelcast/reactor.py b/hazelcast/reactor.py index 5df0855b75..3e6e14ee95 100644 --- a/hazelcast/reactor.py +++ b/hazelcast/reactor.py @@ -6,8 +6,10 @@ import sys import threading import time -from hazelcast.six.moves import queue from collections import deque +from functools import total_ordering + +from hazelcast.six.moves import queue from hazelcast.connection import Connection, BUFFER_SIZE from hazelcast.exception import HazelcastError @@ -191,6 +193,7 @@ def close(self, cause): self._connection_closed_callback(self, cause) +@total_ordering class Timer(object): canceled = False @@ -199,6 +202,12 @@ def __init__(self, end, timer_ended_cb, timer_canceled_cb): self.timer_ended_cb = timer_ended_cb self.timer_canceled_cb = timer_canceled_cb + def __eq__(self, other): + return self.end == other.end + + def __ne__(self, other): + return not (self == other) + def __lt__(self, other): return self.end < other.end