Esempio n. 1
0
    def __make_demodulator(self, mode, state):
        """Returns the demodulator."""

        t0 = time.time()

        mode_def = lookup_mode(mode)
        if mode_def is None:
            # TODO: Better handling, like maybe a dummy demod
            raise ValueError('Unknown mode: ' + mode)
        clas = mode_def.demod_class

        state = state.copy()  # don't modify arg
        if 'mode' in state:
            del state[
                'mode']  # don't switch back to the mode we just switched from

        facet = ContextForDemodulator(self)

        init_kwargs = dict(mode=mode,
                           input_rate=self.__get_device().get_rx_driver().
                           get_output_type().get_sample_rate(),
                           context=facet)
        demodulator = unserialize_exported_state(ctor=clas,
                                                 state=state,
                                                 kwargs=init_kwargs)

        # until _enabled, ignore any callbacks resulting from unserialization calling setters
        facet._enabled = True
        log.msg('Constructed %s demodulator: %i ms.' %
                (mode, (time.time() - t0) * 1000))
        return demodulator
Esempio n. 2
0
    def __make_demodulator(self, mode, state):
        """Returns the demodulator."""

        t0 = time.time()
        
        mode_def = lookup_mode(mode)
        if mode_def is None:
            # TODO: Better handling, like maybe a dummy demod
            raise ValueError('Unknown mode: ' + mode)
        clas = mode_def.demod_class

        state = state.copy()  # don't modify arg
        if 'mode' in state: del state['mode']  # don't switch back to the mode we just switched from
        
        facet = ContextForDemodulator(self)
        
        init_kwargs = dict(
            mode=mode,
            input_rate=self.__get_device().get_rx_driver().get_output_type().get_sample_rate(),
            context=facet)
        demodulator = IDemodulator(unserialize_exported_state(
            ctor=clas,
            state=state,
            kwargs=init_kwargs))
        
        # until _enabled, ignore any callbacks resulting from unserialization calling setters
        facet._enabled = True
        log.msg('Constructed %s demodulator: %i ms.' % (mode, (time.time() - t0) * 1000))
        return demodulator
Esempio n. 3
0
    def __make_demodulator(self, mode, state):
        '''Returns the demodulator.'''

        mode_def = lookup_mode(mode)
        if mode_def is None:
            # TODO: Better handling, like maybe a dummy demod
            raise ValueError('Unknown mode: ' + mode)
        clas = mode_def.demod_class

        state = state.copy()  # don't modify arg
        if 'mode' in state:
            del state[
                'mode']  # don't switch back to the mode we just switched from

        facet = ContextForDemodulator(self)

        init_kwargs = dict(mode=mode,
                           input_rate=self.input_rate,
                           context=facet)
        for sh_key, sh_ctor in mode_def.shared_objects.iteritems():
            init_kwargs[sh_key] = self.context.get_shared_object(sh_ctor)
        demodulator = unserialize_exported_state(ctor=clas,
                                                 state=state,
                                                 kwargs=init_kwargs)

        # until _enabled, ignore any callbacks resulting from unserialization calling setters
        facet._enabled = True
        return demodulator
Esempio n. 4
0
	def __make_demodulator(self, mode, state):
		'''Returns the demodulator.'''

		mode_def = lookup_mode(mode)
		if mode_def is None:
			# TODO: Better handling, like maybe a dummy demod
			raise ValueError('Unknown mode: ' + mode)
		clas = mode_def.demod_class

		state = state.copy()  # don't modify arg
		if 'mode' in state: del state['mode']  # don't switch back to the mode we just switched from
		
		facet = ContextForDemodulator(self)
		
		init_kwargs = dict(
			mode=mode,
			input_rate=self.input_rate,
			context=facet)
		for sh_key, sh_ctor in mode_def.shared_objects.iteritems():
			init_kwargs[sh_key] = self.context.get_shared_object(sh_ctor)
		demodulator = unserialize_exported_state(
			ctor=clas,
			state=state,
			kwargs=init_kwargs)
		
		# until _enabled, ignore any callbacks resulting from unserialization calling setters
		facet._enabled = True
		return demodulator
Esempio n. 5
0
 def test_persistence_args(self):
     o = unserialize_exported_state(
         ctor=ValueAndBlockSpecimen,
         kwargs={u'block': ValueAndBlockSpecimen(ExportedState())},
         state={
             u'value': 1,
         })
     self.assertEqual(o.state_to_json(), {
         u'value': 1,
         u'block': {
             u'value': 0,
             u'block': {},
         },
     })
Esempio n. 6
0
    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()
        for do_not_use_default in ['device_name', 'freq_linked_to_device']:
            if do_not_use_default in combined_state:
                del combined_state[do_not_use_default]
        if state is not None:
            combined_state.update(state)

        facet = ContextForReceiver(self, key)
        receiver = unserialize_exported_state(
            Receiver,
            kwargs=dict(
                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,
            ),
            state=combined_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)
Esempio n. 7
0
 def test_persistence_args(self):
     self.object = unserialize_exported_state(
         ctor=ValueAndBlockSpecimen,
         kwargs={u'block': ValueAndBlockSpecimen(ExportedState())},
         state={
             u'value': 1,
         })
     self.assertEqual(self.object.state_to_json(), {
         u'value': 1,
         u'block': {
             u'value': 0,
             u'block': {},
         },
     })
Esempio n. 8
0
    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 = six.itervalues(self._receivers).next()
            defaults = arbitrary.state_to_json()
        else:
            defaults = self.receiver_default_state
            
        combined_state = defaults.copy()
        for do_not_use_default in ['device_name', 'freq_linked_to_device']:
            if do_not_use_default in combined_state:
                del combined_state[do_not_use_default]
        if state is not None:
            combined_state.update(state)
        
        facet = ContextForReceiver(self, key)
        receiver = unserialize_exported_state(Receiver, kwargs=dict(
            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,
        ), state=combined_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)
Esempio n. 9
0
 def __unserializer(self, state):
     return unserialize_exported_state(BaseEntryPointStub, state)
Esempio n. 10
0
 def __unserializer(self, state):
     return unserialize_exported_state(BaseEntryPointStub, state)