1ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// Copyright 2016 The Android Open Source Project 2ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// 3ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// Licensed under the Apache License, Version 2.0 (the "License"); 4ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// you may not use this file except in compliance with the License. 5ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// You may obtain a copy of the License at 6ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// 7ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// http://www.apache.org/licenses/LICENSE-2.0 8ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// 9ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// Unless required by applicable law or agreed to in writing, software 10ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// distributed under the License is distributed on an "AS IS" BASIS, 11ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// See the License for the specific language governing permissions and 13ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// limitations under the License. 14ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko 15ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko#ifndef BUFFET_BINDER_COMMAND_PROXY_H_ 16ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko#define BUFFET_BINDER_COMMAND_PROXY_H_ 17ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko 18ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko#include <string> 19ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko 20ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko#include <base/macros.h> 21ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko#include <weave/command.h> 22ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko 23ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko#include "android/weave/BnWeaveCommand.h" 24ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko 25ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenkonamespace buffet { 26ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko 27ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// Implementation of android::weave::IWeaveCommand binder object. 28ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// This class simply redirects binder calls to the underlying weave::Command 29ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko// object (and performs necessary parameter/result type conversions). 30ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenkoclass BinderCommandProxy : public android::weave::BnWeaveCommand { 31ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko public: 32ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko explicit BinderCommandProxy(const std::weak_ptr<weave::Command>& command); 33ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko ~BinderCommandProxy() override = default; 34ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko 35ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status getId(android::String16* id) override; 36ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status getName(android::String16* name) override; 37ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status getComponent(android::String16* component) override; 38ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status getState(android::String16* state) override; 39ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status getOrigin(android::String16* origin) override; 40ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status getParameters(android::String16* parameters) override; 41ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status getProgress(android::String16* progress) override; 42ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status getResults(android::String16* results) override; 43ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status setProgress( 44ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko const android::String16& progress) override; 45ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status complete(const android::String16& results) override; 46ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status abort(const android::String16& errorCode, 47ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko const android::String16& errorMessage) override; 48ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status cancel() override; 49ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status pause() override; 50ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko android::binder::Status setError( 51ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko const android::String16& errorCode, 52ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko const android::String16& errorMessage) override; 53ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko 54ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko private: 55ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko std::weak_ptr<weave::Command> command_; 56ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko 57ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko DISALLOW_COPY_AND_ASSIGN(BinderCommandProxy); 58ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko}; 59ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko 60ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko} // namespace buffet 61ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko 62ae29f7d91a0b4178556eeb6b99fd05d90fcefd3dAlex Vakulenko#endif // BUFFET_BINDER_COMMAND_PROXY_H_ 63