// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MINIBIND_COMMAND_H_ #define MINIBIND_COMAMND_H_ #include #include #include #include "common.h" namespace minibind { class Parcel; class Command { public: virtual size_t GetSize() const = 0; virtual binder_uintptr_t GetData() const = 0; protected: ~Command() {} }; class TransactionCommand : public Command { public: enum Type { TWO_WAY, REPLY_ASYNC, }; TransactionCommand(Type type); ~TransactionCommand(); void SetHandle(uint32_t handle); void SetCode(uint32_t code); void SetParcel(const Parcel& parcel); // Command: size_t GetSize() const override; binder_uintptr_t GetData() const override; private: const binder_driver_command_protocol command_; struct binder_transaction_data transaction_; DISALLOW_COPY_AND_ASSIGN(TransactionCommand); }; } // namespace minibind #endif // MINIBIND_COMAMND_H_