Exemple #1
0
    void ClientStub::requestTransportFiltersAsync(
        const std::vector<FilterPtr> &filters,
        boost::function0<void> onCompletion)
    {       
        if (getRuntimeVersion() <= 11)
        {
            requestTransportFiltersAsync_Legacy(filters, onCompletion);
            return;
        }

        RcfClientPtr rtfClientPtr( new I_RcfClient("", *this) );
        rtfClientPtr->getClientStub().setTransport( releaseTransport());
        rtfClientPtr->getClientStub().setTargetToken( Token());
        setSubRcfClientPtr(rtfClientPtr);

        setAsync(true);

        OobRequestTransportFilters msg(getRuntimeVersion(), filters);
        ByteBuffer controlRequest;
        msg.encodeRequest(controlRequest);
        rtfClientPtr->getClientStub().setOutofBandRequest(controlRequest);

        Future<Void> fv;

        boost::shared_ptr<std::vector<FilterPtr> > filtersPtr(
            new std::vector<FilterPtr>(filters) );

        fv = rtfClientPtr->getClientStub().ping( RCF::AsyncTwoway( boost::bind(
            &onRtfCompleted, 
            fv,
            rtfClientPtr,
            boost::ref(*this),
            filtersPtr,
            onCompletion)));
    }
    void HandleEvent(ResetEvent ev)
    {
        if((FpAddress.board == ev.board && ev.cpu == 0) ||
           (FpAddress.board == ev.board && FpAddress.cpu == ev.cpu))
        {
            releaseDsp(FpAddress);

            if(ev.resetTransport)
                releaseTransport(TransportAddress);

            if(TempFpAddress.cpu != 0)
                releaseDsp(TempFpAddress);

            return;
        }
        if (TempFpAddress.cpu != 0 &&
            TempFpAddress.board == ev.board &&
            (ev.cpu == 0 || TempFpAddress.cpu == ev.cpu)
           )
            releaseDsp(TempFpAddress);
    };
Exemple #3
0
    void ClientStub::requestTransportFilters(const std::vector<FilterPtr> &filters)
    {
        if (getRuntimeVersion() <= 11)
        {
            requestTransportFilters_Legacy(filters);
            return;
        }

        ClientStub stub(*this);
        stub.setTransport( releaseTransport());
        stub.setTargetToken( Token());

        RestoreClientTransportGuard guard(*this, stub);

        // Set OOB request.
        OobRequestTransportFilters msg(getRuntimeVersion(), filters);
        ByteBuffer controlRequest;
        msg.encodeRequest(controlRequest);
        stub.setOutofBandRequest(controlRequest);

        stub.ping(RCF::Twoway);

        // Get OOB response.
        ByteBuffer controlResponse = stub.getOutOfBandResponse();
        stub.setOutofBandRequest(ByteBuffer());
        stub.setOutofBandResponse(ByteBuffer());
        msg.decodeResponse(controlResponse);

        int ret = msg.mResponseError; 
        RCF_VERIFY(ret == RcfError_Ok, RemoteException( Error(ret) ));

        for (std::size_t i=0; i<filters.size(); ++i)
        {
            filters[i]->resetState();
        }

        stub.getTransport().setTransportFilters(filters);
    }