• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 unions.
11  */
12 public 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      */
serialize(Core core)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      */
encode(Encoder encoder, int offset)29     protected abstract void encode(Encoder encoder, int offset);
30 }
31