/* ************************************************************************
#
# DivConq
#
# http://divconq.com/
#
# Copyright:
# Copyright 2014 eTimeline, LLC. All rights reserved.
#
# License:
# See the license.txt file in the project's top-level directory for details.
#
# Authors:
# * Andy White
#
************************************************************************ */
package divconq.bus.net;
import java.nio.ByteBuffer;
import divconq.bus.MessageUtil;
import divconq.struct.RecordStruct;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.util.ReferenceCounted;
public class StreamMessage extends RecordStruct {
protected ByteBuf data = null;
public boolean hasData() {
return (this.data != null);
}
public ByteBuf getData() {
return this.data;
}
public void setData(ByteBuf v) {
this.data = v;
}
public StreamMessage() {
}
public StreamMessage(String op) {
this.setField("Op", op);
}
public StreamMessage(String op, ByteBuf buf) {
this(op);
this.data = buf;
}
// TODO clean up this usage - it means something different than above, confusing
public StreamMessage(String op, ByteBuffer buf) {
this(op);
this.data = Unpooled.copiedBuffer(buf.array(), 0, buf.position());
}
public boolean hasErrors() {
return MessageUtil.hasErrors(this);
}
public long getCode() {
return MessageUtil.getCode(this);
}
public String getMessage() {
return MessageUtil.getMessage(this);
}
public boolean isFinal() {
return "Final".equals(this.getFieldAsString("Op"));
}
public boolean isStart() {
return "Start".equals(this.getFieldAsString("Op"));
}
public boolean isBlock() {
return "Block".equals(this.getFieldAsString("Op"));
}
public int refCnt() {
if (this.data != null)
return this.data.refCnt();
return 0;
}
public ReferenceCounted retain() {
if (this.data != null)
return this.data.retain();
return null;
}
public ReferenceCounted retain(int increment) {
if (this.data != null)
return this.data.retain(increment);
return null;
}
public boolean release() {
if (this.data != null)
return this.data.release();
return true;
}
public boolean release(int decrement) {
if (this.data != null)
return this.data.release(decrement);
return true;
}
}