First cut at minibind classes.
[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 }
15
16 TransactionCommand::~TransactionCommand() {}
17
18 void TransactionCommand::SetCode(uint32_t code) {
19 transaction_.code = code;
20 }
21
22 void TransactionCommand::SetHandle(uint32_t handle) {
23 transaction_.target.handle = handle;
24 }
25
26 void TransactionCommand::SetParcel(const Parcel& parcel) {
27 transaction_.data_size = parcel.DataSize();
28 transaction_.data.ptr.buffer = parcel.DataPointer();
29 }
30
31 size_t TransactionCommand::GetSize() const {
32 return sizeof(command_) + sizeof(transaction_);
33 }
34
35 binder_uintptr_t TransactionCommand::GetData() const {
36 return reinterpret_cast<binder_uintptr_t>(&command_);
37 }
38
39 } // namespace minibind