| Index: mojo/bindings/java/src/org/chromium/mojo/bindings/Struct.java
|
| diff --git a/mojo/bindings/java/src/org/chromium/mojo/bindings/Struct.java b/mojo/bindings/java/src/org/chromium/mojo/bindings/Struct.java
|
| index 54bf3558d5323b78fc5aa94a888c5c141d39105f..f7c16a2decb0fa75c54e0684ed020a1b6bfa9163 100644
|
| --- a/mojo/bindings/java/src/org/chromium/mojo/bindings/Struct.java
|
| +++ b/mojo/bindings/java/src/org/chromium/mojo/bindings/Struct.java
|
| @@ -4,9 +4,73 @@
|
|
|
| package org.chromium.mojo.bindings;
|
|
|
| +import org.chromium.mojo.system.Core;
|
| +
|
| /**
|
| * Base class for all mojo structs.
|
| */
|
| public abstract class Struct {
|
|
|
| + /**
|
| + * The header for a mojo complex element.
|
| + */
|
| + public static final class DataHeader {
|
| +
|
| + /**
|
| + * The size of a serialized header, in bytes.
|
| + */
|
| + public static final int HEADER_SIZE = 8;
|
| +
|
| + /**
|
| + * The offset of the size field.
|
| + */
|
| + public static final int SIZE_OFFSET = 0;
|
| +
|
| + /**
|
| + * The offset of the number of fields field.
|
| + */
|
| + public static final int NUM_FIELDS_OFFSET = 4;
|
| +
|
| + public final int size;
|
| + public final int numFields;
|
| +
|
| + /**
|
| + * Constructor.
|
| + */
|
| + public DataHeader(int size, int numFields) {
|
| + super();
|
| + this.size = size;
|
| + this.numFields = numFields;
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * The base size of the struct.
|
| + */
|
| + protected final int mEncodedBaseSize;
|
| +
|
| + /**
|
| + * Constructor.
|
| + */
|
| + protected Struct(int encodedBaseSize) {
|
| + this.mEncodedBaseSize = encodedBaseSize;
|
| + }
|
| +
|
| + /**
|
| + * Use the given encoder to serialized this struct.
|
| + */
|
| + protected abstract void encode(Encoder encoder);
|
| +
|
| + /**
|
| + * Returns the serialization of the struct. This method can close Handles.
|
| + *
|
| + * @param core the |Core| implementation used to generate handles. Only used if the |Struct|
|
| + * being encoded contains interfaces, can be |null| otherwise.
|
| + */
|
| + public Message serialize(Core core) {
|
| + Encoder encoder = new Encoder(core, mEncodedBaseSize);
|
| + encode(encoder);
|
| + return encoder.getMessage();
|
| + }
|
| +
|
| }
|
|
|