Exemple #1
0
 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
Exemple #5
0
 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')
Exemple #6
0
 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
Exemple #7
0
 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
Exemple #8
0
 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)
Exemple #10
0
 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)