def send_file(self, remote_idurl, filename, host, description=''): """ """ from transport.udp import udp_session from transport.udp import udp_node # lg.out(20, 'udp_interface.send_file %s %s %s' % (filename, host, description)) result_defer = Deferred() # if udp_node.A().state not in ['LISTEN', 'DHT_READ',]: # result_defer.callback(False) # lg.out(4, 'udp_interface.send_file WARNING udp_node state is %s' % udp_node.A().state) # return result_defer active_sessions = udp_session.get_by_peer_id(host) if active_sessions: if description.startswith('Identity') or description.startswith( 'Ack'): active_sessions[0].file_queue.insert_outbox_file( filename, description, result_defer, keep_alive=True) else: active_sessions[0].file_queue.append_outbox_file( filename, description, result_defer, keep_alive=True) else: udp_session.add_pending_outbox_file(filename, host, description, result_defer, keep_alive=True) udp_node.A('connect', host) return result_defer
def doStartNewSession(self, arg): """ Action method. """ from transport.udp import udp_session peer_address = arg if self.node.my_address is None: if _Debug: lg.out( _DebugLevel, 'udp_connector.doStartNewSession to %s at %s SKIP because my_address is None' % (self.peer_id, peer_address)) return active_sessions = udp_session.get(peer_address) if active_sessions: if _Debug: lg.out(_DebugLevel, 'udp_connector.doStartNewSession SKIP because found existing by peer address %s : %s' % ( peer_address, active_sessions, )) return active_sessions = udp_session.get_by_peer_id(self.peer_id) if active_sessions: if _Debug: lg.out(_DebugLevel, 'udp_connector.doStartNewSession SKIP because found existing by peer id %s : %s' % ( self.peer_id, active_sessions, )) return s = udp_session.create(self.node, peer_address, self.peer_id) s.automat('init', (self.listen_port, self.my_id, self.my_address))
def doStartNewSession(self, arg): """ Action method. """ from transport.udp import udp_session peer_address = arg if self.node.my_address is None: if _Debug: lg.out( _DebugLevel, 'udp_connector.doStartNewSession to %s at %s SKIP because my_address is None' % (self.peer_id, peer_address)) return s = udp_session.get(peer_address) if s: if _Debug: lg.out( _DebugLevel, 'udp_connector.doStartNewSession SKIP because found existing : %s' % s) return s = udp_session.get_by_peer_id(self.peer_id) if s: if _Debug: lg.out( _DebugLevel, 'udp_connector.doStartNewSession SKIP because found existing by peer id:%s %s' % (self.peer_id, s)) return s = udp_session.create(self.node, peer_address, self.peer_id) s.automat('init', (self.listen_port, self.my_id, self.my_address))
def send_file( self, remote_idurl, filename, host, description='', single=False): """ """ from transport.udp import udp_session from transport.udp import udp_node # lg.out(20, 'udp_interface.send_file %s %s %s' % (filename, host, description)) result_defer = Deferred() # if udp_node.A().state not in ['LISTEN', 'DHT_READ',]: # result_defer.callback(False) # lg.out(4, 'udp_interface.send_file WARNING udp_node state is %s' % udp_node.A().state) # return result_defer s = udp_session.get_by_peer_id(host) if s: if description.startswith( 'Identity') or description.startswith('Ack'): s.file_queue.insert_outbox_file( filename, description, result_defer, single) else: s.file_queue.append_outbox_file( filename, description, result_defer, single) else: udp_session.add_pending_outbox_file( filename, host, description, result_defer, single) udp_node.A('connect', host) return result_defer
def doCheckAndStartNewSession(self, arg): """ Action method. """ if self.my_address is None: if _Debug: lg.out( _DebugLevel, 'dp_node.doCheckAndStartNewSession SKIP because my_address is None' ) return incoming_str = arg if incoming_str is None: return try: incoming_user_id, incoming_user_address, time_placed = incoming_str.split( ' ') incoming_user_address = incoming_user_address.split(':') incoming_user_address[1] = int(incoming_user_address[1]) incoming_user_address = tuple(incoming_user_address) except: if _Debug: lg.out(_DebugLevel, '%r' % incoming_str) lg.exc() return active_sessions = udp_session.get(incoming_user_address) if active_sessions: if _Debug: lg.out( _DebugLevel, 'udp_node.doCheckAndStartNewSessions SKIP because found existing by address %s : %s' % ( incoming_user_address, active_sessions, )) return active_sessions = udp_session.get_by_peer_id(incoming_user_id) if active_sessions: if _Debug: lg.out( _DebugLevel, 'udp_node.doCheckAndStartNewSession SKIP because found existing by peer id %s : %s' % ( incoming_user_id, active_sessions, )) return if _Debug: lg.out( _DebugLevel, 'udp_node.doCheckAndStartNewSession wants to start a new session with incoming peer %s at %s' % (incoming_user_id, incoming_user_address)) s = udp_session.create(self, incoming_user_address, incoming_user_id) s.automat('init')
def isKnownUser(self, arg): """ Condition method. """ user_id = arg if udp_session.get_by_peer_id(user_id) is not None: return True if udp_connector.get(user_id) is not None: return True if _Debug: lg.out(_DebugLevel, 'udp_node.isKnownUser %s not found in %s' % ( user_id, udp_session.sessions_by_peer_id().keys())) return False
def isKnownUser(self, arg): """ Condition method. """ user_id = arg if udp_session.get_by_peer_id(user_id): return True if udp_connector.get(user_id) is not None: return True if _Debug: lg.out(_DebugLevel, 'udp_node.isKnownUser %s not found in %s' % ( user_id, list(udp_session.sessions_by_peer_id().keys()))) return False
def doCheckAndStartNewSession(self, arg): """ Action method. """ if self.my_address is None: if _Debug: lg.out( _DebugLevel, 'dp_node.doCheckAndStartNewSession SKIP because my_address is None') return incoming_str = arg if incoming_str is None: return try: incoming_user_id, incoming_user_address, time_placed = incoming_str.split( ' ') incoming_user_address = incoming_user_address.split(':') incoming_user_address[1] = int(incoming_user_address[1]) incoming_user_address = tuple(incoming_user_address) except: if _Debug: lg.out(_DebugLevel, '%r' % incoming_str) lg.exc() return s = udp_session.get(incoming_user_address) if s: if _Debug: lg.out( _DebugLevel, 'udp_node.doCheckAndStartNewSessions SKIP because found existing %s' % s) return s = udp_session.get_by_peer_id(incoming_user_id) if s: if _Debug: lg.out( _DebugLevel, 'udp_node.doCheckAndStartNewSession SKIP because found existing by peer id:%s %s' % (incoming_user_id, s)) return if _Debug: lg.out( _DebugLevel, 'udp_node.doCheckAndStartNewSession wants to start a new session with incoming peer %s at %s' % (incoming_user_id, incoming_user_address)) s = udp_session.create(self, incoming_user_address, incoming_user_id) s.automat('init')
def _try_reconnect(): sess = udp_session.get_by_peer_id(sys.argv[2]) reconnect = False if not sess: reconnect = True print 'sessions', udp_session.sessions_by_peer_id().keys() print map(lambda s: s.peer_id, udp_session.sessions().values()) else: if sess.state != 'CONNECTED': print 'state: ', sess.state reconnect = True if reconnect: print 'reconnect', sess udp_session.add_pending_outbox_file( sys.argv[1] + '.signed', sys.argv[2], 'descr', Deferred(), False) udp_node.A('connect', sys.argv[2]) reactor.callLater(0.5, _try_reconnect)