Union.java revision 645501c2ab19a559ce82a1d5a29ced159a4c30fb
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
5package org.chromium.mojo.bindings;
6
7import org.chromium.mojo.system.Core;
8
9/**
10 * Base class for all mojo unions.
11 */
12public abstract class Union {
13    /**
14     * Returns the serialization of the union. This method can close Handles.
15     *
16     * @param core the |Core| implementation used to generate handles. Only used if the data
17     *            structure being encoded contains interfaces, can be |null| otherwise.
18     */
19    public Message serialize(Core core) {
20        Encoder encoder = new Encoder(core, BindingsHelper.UNION_SIZE);
21        encoder.claimMemory(16);
22        encode(encoder, 0);
23        return encoder.getMessage();
24    }
25
26    /**
27     * Serializes this data structure using the given encoder.
28     */
29    protected abstract void encode(Encoder encoder, int offset);
30}
31