当前位置: 首页>>代码示例>>Python>>正文


Python notify.NOTIFIER类代码示例

本文整理汇总了Python中neubot.notify.NOTIFIER的典型用法代码示例。如果您正苦于以下问题:Python NOTIFIER类的具体用法?Python NOTIFIER怎么用?Python NOTIFIER使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了NOTIFIER类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: do_negotiate

    def do_negotiate(self, stream, request, nodelay=False):
        session = TRACKER.session_negotiate(request["authorization"])
        if not request["authorization"]:
            request["authorization"] = session.identifier

        #
        # XXX make sure we track ALSO the first connection of the
        # session (which is assigned an identifier in session_negotiate)
        # or, should this connection fail, we would not be able to
        # propagate quickly this information because unregister_connection
        # would not find an entry in self.connections{}.
        #
        if session.negotiations == 1:
            TRACKER.register_connection(stream, request["authorization"])
            nodelay = True

        if not session.active:
            if not nodelay:
                NOTIFIER.subscribe(RENEGOTIATE, self._do_renegotiate,
                          (stream, request), True)
                return

        m1 = compat.SpeedtestNegotiate_Response()
        m1.authorization = session.identifier
        m1.unchoked = session.active
        m1.queuePos = session.queuepos
        m1.publicAddress = stream.peername[0]
        s = marshal.marshal_object(m1, "text/xml")

        stringio = StringIO.StringIO(s)
        response = Message()
        response.compose(code="200", reason="Ok",
         body=stringio, mimetype="application/xml")
        stream.send_response(request, response)
开发者ID:ClaudioArtusio,项目名称:neubot,代码行数:34,代码来源:negotiate.py

示例2: run_queue

    def run_queue(self):
        ''' If possible run the first test in queue '''

        # Adapted from neubot/rendezvous/client.py

        if not self.queue:
            return
        if self.running:
            return

        #
        # Subscribe BEFORE starting the test, otherwise we
        # may miss the 'testdone' event if the connection
        # to the negotiator service fails, and we will stay
        # stuck forever.
        #
        NOTIFIER.subscribe('testdone', self.test_done)

        # Prevent concurrent tests
        self.running = True

        # Safely run first element in queue
        deferred = Deferred()
        deferred.add_callback(self._do_run_queue)
        deferred.add_errback(self._run_queue_error)
        deferred.callback(self.queue[0])
开发者ID:claudiuperta,项目名称:neubot,代码行数:26,代码来源:runner_core.py

示例3: run_queue

    def run_queue(self):
        ''' If possible run the first test in queue '''

        # Adapted from neubot/rendezvous/client.py

        if not self.queue:
            return
        if self.running:
            return

        #
        # Subscribe BEFORE starting the test, otherwise we
        # may miss the 'testdone' event if the connection
        # to the negotiator service fails, and we will stay
        # stuck forever.
        #
        NOTIFIER.subscribe('testdone', self.test_done)

        # Prevent concurrent tests
        self.running = True

        # Safely run first element in queue
        try:
            self._do_run_queue()
        except (SystemExit, KeyboardInterrupt):
            raise
        except:
            exc = asyncore.compact_traceback()
            error = str(exc)
            LOG.error('runner_core: catched exception: %s' % error)
            NOTIFIER.publish('testdone')
开发者ID:felipebusnello,项目名称:neubot,代码行数:31,代码来源:runner_core.py

示例4: handle_connection_lost

 def handle_connection_lost(stream):
     ''' Invoked when the connection is lost '''
     final_state = 0
     context = stream.opaque
     if context:
         extra = context.extra
         if extra:
             final_state = extra['final_state']
     if not final_state:
         logging.warning('skype_negotiate: not reached final state')
     NOTIFIER.publish('testdone')  # Tell the runner we're done
开发者ID:claudiuperta,项目名称:neubot,代码行数:11,代码来源:skype_negotiate.py

示例5: _api_debug

 def _api_debug(self, stream, request, query):
     response = Message()
     debuginfo = {}
     NOTIFIER.snap(debuginfo)
     POLLER.snap(debuginfo)
     debuginfo["queue_history"] = QUEUE_HISTORY
     debuginfo["WWW"] = WWW
     stringio = StringIO.StringIO()
     pprint.pprint(debuginfo, stringio)
     stringio.seek(0)
     response.compose(code="200", reason="Ok", body=stringio,
                      mimetype="text/plain")
     stream.send_response(request, response)
开发者ID:ClaudioArtusio,项目名称:neubot,代码行数:13,代码来源:server.py

示例6: _api_state

    def _api_state(self, stream, request, query):
        dictionary = cgi.parse_qs(query)

        t = None
        if dictionary.has_key("t"):
            t = dictionary["t"][0]
            stale = NOTIFIER.needs_publish(STATECHANGE, t)
            if not stale:
                NOTIFIER.subscribe(STATECHANGE, self._api_state_complete,
                                   (stream, request, query, t), True)
                return

        self._api_state_complete(STATECHANGE, (stream, request, query, t))
