class Connection(object): """Represents a connection to a server from a client.""" def __init__(self, loop, sock, addr, protocol, client): """Create a client connection.""" self.loop = loop self.sock = sock self.addr = addr self.protocol = protocol self.client = client logger.debug("making transport") self.transport = SocketTransport(self.loop, self.sock, self.protocol.data, self.closed) logger.debug("protocol.make_connection") self.protocol.make_connection(self.transport, self.addr) logger.debug("transport.start()") self.transport.start() logger.debug("transport started") def closed(self, reason): """Callback performed when the transport is closed.""" self.client.remove_connection(self) self.protocol.connection_lost(reason) if not isinstance(reason, ConnectionClosed): logger.warn("connection closed, reason {}".format(reason)) else: logger.info("connection closed") def close(self): """Close the connection.""" self.transport.close()
class Connection(object): """A connection to the server from a remote client.""" def __init__(self, loop, sock, address, protocol, server): """Create a server connection.""" self.loop = loop self.sock = sock self.address = address self.protocol = protocol self.server = server self.transport = SocketTransport(self.loop, self.sock, self.protocol.data, self.closed) def make_connection(self): self.transport.start() self.protocol.make_connection(self.transport, self.address) def closed(self, reason): """Callback performed when the transport is closed.""" self.server.remove_connection(self) self.protocol.connection_lost(reason) if not isinstance(reason, ConnectionClosed): logger.warn("connection closed, reason: %s" % str(reason)) else: logger.info("connection closed") def close(self): """Close the connection.""" self.transport.close()
class Connection(object): """Represents a connection to a server from a client.""" def __init__(self, loop, sock, addr, protocol, client): """Create a client connection.""" self.loop = loop self.sock = sock self.addr = addr self.protocol = protocol self.client = client logger.debug('making transport') self.transport = SocketTransport(self.loop, self.sock, self.protocol.data, self.closed) logger.debug('protocol.make_connection') self.protocol.make_connection(self.transport, self.addr) logger.debug('transport.start()') self.transport.start() logger.debug('transport started') def closed(self, reason): """Callback performed when the transport is closed.""" self.client.remove_connection(self) self.protocol.connection_lost(reason) if not isinstance(reason, ConnectionClosed): logger.warn("connection closed, reason {}".format(reason)) else: logger.info("connection closed") def close(self): """Close the connection.""" self.transport.close()
def test_close_buffered_write(self): t = SocketTransport(loop, self.ssock, self.read, self.close) count = 0 msg = b'hello' while (t.write != t.buffered_write): count += 1 t.write(msg) t.write(msg) t.close() self.assertRaises(ConnectionClosed, t.write, msg)
def test_close_buffered_write(self): t = SocketTransport(loop, self.ssock, self.read, self.close) count = 0 msg = b"hello" while t.write != t.buffered_write: count += 1 t.write(msg) t.write(msg) t.close() self.assertRaises(ConnectionClosed, t.write, msg)
def test_closed_stop(self): t = SocketTransport(loop, self.ssock, self.read, self.close) t.close() self.assertRaises(ConnectionClosed, t.stop)
def test_closed_write(self): t = SocketTransport(loop, self.ssock, self.read, self.close) t.close() self.assertRaises(ConnectionClosed, t.write, ("hello"))
def test_close(self): t = SocketTransport(loop, self.ssock, self.read, self.close) t.close() self.assertTrue(t.closed) self.assertTrue(isinstance(self.reason, ConnectionClosed))