1*4d7e907cSAndroid Build Coastguard Worker 2*4d7e907cSAndroid Build Coastguard Worker #define LOG_TAG "hidl_test" 3*4d7e907cSAndroid Build Coastguard Worker 4*4d7e907cSAndroid Build Coastguard Worker #include "Fetcher.h" 5*4d7e907cSAndroid Build Coastguard Worker #include <android-base/logging.h> 6*4d7e907cSAndroid Build Coastguard Worker #include <inttypes.h> 7*4d7e907cSAndroid Build Coastguard Worker 8*4d7e907cSAndroid Build Coastguard Worker namespace android { 9*4d7e907cSAndroid Build Coastguard Worker namespace hardware { 10*4d7e907cSAndroid Build Coastguard Worker namespace tests { 11*4d7e907cSAndroid Build Coastguard Worker namespace inheritance { 12*4d7e907cSAndroid Build Coastguard Worker namespace V1_0 { 13*4d7e907cSAndroid Build Coastguard Worker namespace implementation { 14*4d7e907cSAndroid Build Coastguard Worker Fetcher()15*4d7e907cSAndroid Build Coastguard WorkerFetcher::Fetcher() { 16*4d7e907cSAndroid Build Coastguard Worker mPrecious = IChild::getService("local child", true); 17*4d7e907cSAndroid Build Coastguard Worker CHECK(!mPrecious->isRemote()); 18*4d7e907cSAndroid Build Coastguard Worker } 19*4d7e907cSAndroid Build Coastguard Worker selectService(bool sendRemote,sp<IChild> & local)20*4d7e907cSAndroid Build Coastguard Workersp<IChild> selectService(bool sendRemote, sp<IChild> &local) { 21*4d7e907cSAndroid Build Coastguard Worker sp<IChild> toSend; 22*4d7e907cSAndroid Build Coastguard Worker if (sendRemote) { 23*4d7e907cSAndroid Build Coastguard Worker toSend = IChild::getService("child"); 24*4d7e907cSAndroid Build Coastguard Worker if (!toSend->isRemote()) { 25*4d7e907cSAndroid Build Coastguard Worker toSend = nullptr; 26*4d7e907cSAndroid Build Coastguard Worker } 27*4d7e907cSAndroid Build Coastguard Worker } else { 28*4d7e907cSAndroid Build Coastguard Worker toSend = local; 29*4d7e907cSAndroid Build Coastguard Worker } 30*4d7e907cSAndroid Build Coastguard Worker LOG(INFO) << "SERVER(Fetcher) selectService returning " << toSend.get(); 31*4d7e907cSAndroid Build Coastguard Worker return toSend; 32*4d7e907cSAndroid Build Coastguard Worker } 33*4d7e907cSAndroid Build Coastguard Worker 34*4d7e907cSAndroid Build Coastguard Worker // Methods from ::android::hardware::tests::inheritance::V1_0::IFetcher follow. getGrandparent(bool sendRemote)35*4d7e907cSAndroid Build Coastguard WorkerReturn<sp<IGrandparent>> Fetcher::getGrandparent(bool sendRemote) { 36*4d7e907cSAndroid Build Coastguard Worker return selectService(sendRemote, mPrecious); 37*4d7e907cSAndroid Build Coastguard Worker } 38*4d7e907cSAndroid Build Coastguard Worker getParent(bool sendRemote)39*4d7e907cSAndroid Build Coastguard WorkerReturn<sp<IParent>> Fetcher::getParent(bool sendRemote) { 40*4d7e907cSAndroid Build Coastguard Worker return selectService(sendRemote, mPrecious); 41*4d7e907cSAndroid Build Coastguard Worker } 42*4d7e907cSAndroid Build Coastguard Worker getChild(bool sendRemote)43*4d7e907cSAndroid Build Coastguard WorkerReturn<sp<IChild>> Fetcher::getChild(bool sendRemote) { 44*4d7e907cSAndroid Build Coastguard Worker return selectService(sendRemote, mPrecious); 45*4d7e907cSAndroid Build Coastguard Worker } 46*4d7e907cSAndroid Build Coastguard Worker HIDL_FETCH_IFetcher(const char *)47*4d7e907cSAndroid Build Coastguard WorkerIFetcher* HIDL_FETCH_IFetcher(const char* /* name */) { 48*4d7e907cSAndroid Build Coastguard Worker return new Fetcher(); 49*4d7e907cSAndroid Build Coastguard Worker } 50*4d7e907cSAndroid Build Coastguard Worker 51*4d7e907cSAndroid Build Coastguard Worker } // namespace implementation 52*4d7e907cSAndroid Build Coastguard Worker } // namespace V1_0 53*4d7e907cSAndroid Build Coastguard Worker } // namespace inheritance 54*4d7e907cSAndroid Build Coastguard Worker } // namespace tests 55*4d7e907cSAndroid Build Coastguard Worker } // namespace hardware 56*4d7e907cSAndroid Build Coastguard Worker } // namespace android 57