def __init__(self, *args, **kwargs): Connection.__init__(self, *args, **kwargs) self.connected_event = Event() self._iobuf = StringIO() self._callbacks = {} self._push_watchers = defaultdict(set) self.deque = deque() self._deque_lock = Lock() self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) if self.ssl_options: if not ssl: raise Exception("This version of Python was not compiled with SSL support") self._socket = ssl.wrap_socket(self._socket, **self.ssl_options) self._socket.settimeout(1.0) # TODO potentially make this value configurable self._socket.connect((self.host, self.port)) self._socket.setblocking(0) if self.sockopts: for args in self.sockopts: self._socket.setsockopt(*args) with _loop_lock: self._read_watcher = libev.IO(self._socket._sock, libev.EV_READ, _loop, self.handle_read) self._write_watcher = libev.IO(self._socket._sock, libev.EV_WRITE, _loop, self.handle_write) self._send_options_message() self.__class__._connection_created(self) # start the global event loop if needed _start_loop() _loop_notifier.send()
def __init__(self, *args, **kwargs): Connection.__init__(self, *args, **kwargs) self.connected_event = Event() self._callbacks = {} self._push_watchers = defaultdict(set) self.deque = deque() self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._socket.connect((self.host, self.port)) self._socket.setblocking(0) if self.sockopts: for args in self.sockopts: self._socket.setsockopt(*args) self._read_watcher = libev.IO(self._socket._sock, libev.EV_READ, _loop, self.handle_read) self._write_watcher = libev.IO(self._socket._sock, libev.EV_WRITE, _loop, self.handle_write) with _loop_lock: self._read_watcher.start() self._write_watcher.start() self._send_options_message() # start the global event loop if needed if not _start_loop(): # if the loop was already started, notify it with _loop_lock: _loop_notifier.send()
def __init__(self, *args, **kwargs): Connection.__init__(self, *args, **kwargs) self.connected_event = Event() self._callbacks = {} self.deque = deque() self._deque_lock = Lock() sockerr = None addresses = socket.getaddrinfo(self.host, self.port, socket.AF_UNSPEC, socket.SOCK_STREAM) for (af, socktype, proto, canonname, sockaddr) in addresses: try: self._socket = socket.socket(af, socktype, proto) if self.ssl_options: if not ssl: raise Exception( "This version of Python was not compiled with SSL support" ) self._socket = ssl.wrap_socket(self._socket, **self.ssl_options) self._socket.settimeout( 1.0) # TODO potentially make this value configurable self._socket.connect(sockaddr) sockerr = None break except socket.error as err: sockerr = err if sockerr: raise socket.error( sockerr.errno, "Tried connecting to %s. Last error: %s" % ([a[4] for a in addresses], sockerr.strerror)) self._socket.setblocking(0) if self.sockopts: for args in self.sockopts: self._socket.setsockopt(*args) with self._libevloop._lock: self._read_watcher = libev.IO(self._socket.fileno(), libev.EV_READ, self._libevloop._loop, self.handle_read) self._write_watcher = libev.IO(self._socket.fileno(), libev.EV_WRITE, self._libevloop._loop, self.handle_write) self._send_options_message() self._libevloop.connection_created(self) # start the global event loop if needed self._libevloop.maybe_start()
def __init__(self, *args, **kwargs): Connection.__init__(self, *args, **kwargs) self.deque = deque() self._deque_lock = Lock() self._connect_socket() self._socket.setblocking(0) with self._libevloop._lock: self._read_watcher = libev.IO(self._socket.fileno(), libev.EV_READ, self._libevloop._loop, self.handle_read) self._write_watcher = libev.IO(self._socket.fileno(), libev.EV_WRITE, self._libevloop._loop, self.handle_write) self._send_options_message() self._libevloop.connection_created(self) # start the global event loop if needed self._libevloop.maybe_start()