Coverage Summary for Class: Message (co.rsk.net.messages)

Class Class, % Method, % Line, %
Message 0% (0/1) 0% (0/5) 0% (0/14)


1 /* 2  * This file is part of RskJ 3  * Copyright (C) 2017 RSK Labs Ltd. 4  * 5  * This program is free software: you can redistribute it and/or modify 6  * it under the terms of the GNU Lesser General Public License as published by 7  * the Free Software Foundation, either version 3 of the License, or 8  * (at your option) any later version. 9  * 10  * This program is distributed in the hope that it will be useful, 11  * but WITHOUT ANY WARRANTY; without even the implied warranty of 12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13  * GNU Lesser General Public License for more details. 14  * 15  * You should have received a copy of the GNU Lesser General Public License 16  * along with this program. If not, see <http://www.gnu.org/licenses/>. 17  */ 18  19 package co.rsk.net.messages; 20  21 import com.google.common.annotations.VisibleForTesting; 22 import org.ethereum.core.BlockFactory; 23 import org.ethereum.util.RLP; 24 import org.ethereum.util.RLPList; 25  26 /** 27  * Created by ajlopez on 5/10/2016. 28  */ 29 public abstract class Message { 30  31  public abstract MessageType getMessageType(); 32  33  public abstract byte[] getEncodedMessage(); 34  35  public abstract void accept(MessageVisitor v); 36  37  public final byte[] getEncoded() { 38  byte[] type = RLP.encodeByte(getMessageType().getTypeAsByte()); 39  byte[] body = RLP.encodeElement(this.getEncodedMessage()); 40  return RLP.encodeList(type, body); 41  } 42  43  @VisibleForTesting 44  static Message create(BlockFactory blockFactory, byte[] encoded) { 45  return create(blockFactory, (RLPList) RLP.decode2(encoded).get(0)); 46  } 47  48  public static Message create(BlockFactory blockFactory, RLPList paramsList) { 49  byte[] body = paramsList.get(1).getRLPData(); 50  51  if (body != null) { 52  int type = paramsList.get(0).getRLPData()[0]; 53  MessageType messageType = MessageType.valueOfType(type); 54  RLPList list = (RLPList) RLP.decode2(body).get(0); 55  return messageType.createMessage(blockFactory, list); 56  } 57  58  return null; 59  } 60  61  @Override 62  public String toString() { 63  return "Message{" + 64  "type=" + getMessageType() + 65  '}'; 66  } 67 }