def _on_socket_data(self, data, addr): self._log.debug('Got data %s bytes in length from %s' % (str(len(data)), str(addr))) if not addr in self._peers and not self._accept_new_connections: return if not addr in self._peers: new_peer = Service('Peer', {'parent': self, 'address': addr}) self._peers[addr] = new_peer new_peer.OnDisconnect += self._Peer_OnDisconnect new_peer.OnError += self._Peer_OnError new_peer.OnMessage += self._Peer_OnMessage new_peer.OnConnectRequest += self._Peer_OnConnectRequest self._peers[addr].process_inbound_packet(data)
def connect(self, address): ''' Initiate a connection to the server at the specified address. This method will put the socket into the `CONNECTING` state. If a connection is already established a ClientError exception is raised. :Parameters: address : (host, port) Host address. An ArgumentError exception will be raised for an invalid address. ''' if self.is_active(): raise ClientError( 'Client cannot reconnect in a CONNECTING or CONNECTED state') if len(address) != 2: raise ArgumentError('Expected parameter is (host, port) tuple') host = address[0] try: port = int(address[1]) except ValueError: raise ArgumentError('%s is not a valid port' % address[1]) if port > 65535 or port < 1: raise ArgumentError('%s is not a valid port' % port) #port = 6385 self._create_socket() self._connect_socket((host, port)) self._address = (host, port) self._connection = Service('Connection', {'parent': self}) self._connection.OnConnectRequestAccepted += \ self._Connection_OnConnectRequestAccepted self._connection.OnConnectRequestRejected += \ self._Connection_OnConnectRequestRejected self._connection.OnError += self._Connection_OnError self._connection.OnDisconnect += self._Connection_OnDisconnect self._connection.OnMessage += self._Connection_OnMessage request_message = self.message_factory.get_by_name('ConnectRequest')() request_message.protocol.value = netshared.PROTOCOL_VERSION self._send_reliable_message(request_message) self._state = self.CONNECTING
def __init__(self, parent=None, address=None): self._connected = False self.parent = parent self._socket = parent.socket self._address = address self._last_receive_timestamp = time.time() self._pending_disconnect = False self.OnConnectRequest = Event() self.OnDisconnect = Event() self.OnError = Event() self.OnMessage = Event() self._connection = Service('Connection', {'parent': self}) self._connection.OnMessage += self._Connection_OnMessage self._connection.OnDisconnect += self._Connection_OnDisconnect self._connection.OnError += self._Connection_OnError self._connection.OnConnectRequest += self._Connection_OnConnectRequest