def _make_receiver(self, mode, state, key): facet = ContextForReceiver(self, key) receiver = Receiver( mode=mode, input_rate=self.input_rate, input_center_freq=self.input_freq, audio_channels=self.__audio_channels, context=facet, ) receiver.state_from_json(state) # until _enabled, ignore any callbacks resulting from the state_from_json initialization facet._enabled = True return receiver
def _make_receiver(self, mode, state, key): facet = ContextForReceiver(self, key) receiver = Receiver( mode=mode, input_rate=self.input_rate, input_center_freq=self.input_freq, audio_channels=self.__audio_channels, audio_destination=CLIENT_AUDIO_DEVICE, # TODO match others context=facet, ) receiver.state_from_json(state) # until _enabled, ignore any callbacks resulting from the state_from_json initialization facet._enabled = True return receiver
def add_receiver(self, mode, key=None, state=None): if len(self._receivers) >= 100: # Prevent storage-usage DoS attack raise Exception('Refusing to create more than 100 receivers') if key is not None: assert key not in self._receivers else: while True: key = base26(self.receiver_key_counter) self.receiver_key_counter += 1 if key not in self._receivers: break if len(self._receivers) > 0: arbitrary = self._receivers.itervalues().next() defaults = arbitrary.state_to_json() else: defaults = self.receiver_default_state combined_state = defaults.copy() if 'device_name' in combined_state: del combined_state['device_name'] # should not be overridden if state is not None: combined_state.update(state) facet = ContextForReceiver(self, key) receiver = Receiver( mode=mode, audio_channels=self.__audio_manager.get_channels(), device_name=self.source_name, audio_destination=self.__audio_manager.get_default_destination(), # TODO match others context=facet, ) receiver.state_from_json(combined_state) # TODO: Use unserialize_exported_state facet._receiver = receiver self._receivers[key] = receiver self._receiver_valid[key] = False self.__needs_reconnect.append(u'added receiver ' + key) self._do_connect() # until _enabled, the facet ignores any reconnect/rebuild-triggering callbacks facet._enabled = True return (key, receiver)