BlockMetadataConverterFactory.java
- /*
- * @copyright defined in LICENSE.txt
- */
- package hera.transport;
- import static hera.api.model.BytesValue.of;
- import static org.slf4j.LoggerFactory.getLogger;
- import hera.api.function.Function1;
- import hera.api.model.BlockHash;
- import hera.api.model.BlockHeader;
- import hera.api.model.BlockMetadata;
- import org.slf4j.Logger;
- import types.Blockchain;
- import types.Rpc;
- public class BlockMetadataConverterFactory {
- protected final transient Logger logger = getLogger(getClass());
- protected final ModelConverter<BlockHeader, Blockchain.BlockHeader> blockHeaderConverter =
- new BlockHeaderConverterFactory().create();
- protected final Function1<BlockMetadata,
- Rpc.BlockMetadata> domainConverter = new Function1<BlockMetadata, Rpc.BlockMetadata>() {
- @Override
- public Rpc.BlockMetadata apply(BlockMetadata domainBlock) {
- throw new UnsupportedOperationException();
- }
- };
- protected final Function1<Rpc.BlockMetadata, BlockMetadata> rpcConverter =
- new Function1<Rpc.BlockMetadata, BlockMetadata>() {
- @Override
- public BlockMetadata apply(final Rpc.BlockMetadata rpcBlockMetadata) {
- logger.trace("Rpc block metadata to convert: {}", rpcBlockMetadata);
- final BlockMetadata domainBlockMetadata = BlockMetadata.newBuilder()
- .blockHash(new BlockHash(of(rpcBlockMetadata.getHash().toByteArray())))
- .blockHeader(blockHeaderConverter.convertToDomainModel(rpcBlockMetadata.getHeader()))
- .txCount(rpcBlockMetadata.getTxcount())
- .blockSize(rpcBlockMetadata.getSize())
- .build();
- logger.trace("Domain block metadata converted: {}", domainBlockMetadata);
- return domainBlockMetadata;
- }
- };
- public ModelConverter<BlockMetadata, Rpc.BlockMetadata> create() {
- return new ModelConverter<BlockMetadata, Rpc.BlockMetadata>(domainConverter, rpcConverter);
- }
- }