blob: 996c45733889cec501b982155d03f982cba39142 [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.Handle;
import org.chromium.mojo.system.MessagePipeHandle;
import java.nio.ByteBuffer;
import java.util.List;
/**
* A raw message to be sent/received from a {@link MessagePipeHandle}. Note that this can contain
* any data, not necessarily a Mojo message with a proper header. See also {@link ServiceMessage}.
*/
public class Message {
/**
* The data of the message.
*/
private final ByteBuffer mBuffer;
/**
* The handles of the message.
*/
private final List<? extends Handle> mHandle;
/**
* This message interpreted as a message for a mojo service with an appropriate header.
*/
private ServiceMessage mWithHeader;
/**
* Constructor.
*
* @param buffer The buffer containing the bytes to send. This must be a direct buffer.
* @param handles The list of handles to send.
*/
public Message(ByteBuffer buffer, List<? extends Handle> handles) {
assert buffer.isDirect();
mBuffer = buffer;
mHandle = handles;
}
/**
* The data of the message.
*/
public ByteBuffer getData() {
return mBuffer;
}
/**
* The handles of the message.
*/
public List<? extends Handle> getHandles() {
return mHandle;
}
/**
* Returns the message interpreted as a message for a mojo service.
*/
public ServiceMessage asServiceMessage() {
if (mWithHeader == null) {
mWithHeader = new ServiceMessage(this);
}
return mWithHeader;
}
}