예제 #1
0
    def configure_pipeline(self, pipeline, properties):
        # Later, when the typefind element has successfully found the type
        # of the data, we'll rebuild the pipeline.
        self.src = pipeline.get_by_name('src')
        self.url = properties['url']
        self.passthrough = properties.get('passthrough', False)
        self.src.set_property('location', self.url)
        self.src.set_property('iradio-mode', True)

        typefind = pipeline.get_by_name('tf')
        self.signal_id = typefind.connect('have-type',\
                self._typefind_have_caps_cb)

        if not self.configured:
            self.attachPadMonitorToElement('src', self._src_connected,
                                           self._src_disconnected)
        self.reconnecting = False
        self.reconnector = RetryingDeferred(self.connect)
        self.reconnector.initialDelay = 1.0
        self.attemptD = None

        def _drop_eos(pad, event):
            self.debug('Swallowing event %r', event)
            if event.type == gst.EVENT_EOS:
                return False
            return True

        self.configured = True
        self.src.get_pad('src').add_event_probe(_drop_eos)
예제 #2
0
    def testSimple(self):
        def genDef():
            return defer.succeed(True)

        rd = RetryingDeferred(genDef)
        d = rd.start()

        return d
예제 #3
0
    def testRetryOnce(self):
        self.__first = True

        def genDef():
            if self.__first:
                self.__first = False
                return defer.fail(errors.FlumotionError())
            else:
                return defer.succeed(None)

        rd = RetryingDeferred(genDef)
        rd.initialDelay = 0.1  # Set it short so the test isn't long-running.
        d = rd.start()

        return d