开发者ID:felipebusnello,项目名称:neubot,代码行数:13,代码来源:server.py

示例7: _api_state

    def _api_state(self, stream, request, query):
        ''' Implements /api/state URI '''
        dictionary = cgi.parse_qs(query)

        otime = None
        if "t" in dictionary:
            otime = dictionary["t"][0]
            stale = NOTIFIER.needs_publish(STATECHANGE, otime)
            if not stale:
                NOTIFIER.subscribe(STATECHANGE, self._api_state_complete,
                                   (stream, request, query, otime), True)
                return

        self._api_state_complete(STATECHANGE, (stream, request, query, otime))
开发者ID:EverlastingFire,项目名称:neubot,代码行数:14,代码来源:server.py

示例8: _api_debug

 def _api_debug(stream, request, query):
     ''' Implements /api/debug URI '''
     response = Message()
     debuginfo = {}
     NOTIFIER.snap(debuginfo)
     POLLER.snap(debuginfo)
     debuginfo["queue_history"] = QUEUE_HISTORY
     debuginfo["WWWDIR"] = utils_hier.WWWDIR
     gc.collect()
     debuginfo['typestats'] = objgraph.typestats()
     body = pprint.pformat(debuginfo)
     response.compose(code="200", reason="Ok", body=body,
                      mimetype="text/plain")
     stream.send_response(request, response)
开发者ID:EverlastingFire,项目名称:neubot,代码行数:14,代码来源:server.py

示例9: test_bittorrent_invokation_bad

    def test_bittorrent_invokation_bad(self):
        ''' Verify run_queue() behavior when bittorrent is invoked
            and there is NOT a URI for bittorrent '''

        #
        # The whole point of this test is to make sure that
        # the callback() is invoked and the "testdone" event
        # has been fired, when we try to run a bittorrent
        # test and we don't have a registered URI for such
        # test.
        #

        # We need to ensure callback() is invoked
        callback = [0]
        def on_callback():
            ''' Register callback() invokation '''
            # pylint: disable=W0613
            callback[0] += 1

        CONFIG.conf['privacy.can_publish'] = 1
        CONFIG.conf['privacy.informed'] = 1
        CONFIG.conf['privacy.can_collect'] = 1
        core = RunnerCore()
        core.queue.append(('bittorrent', on_callback, None))
        core.run_queue()

        # Worked as expected?
        self.assertTrue(callback[0])
        self.assertFalse(NOTIFIER.is_subscribed("testdone"))
开发者ID:felipebusnello,项目名称:neubot,代码行数:29,代码来源:runner_core.py

示例10: test_wrong_privacy

    def test_wrong_privacy(self):
        ''' Verify run_queue() behavior when privacy is wrong '''

        #
        # The whole point of this test is to make sure
        # that privacy.complain() is invoked and "testdone"
        # is published when privacy settings are not OK
        # and a test is started.
        #

        # We need to ensure privacy.complain() is invoked
        privacy_complain = [0]
        def on_privacy_complain():
            ''' Register privacy.complain() invokation '''
            privacy_complain[0] += 1

        # Setup (we will restore that later)
        saved_complain = privacy.complain
        privacy.complain = on_privacy_complain

        CONFIG.conf['privacy.informed'] = 0
        core = RunnerCore()
        core.queue.append(('foo', '/', lambda: None))
        core.run_queue()

        # Restore
        privacy.complain = saved_complain

        # Worked as expected?
        self.assertTrue(privacy_complain[0])
        self.assertFalse(NOTIFIER.is_subscribed("testdone"))
开发者ID:DavideAllavena,项目名称:neubot,代码行数:31,代码来源:runner_core.py

示例11: test_safety_net

    def test_safety_net(self):
        ''' Verify run_queue() safety net works '''

        #
        # The whole point of this test is to make sure
        # that and error is printed and "testdone" is
        # published when a new test is started and the
        # test name is bad.
        #

        # We need to ensure LOG.error() is invoked
        log_error = [0]
        def on_log_error(message, *args):
            ''' Register LOG.error() invokation '''
            # pylint: disable=W0613
            log_error[0] += 1

        # Setup (we will restore that later)
        saved_log_error = LOG.error
        LOG.error = on_log_error

        CONFIG.conf['privacy.can_publish'] = 1
        CONFIG.conf['privacy.informed'] = 1
        CONFIG.conf['privacy.can_collect'] = 1
        core = RunnerCore()
        core.queue.append(('foo', '/', lambda: None))
        core.run_queue()

        # Restore
        LOG.error = saved_log_error

        # Worked as expected?
        self.assertTrue(log_error[0])
        self.assertFalse(NOTIFIER.is_subscribed("testdone"))
开发者ID:DavideAllavena,项目名称:neubot,代码行数:34,代码来源:runner_core.py

示例12: run

