use of io.nuls.kernel.utils.NulsOutputStreamBuffer in project nuls by nuls-io.
the class BaseNulsData method serialize.
@Override
public final byte[] serialize() throws IOException {
ByteArrayOutputStream bos = null;
try {
int size = size();
bos = new UnsafeByteArrayOutputStream(size);
NulsOutputStreamBuffer buffer = new NulsOutputStreamBuffer(bos);
if (size == 0) {
bos.write(NulsConstant.PLACE_HOLDER);
} else {
serializeToStream(buffer);
}
byte[] bytes = bos.toByteArray();
if (bytes.length != this.size()) {
throw new NulsRuntimeException(KernelErrorCode.SERIALIZE_ERROR);
}
return bytes;
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
throw e;
}
}
}
}
use of io.nuls.kernel.utils.NulsOutputStreamBuffer in project nuls by nuls-io.
the class Transaction method serializeForHash.
public byte[] serializeForHash() throws IOException {
ByteArrayOutputStream bos = null;
try {
int size = size() - SerializeUtils.sizeOfBytes(transactionSignature);
bos = new UnsafeByteArrayOutputStream(size);
NulsOutputStreamBuffer buffer = new NulsOutputStreamBuffer(bos);
do {
if (size == 0) {
bos.write(NulsConstant.PLACE_HOLDER);
break;
}
if (NulsContext.MAIN_NET_VERSION < 2) {
buffer.writeVarInt(type);
buffer.writeVarInt(time);
break;
}
if (this.blockHeight == -1) {
buffer.writeUint16(type);
buffer.writeUint48(time);
break;
}
if (NulsContext.CHANGE_HASH_SERIALIZE_HEIGHT == null || this.blockHeight >= NulsContext.CHANGE_HASH_SERIALIZE_HEIGHT) {
buffer.writeUint16(type);
buffer.writeUint48(time);
} else {
buffer.writeVarInt(type);
buffer.writeVarInt(time);
}
} while (false);
if (size > 0) {
buffer.writeBytesWithLength(remark);
buffer.writeNulsData(txData);
buffer.writeNulsData(coinData);
}
return bos.toByteArray();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
throw e;
}
}
}
}
Aggregations