mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
Issue 11177: asyncore's create_socket() arguments can now be omitted.
This commit is contained in:
parent
0bd4deba38
commit
103a6d6cd6
4 changed files with 18 additions and 14 deletions
|
@ -184,12 +184,14 @@ any that have been added to the map during asynchronous service) is closed.
|
||||||
Most of these are nearly identical to their socket partners.
|
Most of these are nearly identical to their socket partners.
|
||||||
|
|
||||||
|
|
||||||
.. method:: create_socket(family, type)
|
.. method:: create_socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
|
||||||
|
|
||||||
This is identical to the creation of a normal socket, and will use the
|
This is identical to the creation of a normal socket, and will use the
|
||||||
same options for creation. Refer to the :mod:`socket` documentation for
|
same options for creation. Refer to the :mod:`socket` documentation for
|
||||||
information on creating sockets.
|
information on creating sockets.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.3 family and type arguments can be omitted.
|
||||||
|
|
||||||
|
|
||||||
.. method:: connect(address)
|
.. method:: connect(address)
|
||||||
|
|
||||||
|
@ -280,7 +282,7 @@ implement its socket handling::
|
||||||
|
|
||||||
def __init__(self, host, path):
|
def __init__(self, host, path):
|
||||||
asyncore.dispatcher.__init__(self)
|
asyncore.dispatcher.__init__(self)
|
||||||
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
self.create_socket()
|
||||||
self.connect( (host, 80) )
|
self.connect( (host, 80) )
|
||||||
self.buffer = bytes('GET %s HTTP/1.0\r\n\r\n' % path, 'ascii')
|
self.buffer = bytes('GET %s HTTP/1.0\r\n\r\n' % path, 'ascii')
|
||||||
|
|
||||||
|
@ -326,7 +328,7 @@ connections and dispatches the incoming connections to a handler::
|
||||||
|
|
||||||
def __init__(self, host, port):
|
def __init__(self, host, port):
|
||||||
asyncore.dispatcher.__init__(self)
|
asyncore.dispatcher.__init__(self)
|
||||||
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
self.create_socket()
|
||||||
self.set_reuse_addr()
|
self.set_reuse_addr()
|
||||||
self.bind((host, port))
|
self.bind((host, port))
|
||||||
self.listen(5)
|
self.listen(5)
|
||||||
|
|
|
@ -287,7 +287,7 @@ class dispatcher:
|
||||||
del map[fd]
|
del map[fd]
|
||||||
self._fileno = None
|
self._fileno = None
|
||||||
|
|
||||||
def create_socket(self, family, type):
|
def create_socket(self, family=socket.AF_INET, type=socket.SOCK_STREAM):
|
||||||
self.family_and_type = family, type
|
self.family_and_type = family, type
|
||||||
sock = socket.socket(family, type)
|
sock = socket.socket(family, type)
|
||||||
sock.setblocking(0)
|
sock.setblocking(0)
|
||||||
|
|
|
@ -352,7 +352,7 @@ class DispatcherWithSendTests(unittest.TestCase):
|
||||||
@support.reap_threads
|
@support.reap_threads
|
||||||
def test_send(self):
|
def test_send(self):
|
||||||
evt = threading.Event()
|
evt = threading.Event()
|
||||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
sock = socket.socket()
|
||||||
sock.settimeout(3)
|
sock.settimeout(3)
|
||||||
port = support.bind_port(sock)
|
port = support.bind_port(sock)
|
||||||
|
|
||||||
|
@ -367,7 +367,7 @@ class DispatcherWithSendTests(unittest.TestCase):
|
||||||
|
|
||||||
data = b"Suppose there isn't a 16-ton weight?"
|
data = b"Suppose there isn't a 16-ton weight?"
|
||||||
d = dispatcherwithsend_noread()
|
d = dispatcherwithsend_noread()
|
||||||
d.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
d.create_socket()
|
||||||
d.connect((HOST, port))
|
d.connect((HOST, port))
|
||||||
|
|
||||||
# give time for socket to connect
|
# give time for socket to connect
|
||||||
|
@ -474,7 +474,7 @@ class TCPServer(asyncore.dispatcher):
|
||||||
|
|
||||||
def __init__(self, handler=BaseTestHandler, host=HOST, port=0):
|
def __init__(self, handler=BaseTestHandler, host=HOST, port=0):
|
||||||
asyncore.dispatcher.__init__(self)
|
asyncore.dispatcher.__init__(self)
|
||||||
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
self.create_socket()
|
||||||
self.set_reuse_addr()
|
self.set_reuse_addr()
|
||||||
self.bind((host, port))
|
self.bind((host, port))
|
||||||
self.listen(5)
|
self.listen(5)
|
||||||
|
@ -495,7 +495,7 @@ class BaseClient(BaseTestHandler):
|
||||||
|
|
||||||
def __init__(self, address):
|
def __init__(self, address):
|
||||||
BaseTestHandler.__init__(self)
|
BaseTestHandler.__init__(self)
|
||||||
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
self.create_socket()
|
||||||
self.connect(address)
|
self.connect(address)
|
||||||
|
|
||||||
def handle_connect(self):
|
def handle_connect(self):
|
||||||
|
@ -536,7 +536,7 @@ class BaseTestAPI(unittest.TestCase):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
BaseTestHandler.__init__(self)
|
BaseTestHandler.__init__(self)
|
||||||
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
self.create_socket()
|
||||||
self.bind((HOST, 0))
|
self.bind((HOST, 0))
|
||||||
self.listen(5)
|
self.listen(5)
|
||||||
self.address = self.socket.getsockname()[:2]
|
self.address = self.socket.getsockname()[:2]
|
||||||
|
@ -555,7 +555,7 @@ class BaseTestAPI(unittest.TestCase):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
BaseTestHandler.__init__(self)
|
BaseTestHandler.__init__(self)
|
||||||
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
self.create_socket()
|
||||||
self.bind((HOST, 0))
|
self.bind((HOST, 0))
|
||||||
self.listen(5)
|
self.listen(5)
|
||||||
self.address = self.socket.getsockname()[:2]
|
self.address = self.socket.getsockname()[:2]
|
||||||
|
@ -693,20 +693,20 @@ class BaseTestAPI(unittest.TestCase):
|
||||||
|
|
||||||
def test_create_socket(self):
|
def test_create_socket(self):
|
||||||
s = asyncore.dispatcher()
|
s = asyncore.dispatcher()
|
||||||
s.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
s.create_socket()
|
||||||
self.assertEqual(s.socket.family, socket.AF_INET)
|
self.assertEqual(s.socket.family, socket.AF_INET)
|
||||||
SOCK_NONBLOCK = getattr(socket, 'SOCK_NONBLOCK', 0)
|
SOCK_NONBLOCK = getattr(socket, 'SOCK_NONBLOCK', 0)
|
||||||
self.assertEqual(s.socket.type, socket.SOCK_STREAM | SOCK_NONBLOCK)
|
self.assertEqual(s.socket.type, socket.SOCK_STREAM | SOCK_NONBLOCK)
|
||||||
|
|
||||||
def test_bind(self):
|
def test_bind(self):
|
||||||
s1 = asyncore.dispatcher()
|
s1 = asyncore.dispatcher()
|
||||||
s1.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
s1.create_socket()
|
||||||
s1.bind((HOST, 0))
|
s1.bind((HOST, 0))
|
||||||
s1.listen(5)
|
s1.listen(5)
|
||||||
port = s1.socket.getsockname()[1]
|
port = s1.socket.getsockname()[1]
|
||||||
|
|
||||||
s2 = asyncore.dispatcher()
|
s2 = asyncore.dispatcher()
|
||||||
s2.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
s2.create_socket()
|
||||||
# EADDRINUSE indicates the socket was correctly bound
|
# EADDRINUSE indicates the socket was correctly bound
|
||||||
self.assertRaises(socket.error, s2.bind, (HOST, port))
|
self.assertRaises(socket.error, s2.bind, (HOST, port))
|
||||||
|
|
||||||
|
@ -723,7 +723,7 @@ class BaseTestAPI(unittest.TestCase):
|
||||||
self.assertFalse(s.socket.getsockopt(socket.SOL_SOCKET,
|
self.assertFalse(s.socket.getsockopt(socket.SOL_SOCKET,
|
||||||
socket.SO_REUSEADDR))
|
socket.SO_REUSEADDR))
|
||||||
s.socket.close()
|
s.socket.close()
|
||||||
s.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
s.create_socket()
|
||||||
s.set_reuse_addr()
|
s.set_reuse_addr()
|
||||||
self.assertTrue(s.socket.getsockopt(socket.SOL_SOCKET,
|
self.assertTrue(s.socket.getsockopt(socket.SOL_SOCKET,
|
||||||
socket.SO_REUSEADDR))
|
socket.SO_REUSEADDR))
|
||||||
|
|
|
@ -35,6 +35,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue 11177: asyncore's create_socket() arguments can now be omitted.
|
||||||
|
|
||||||
- Issue #6064: Add a ``daemon`` keyword argument to the threading.Thread
|
- Issue #6064: Add a ``daemon`` keyword argument to the threading.Thread
|
||||||
and multiprocessing.Process constructors in order to override the
|
and multiprocessing.Process constructors in order to override the
|
||||||
default behaviour of inheriting the daemonic property from the current
|
default behaviour of inheriting the daemonic property from the current
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue