Refactor redundant Connection factory methods to base

This commit is contained in:
Adam Holmberg
2015-04-20 15:58:44 -05:00
parent c10f8f8712
commit 35c6ce5365
6 changed files with 18 additions and 70 deletions

View File

@@ -239,6 +239,24 @@ class Connection(object):
""" """
pass pass
@classmethod
def factory(cls, *args, **kwargs):
"""
A factory function which returns connections which have
succeeded in connecting and are ready for service (or
raises an exception otherwise).
"""
timeout = kwargs.pop('timeout', 5.0)
conn = cls(*args, **kwargs)
conn.connected_event.wait(timeout)
if conn.last_error:
raise conn.last_error
elif not conn.connected_event.is_set():
conn.close()
raise OperationTimedOut("Timed out creating connection")
else:
return conn
def close(self): def close(self):
raise NotImplementedError() raise NotImplementedError()

View File

@@ -156,19 +156,6 @@ class AsyncoreConnection(Connection, asyncore.dispatcher):
cls._loop._cleanup() cls._loop._cleanup()
cls._loop = None cls._loop = None
@classmethod
def factory(cls, *args, **kwargs):
timeout = kwargs.pop('timeout', 5.0)
conn = cls(*args, **kwargs)
conn.connected_event.wait(timeout)
if conn.last_error:
raise conn.last_error
elif not conn.connected_event.is_set():
conn.close()
raise OperationTimedOut("Timed out creating connection")
else:
return conn
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
Connection.__init__(self, *args, **kwargs) Connection.__init__(self, *args, **kwargs)
asyncore.dispatcher.__init__(self) asyncore.dispatcher.__init__(self)

View File

@@ -57,19 +57,6 @@ class EventletConnection(Connection):
def initialize_reactor(cls): def initialize_reactor(cls):
eventlet.monkey_patch() eventlet.monkey_patch()
@classmethod
def factory(cls, *args, **kwargs):
timeout = kwargs.pop('timeout', 5.0)
conn = cls(*args, **kwargs)
conn.connected_event.wait(timeout)
if conn.last_error:
raise conn.last_error
elif not conn.connected_event.is_set():
conn.close()
raise OperationTimedOut("Timed out creating connection")
else:
return conn
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
Connection.__init__(self, *args, **kwargs) Connection.__init__(self, *args, **kwargs)

View File

@@ -50,19 +50,6 @@ class GeventConnection(Connection):
_write_watcher = None _write_watcher = None
_socket = None _socket = None
@classmethod
def factory(cls, *args, **kwargs):
timeout = kwargs.pop('timeout', 5.0)
conn = cls(*args, **kwargs)
conn.connected_event.wait(timeout)
if conn.last_error:
raise conn.last_error
elif not conn.connected_event.is_set():
conn.close()
raise OperationTimedOut("Timed out creating connection")
else:
return conn
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
Connection.__init__(self, *args, **kwargs) Connection.__init__(self, *args, **kwargs)

View File

@@ -236,19 +236,6 @@ class LibevConnection(Connection):
cls._libevloop._cleanup() cls._libevloop._cleanup()
cls._libevloop = None cls._libevloop = None
@classmethod
def factory(cls, *args, **kwargs):
timeout = kwargs.pop('timeout', 5.0)
conn = cls(*args, **kwargs)
conn.connected_event.wait(timeout)
if conn.last_error:
raise conn.last_error
elif not conn.connected_event.is_set():
conn.close()
raise OperationTimedOut("Timed out creating new connection")
else:
return conn
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
Connection.__init__(self, *args, **kwargs) Connection.__init__(self, *args, **kwargs)

View File

@@ -148,24 +148,6 @@ class TwistedConnection(Connection):
if not cls._loop: if not cls._loop:
cls._loop = TwistedLoop() cls._loop = TwistedLoop()
@classmethod
def factory(cls, *args, **kwargs):
"""
A factory function which returns connections which have
succeeded in connecting and are ready for service (or
raises an exception otherwise).
"""
timeout = kwargs.pop('timeout', 5.0)
conn = cls(*args, **kwargs)
conn.connected_event.wait(timeout)
if conn.last_error:
raise conn.last_error
elif not conn.connected_event.is_set():
conn.close()
raise OperationTimedOut("Timed out creating connection")
else:
return conn
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
""" """
Initialization method. Initialization method.