def run(poller, conf):
    '''
     This function is invoked when Neubot is already
     running and you want to leverage some functionalities
     of this module.
    '''

    # Make sure the conf makes sense before we go
    config.finalize_conf(conf)

    if conf["bittorrent.listen"]:
        if conf["bittorrent.negotiate"]:

            #
            # We assume that the caller has already started
            # the HTTP server and that it contains our negotiator
            # so here we just bring up the test server.
            #
            server = ServerPeer(poller)
            server.configure(conf)
            server.listen((conf["bittorrent.address"],
                           conf["bittorrent.port"]))

        else:
            server = PeerNeubot(poller)
            server.configure(conf)
            server.listen((conf["bittorrent.address"],
                           conf["bittorrent.port"]))

    else:

        #
        # Make sure there is someone ready to receive the
        # "testdone" event.  If there is noone it is a bug
        # none times out of ten.
        #
        if not NOTIFIER.is_subscribed("testdone"):
            log.oops("The 'testdone' event is not subscribed")

        if conf["bittorrent.negotiate"]:
            client = BitTorrentClient(poller)
            client.configure(conf)

            #
            # The rendezvous client uses this hidden variable
            # to pass us the URI to connect() to (the rendezvous
            # returns an URI, not address and port).
            #
            uri = None
            if "bittorrent._uri" in conf:
                uri = conf["bittorrent._uri"]

            client.connect_uri(uri)

        else:
            client = PeerNeubot(poller)
            client.configure(conf)
            client.connect((conf["bittorrent.address"],
                           conf["bittorrent.port"]))
开发者ID:EverlastingFire,项目名称:neubot,代码行数:59,代码来源:__init__.py

示例13: connection_lost

 def connection_lost(self, stream):
     if NOTIFIER.is_subscribed("testdone"):
         LOG.debug("RendezVous: don't _schedule(): test in progress")
         return
     if self._task:
         LOG.debug("RendezVous: don't _schedule(): we already have a task")
         return
     self._schedule()
开发者ID:ClaudioArtusio,项目名称:neubot,代码行数:8,代码来源:client.py

示例14: main

def main(args):

    config.register_descriptions()
    common.main("bittorrent", "Neubot BitTorrent module", args)
    conf = CONFIG.copy()
    config.finalize_conf(conf)

    if conf["bittorrent.listen"]:

        #
        # If we need to negotiate and we're runing
        # standalone we also need to bring up the
        # global HTTP server.
        #
        if conf["bittorrent.negotiate"]:
            HTTP_SERVER.configure(conf)
            HTTP_SERVER.listen((conf["bittorrent.address"],
                               conf["bittorrent.negotiate.port"]))
            conf["negotiate.listen"] = True
            negotiate.run(POLLER, conf)

        #
        # Drop privileges after listen() so we can
        # bind() to privileged ports
        #
        if conf["bittorrent.daemonize"]:
            system.change_dir()
            system.go_background()
            LOG.redirect()

        system.drop_privileges(LOG.error)

    else:
        #
        # When we're connecting to a remote host to perform a test
        # we want Neubot to quit at the end of the test.  When this
        # happens the test code publishes the "testdone" event, so
        # here we prepare to intercept the event and break our main
        # loop.
        #
        NOTIFIER.subscribe("testdone", lambda event, ctx: POLLER.break_loop())

    run(POLLER, conf)

    POLLER.loop()
开发者ID:ClaudioArtusio,项目名称:neubot,代码行数:45,代码来源:__init__.py

示例15: test_bittorrent_invokation_good

    def test_bittorrent_invokation_good(self):
        ''' Verify run_queue() behavior when bittorrent is invoked
            and there is a URI for bittorrent '''

        #
        # The whole point of this test is to make sure that
        # bittorrent.run() is invoked when privacy is OK and
        # we have a negotiate URI.  We also want to check that
        # the "testdone" event is subscribed after run_queue(),
        # i.e. that someone is waiting for the event that
        # signals the end of the test.
        #

        # We need to ensure bittorrent.run() is invoked
        bittorrent_run = [0]
        def on_bittorrent_run(poller, conf):
            ''' Register bittorrent.run() invokation '''
            # pylint: disable=W0613
            bittorrent_run[0] += 1

        # Setup (we will restore that later)
        saved_run = bittorrent.run
        bittorrent.run = on_bittorrent_run
        RUNNER_TESTS.update({'bittorrent': '/'})

        CONFIG.conf['privacy.can_publish'] = 1
        CONFIG.conf['privacy.informed'] = 1
        CONFIG.conf['privacy.can_collect'] = 1
        core = RunnerCore()
        core.queue.append(('bittorrent', Deferred(), None))
        core.run_queue()

        # Restore
        bittorrent.run = saved_run
        RUNNER_TESTS.update({})

        # Worked as expected?
        self.assertTrue(bittorrent_run[0])
        self.assertTrue(NOTIFIER.is_subscribed("testdone"))

        #
        # Clear the "testdone" because otherwise it will
        # screw up other tests and we don't want that
        #
        NOTIFIER.publish("testdone")
开发者ID:EverlastingFire,项目名称:neubot,代码行数:45,代码来源:runner_core.py


注:本文中的neubot.notify.NOTIFIER类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。