blob: 90b40ea57b03a599ba5b2bd38ebc56afca60c592 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.mojo.bindings;
import org.chromium.mojo.system.Core;
/**
* Base class for all mojo unions.
*/
public abstract class Union {
/**
* Returns the serialization of the union. This method can close Handles.
*
* @param core the |Core| implementation used to generate handles. Only used if the data
* structure being encoded contains interfaces, can be |null| otherwise.
*/
public Message serialize(Core core) {
Encoder encoder = new Encoder(core, BindingsHelper.UNION_SIZE);
encoder.claimMemory(16);
encode(encoder, 0);
return encoder.getMessage();
}
/**
* Serializes this data structure using the given encoder.
*/
protected abstract void encode(Encoder encoder, int offset);
}