コード例 #1
0
ファイル: protonReactor.py プロジェクト: fzkbass/vdsm
    def _openPendingSessions(self, conn, connector):
        ssn = proton.pn_session_head(conn, proton.PN_LOCAL_UNINIT)
        while ssn:
            proton.pn_session_open(ssn)
            ctx = ProtonClient(self, conn, connector, ssn, None)
            l = proton.pn_connector_listener(connector)
            listener = proton.pn_listener_context(l)
            listener._acceptHandler(listener, ctx)

            proton.pn_session_set_context(ssn, ctx)
            self.log.debug("Session Opened.")
            ssn = proton.pn_session_next(ssn, proton.PN_LOCAL_UNINIT)
コード例 #2
0
ファイル: protonReactor.py プロジェクト: fzkbass/vdsm
    def _openPendingSessions(self, conn, connector):
        ssn = proton.pn_session_head(conn, proton.PN_LOCAL_UNINIT)
        while ssn:
            proton.pn_session_open(ssn)
            ctx = ProtonClient(self, conn, connector, ssn, None)
            l = proton.pn_connector_listener(connector)
            listener = proton.pn_listener_context(l)
            listener._acceptHandler(listener, ctx)

            proton.pn_session_set_context(ssn, ctx)
            self.log.debug("Session Opened.")
            ssn = proton.pn_session_next(ssn, proton.PN_LOCAL_UNINIT)
コード例 #3
0
ファイル: protonReactor.py プロジェクト: fzkbass/vdsm
    def _openClientSession(self):
        host, port = self._address
        amqpAddress = "ampq://%s:%d/vdsm" % (host, port)
        senderName = "jsonrpc.ProtonClient %s (%s)" % (
            str(uuid.uuid4()),
            amqpAddress,
        )
        self.log = logging.getLogger(senderName)

        self.connector = proton.pn_connector(self._reactor._driver, host,
                                             str(port), None)
        if self.connector is None:
            raise ProtonError("Could not create connector")

        self.connection = proton.pn_connection()
        proton.pn_connector_set_connection(self.connector, self.connection)

        sasl = proton.pn_connector_sasl(self.connector)
        proton.pn_sasl_mechanisms(sasl, "ANONYMOUS")
        proton.pn_sasl_client(sasl)

        proton.pn_connector_set_context(self.connector, CLIENT_AUTH)
        self.log.debug("Opening active connection")
        proton.pn_connection_open(self.connection)

        while True:
            # TODO: Handle connection being closed mid authentication
            if proton.pn_sasl_state(sasl) in (proton.PN_SASL_PASS, ):
                proton.pn_connector_set_context(self.connector, CONNECTED)
                break

            if proton.pn_sasl_state(sasl) == proton.PN_SASL_FAIL:
                yield Return(-1)

            yield

        self.session = proton.pn_session(self.connection)
        proton.pn_session_open(self.session)
        proton.pn_session_set_context(self.session, self)

        link = proton.pn_sender(self.session, senderName)
        dst = proton.pn_link_target(link)
        proton.pn_terminus_set_address(dst, amqpAddress)
        self.sender = link
        yield Return(1)
コード例 #4
0
ファイル: protonReactor.py プロジェクト: fzkbass/vdsm
    def _openClientSession(self):
        host, port = self._address
        amqpAddress = "ampq://%s:%d/vdsm" % (host, port)
        senderName = "jsonrpc.ProtonClient %s (%s)" % (str(uuid.uuid4()),
                                                       amqpAddress,)
        self.log = logging.getLogger(senderName)

        self.connector = proton.pn_connector(self._reactor._driver,
                                             host, str(port), None)
        if self.connector is None:
            raise ProtonError("Could not create connector")

        self.connection = proton.pn_connection()
        proton.pn_connector_set_connection(self.connector, self.connection)

        sasl = proton.pn_connector_sasl(self.connector)
        proton.pn_sasl_mechanisms(sasl, "ANONYMOUS")
        proton.pn_sasl_client(sasl)

        proton.pn_connector_set_context(self.connector, CLIENT_AUTH)
        self.log.debug("Opening active connection")
        proton.pn_connection_open(self.connection)

        while True:
            # TODO: Handle connection being closed mid authentication
            if proton.pn_sasl_state(sasl) in (proton.PN_SASL_PASS,):
                proton.pn_connector_set_context(self.connector, CONNECTED)
                break

            if proton.pn_sasl_state(sasl) == proton.PN_SASL_FAIL:
                yield Return(-1)

            yield

        self.session = proton.pn_session(self.connection)
        proton.pn_session_open(self.session)
        proton.pn_session_set_context(self.session, self)

        link = proton.pn_sender(self.session, senderName)
        dst = proton.pn_link_target(link)
        proton.pn_terminus_set_address(dst, amqpAddress)
        self.sender = link
        yield Return(1)