def __init__(self, torrent_hash, num_pieces, coordinator_permid, coordinator = None):
     self.torrent_hash = torrent_hash
     self.coordinator = coordinator
     self.coordinator_permid = {}
     if coordinator_permid is not None and coordinator_permid == '':
         self.coordinator_permid[None] = [None, -1]
     else:
         peerdb = PeerDBHandler.getInstance()
         peer = peerdb.getPeer(coordinator_permid)
         if peer is not None:
             ip = peer['ip']
             port = peer['port']
             self.coordinator_permid[coordinator_permid] = [ip, port]
         else:
             self.coordinator_permid[None] = [None, -1]
         self.coordinator_ip = None
         self.coordinator_port = None
     self.overlay_bridge = OverlayThreadingBridge.getInstance()
     self.reserved_pieces = [False] * num_pieces
     self.ignored_pieces = [False] * num_pieces
     self.distr_reserved_pieces = [False] * num_pieces
     self.requested_pieces = deque()
     self.requested_pieces_lock = Lock()
     self.counter = 0
     self.completed = False
     self.marker = [True] * num_pieces
     self.round = 0
     self.encoder = None
     self.continuations = []
     self.outstanding = None
     self.last_req_time = 0
     self.received_challenges = {}
     self.downloader = None
 def got_ask_for_help(self, permid, infohash, challenge):
     if DEBUG:
         print >> sys.stderr, 'helper: got_ask_for_help: will answer to the help request from', show_permid_short(permid)
     if self.can_help(infohash):
         if DEBUG:
             print >> sys.stderr, 'helper: got_ask_for_help: received a help request, going to send join_helpers'
         self.send_join_helpers(permid)
         self.received_challenges[permid] = challenge
         peerdb = PeerDBHandler.getInstance()
         peer = peerdb.getPeer(permid)
         if peer is not None:
             ip = peer['ip']
             port = peer['port']
             if permid not in self.coordinator_permid.keys():
                 self.coordinator_permid[permid] = [ip, port]
         if DEBUG:
             print >> sys.stderr, 'helper: got_ask_for_help: sending haves to all coordinators'
         self.start_data_connection()
         if self.downloader is not None:
             self.downloader.aggregate_and_send_haves()
     else:
         if DEBUG:
             print >> sys.stderr, 'helper: got_ask_for_help: received a help request, going to send resign_as_helper'
         self.send_resign_as_helper(permid)
         return False
     return True
 def got_ask_for_help(self, permid, infohash, challenge):
     if DEBUG:
         print >> sys.stderr, 'helper: got_ask_for_help: will answer to the help request from', show_permid_short(
             permid)
     if self.can_help(infohash):
         if DEBUG:
             print >> sys.stderr, 'helper: got_ask_for_help: received a help request, going to send join_helpers'
         self.send_join_helpers(permid)
         self.received_challenges[permid] = challenge
         peerdb = PeerDBHandler.getInstance()
         peer = peerdb.getPeer(permid)
         if peer is not None:
             ip = peer['ip']
             port = peer['port']
             if permid not in self.coordinator_permid.keys():
                 self.coordinator_permid[permid] = [ip, port]
         if DEBUG:
             print >> sys.stderr, 'helper: got_ask_for_help: sending haves to all coordinators'
         self.start_data_connection()
         if self.downloader is not None:
             self.downloader.aggregate_and_send_haves()
     else:
         if DEBUG:
             print >> sys.stderr, 'helper: got_ask_for_help: received a help request, going to send resign_as_helper'
         self.send_resign_as_helper(permid)
         return False
     return True
Example #4
0
 def __init__(self,
              torrent_hash,
              num_pieces,
              coordinator_permid,
              coordinator=None):
     self.torrent_hash = torrent_hash
     self.coordinator = coordinator
     if coordinator_permid is not None and coordinator_permid == '':
         self.coordinator_permid = None
     else:
         self.coordinator_permid = coordinator_permid
     self.coordinator_ip = None
     self.coordinator_port = -1
     if self.coordinator_permid is not None:
         peerdb = PeerDBHandler.getInstance()
         peer = peerdb.getPeer(coordinator_permid)
         if peer is not None:
             self.coordinator_ip = peer['ip']
             self.coordinator_port = peer['port']
     self.overlay_bridge = OverlayThreadingBridge.getInstance()
     self.reserved_pieces = [False] * num_pieces
     self.ignored_pieces = [False] * num_pieces
     self.distr_reserved_pieces = [False] * num_pieces
     self.requested_pieces = deque()
     self.requested_pieces_lock = Lock()
     self.counter = 0
     self.completed = False
     self.marker = [True] * num_pieces
     self.round = 0
     self.encoder = None
     self.continuations = []
     self.outstanding = None
     self.last_req_time = 0
     self.challenge = None
Example #5
0
 def __init__(self):
     if FriendshipMsgHandler.__singleton:
         raise RuntimeError, 'FriendshipMsgHandler is singleton'
     self.overlay_bridge = None
     self.currmsgs = {}
     self.online_fsext_peers = Set()
     self.peerdb = PeerDBHandler.getInstance()
     self.frienddb = FriendDBHandler.getInstance()
     self.friendshipStatistics_db = FriendshipStatisticsDBHandler.getInstance(
     )
     self.list_no_of_conn_attempts_per_target = {}
     self.usercallback = None