MCPcopy Create free account
hub / github.com/ActiveState/code / AsyncSocket

Class AsyncSocket

recipes/Python/577662_ASIO/recipe-577662.py:29–291  ·  view source on GitHub ↗

Socket class supporting asynchronous operations.

Source from the content-addressed store, hash-verified

27 return repr(self.__value)
28
29class AsyncSocket(object):
30
31 '''Socket class supporting asynchronous operations.'''
32
33 def __init__(self, asyncIOService, sock = None):
34 super(AsyncSocket, self).__init__()
35 self.__asyncIOService = asyncIOService
36 self.__acceptCallback = None
37 self.__connectCallback = None
38 self.__readCallback = None
39 self.__writeAllCallback = None
40 self.__writeBuffer = b''
41 self.__maxReadBytes = 0
42 self.__closed = False
43 if sock:
44 self.__socket = sock
45 else:
46 self.__socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
47 self.__socket.setblocking(0)
48 asyncIOService.addAsyncSocket(self)
49
50 def __str__(self):
51 return ('AsyncSocket [ fileno = %d ]' % self.fileno())
52
53 def getsockname(self):
54 return self.__socket.getsockname()
55
56 def getpeername(self):
57 return self.__socket.getpeername()
58
59 def closed(self):
60 return self.__closed
61
62 def getSocket(self):
63 return self.__socket
64
65 def fileno(self):
66 return self.__socket.fileno()
67
68 def setReuseAddress(self):
69 self.__socket.setsockopt(
70 socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
71
72 def listen(self, backlog = socket.SOMAXCONN):
73 self.__socket.listen(backlog)
74
75 def bind(self, addr):
76 self.__socket.bind(addr)
77
78 def asyncConnect(self, address, callback):
79 if (self.__acceptCallback):
80 raise AsyncException('Accept already in progress')
81 if (self.__connectCallback):
82 raise AsyncException('Connect already in progress')
83 if (self.__readCallback):
84 raise AsyncException('Read already in progress')
85 if (self.__writeAllCallback):
86 raise AsyncException('Write all already in progress')

Callers 3

asyncAcceptMethod · 0.85
handleReadMethod · 0.85
createAsyncSocketMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected