Example #1
0
    def __init__(self, register, name, host, port, routerHost, routerPort, manualOverride, clockSyncActive):
        self.name, self.host, self.port = name, host, port
        self.routerHost, self.routerPort = routerHost, routerPort
        self.manualOverride, self.clockSyncActive = manualOverride, clockSyncActive
        self.register = register

        # [{'song_name': 'Britney Spears - Toxic', 'votes': [{'peer_name': 'P1', 'sig': 'signature_on_song', 'pk': ..., 'pksign': ...}, {'peer_name': 'P2', 'sig': '...', ...}]]
        self.playlist = []
        self.playlistLock = RLock()
        self.songplaying = None
        self.firstJoin = True

        self.progressLock = Lock()
        self.quitting = False


        keydist = KeyDistributer()
        self.key = keydist.getKeyPair()

        self.msg_count = 0
        self.MSG_IDS_SEEN_MAXSIZE = 1000
        self.msg_ids_seen = [-1] * self.MSG_IDS_SEEN_MAXSIZE
        self.msg_ids_seen_nextindex = 0
        self.msg_ids_seen_lock = RLock()

        self.playlist_request_id = None
        self.playlists_received = 0

        self.hasJoined = False

        self._time_since_last_msg = 0
        self._time_since_last_msg_lock = Lock()

        self._top = [None] * LOCK_TOP   # [('song', 42 votes), (...)]
        self._toplock = RLock()

        self.clock = Clock(self, sync=self.clockSyncActive)