Search in sources :

Example 1 with NulsOutputStreamBuffer

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;
            }
        }
    }
}
Also used : NulsOutputStreamBuffer(io.nuls.kernel.utils.NulsOutputStreamBuffer) UnsafeByteArrayOutputStream(io.nuls.core.tools.crypto.UnsafeByteArrayOutputStream) NulsRuntimeException(io.nuls.kernel.exception.NulsRuntimeException) ByteArrayOutputStream(java.io.ByteArrayOutputStream) UnsafeByteArrayOutputStream(io.nuls.core.tools.crypto.UnsafeByteArrayOutputStream) IOException(java.io.IOException)

Example 2 with NulsOutputStreamBuffer

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;
            }
        }
    }
}
Also used : NulsOutputStreamBuffer(io.nuls.kernel.utils.NulsOutputStreamBuffer) UnsafeByteArrayOutputStream(io.nuls.core.tools.crypto.UnsafeByteArrayOutputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) UnsafeByteArrayOutputStream(io.nuls.core.tools.crypto.UnsafeByteArrayOutputStream) IOException(java.io.IOException)

Aggregations

UnsafeByteArrayOutputStream (io.nuls.core.tools.crypto.UnsafeByteArrayOutputStream)2 NulsOutputStreamBuffer (io.nuls.kernel.utils.NulsOutputStreamBuffer)2 ByteArrayOutputStream (java.io.ByteArrayOutputStream)2 IOException (java.io.IOException)2 NulsRuntimeException (io.nuls.kernel.exception.NulsRuntimeException)1