org.vertx.java.core.eventbus.impl.BufferMessage Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of vertx-core Show documentation
Show all versions of vertx-core Show documentation
vert.x - Effortless asynchronous application development for the modern web and enterprise
/*
* Copyright (c) 2011-2013 The original author or authors
* ------------------------------------------------------
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*/
package org.vertx.java.core.eventbus.impl;
import org.vertx.java.core.buffer.Buffer;
import org.vertx.java.core.eventbus.Message;
/**
* @author Tim Fox
*/
class BufferMessage extends BaseMessage {
BufferMessage(boolean send, String address, Buffer body) {
super(send, address, body);
}
public BufferMessage(Buffer readBuff) {
super(readBuff);
}
@Override
protected void readBody(int pos, Buffer readBuff) {
boolean isNull = readBuff.getByte(pos) == (byte)0;
if (!isNull) {
pos++;
int buffLength = readBuff.getInt(pos);
pos += 4;
byte[] bytes = readBuff.getBytes(pos, pos + buffLength);
body = new Buffer(bytes);
}
}
@Override
protected void writeBody(Buffer buff) {
if (body == null) {
buff.appendByte((byte)0);
} else {
buff.appendByte((byte)1);
buff.appendInt(body.length());
buff.appendBuffer(body);
}
}
@Override
protected int getBodyLength() {
return 1 + (body == null ? 0 : 4 + body.length());
}
@Override
protected Message copy() {
BufferMessage copied = new BufferMessage(send, address, body == null ? null : body.copy());
copied.replyAddress = this.replyAddress;
copied.bus = this.bus;
copied.sender = this.sender;
return copied;
}
@Override
protected byte type() {
return MessageFactory.TYPE_BUFFER;
}
}