OLD | NEW |
| (Empty) |
1 // Copyright 2014 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 package org.chromium.mojo.bindings; | |
6 | |
7 import org.chromium.mojo.system.Core; | |
8 | |
9 /** | |
10 * Base class for all mojo structs. | |
11 */ | |
12 public abstract class Struct { | |
13 /** | |
14 * The base size of the encoded struct. | |
15 */ | |
16 private final int mEncodedBaseSize; | |
17 | |
18 /** | |
19 * The version of the struct. | |
20 */ | |
21 private final int mVersion; | |
22 | |
23 /** | |
24 * Constructor. | |
25 */ | |
26 protected Struct(int encodedBaseSize, int version) { | |
27 mEncodedBaseSize = encodedBaseSize; | |
28 mVersion = version; | |
29 } | |
30 | |
31 /** | |
32 * Returns the version of the struct. It is the max version of the struct in
the mojom if it has | |
33 * been created locally, and the version of the received struct if it has be
en deserialized. | |
34 */ | |
35 public int getVersion() { | |
36 return mVersion; | |
37 } | |
38 | |
39 /** | |
40 * Returns the serialization of the struct. This method can close Handles. | |
41 * | |
42 * @param core the |Core| implementation used to generate handles. Only used
if the data | |
43 * structure being encoded contains interfaces, can be |null| oth
erwise. | |
44 */ | |
45 public Message serialize(Core core) { | |
46 Encoder encoder = new Encoder(core, mEncodedBaseSize); | |
47 encode(encoder); | |
48 return encoder.getMessage(); | |
49 } | |
50 | |
51 /** | |
52 * Returns the serialization of the struct prepended with the given header. | |
53 * | |
54 * @param header the header to prepend to the returned message. | |
55 * @param core the |Core| implementation used to generate handles. Only used
if the |Struct| | |
56 * being encoded contains interfaces, can be |null| otherwise. | |
57 */ | |
58 public ServiceMessage serializeWithHeader(Core core, MessageHeader header) { | |
59 Encoder encoder = new Encoder(core, mEncodedBaseSize + header.getSize())
; | |
60 header.encode(encoder); | |
61 encode(encoder); | |
62 return new ServiceMessage(encoder.getMessage(), header); | |
63 } | |
64 | |
65 /** | |
66 * Use the given encoder to serialize this data structure. | |
67 */ | |
68 protected abstract void encode(Encoder encoder); | |
69 } | |
OLD | NEW |