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); };
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); }