All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.fisco.bcos.channel.dto.ChannelMessage Maven / Gradle / Ivy

package org.fisco.bcos.channel.dto;

import io.netty.buffer.ByteBuf;
import org.fisco.bcos.channel.handler.Message;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ChannelMessage extends Message {
  private static Logger logger = LoggerFactory.getLogger(ChannelMessage.class);

  private static final long serialVersionUID = -7276897518418560354L;

  public ChannelMessage() {}

  public ChannelMessage(Message msg) {
    length = msg.getLength();
    type = msg.getType();
    seq = msg.getSeq();
    result = msg.getResult();
  }

  @Override
  public void readExtra(ByteBuf in) {
    logger.debug("readExtra channel package: {}", result);
    if (result == 0) {
      byte[] toNodeBytes = new byte[128];
      in.readBytes(toNodeBytes, 0, 128);
      toNode = new String(toNodeBytes);
      logger.debug("toNode: {}", toNode);

      byte[] fromNodeBytes = new byte[128];
      in.readBytes(fromNodeBytes, 0, 128);
      fromNode = new String(fromNodeBytes);
      logger.debug("fromNode: {}", fromNode);

      data = new byte[length - Message.HEADER_LENGTH - 128 - 128];
      in.readBytes(data, 0, length - Message.HEADER_LENGTH - 128 - 128);
      logger.debug("data: {} {}", data.length, data);
    }
  }

  @Override
  public void writeHeader(ByteBuf out) {
    // 先计算总长度
    length = Message.HEADER_LENGTH + toNode.length() + fromNode.length() + data.length;

    super.writeHeader(out);
  }

  @Override
  public void writeExtra(ByteBuf out) {
    out.writeBytes(toNode.getBytes());
    out.writeBytes(fromNode.getBytes());

    out.writeBytes(data);
  }

  public String getToNode() {
    return toNode;
  }

  public void setToNode(String toNode) {
    this.toNode = toNode;
  }

  public String getFromNode() {
    return fromNode;
  }

  public void setFromNode(String fromNode) {
    this.fromNode = fromNode;
  }

  private String toNode;
  private String fromNode;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy