Begin processing read commands.
[minibind.git] / jni / minibind / command.cc
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "command.h"
6
7 #include "common.h"
8 #include "parcel.h"
9
10 namespace minibind {
11
12 TransactionCommand::TransactionCommand(TransactionCommand::Type type)
13 : command_(type == TWO_WAY ? BC_TRANSACTION : BC_REPLY),
14 transaction_() {
15 }
16
17 TransactionCommand::~TransactionCommand() {}
18
19 void TransactionCommand::SetCode(uint32_t code) {
20 transaction_.code = code;
21 }
22
23 void TransactionCommand::SetHandle(uint32_t handle) {
24 transaction_.target.handle = handle;
25 }
26
27 void TransactionCommand::SetParcel(const Parcel& parcel) {
28 transaction_.data_size = parcel.DataSize();
29 transaction_.data.ptr.buffer = parcel.DataPointer();
30 }
31
32 size_t TransactionCommand::GetSize() const {
33 return sizeof(command_) + sizeof(transaction_);
34 }
35
36 binder_uintptr_t TransactionCommand::GetData() const {
37 return reinterpret_cast<binder_uintptr_t>(&command_);
38 }
39
40 } // namespace minibind