decode static method

Implementation

static XdrStellarMessage decode(XdrDataInputStream stream) {
  XdrStellarMessage decodedStellarMessage =
      XdrStellarMessage(XdrMessageType.decode(stream));
  switch (decodedStellarMessage.discriminant) {
    case XdrMessageType.ERROR_MSG:
      decodedStellarMessage.error = XdrError.decode(stream);
      break;
    case XdrMessageType.HELLO:
      decodedStellarMessage.hello = XdrHello.decode(stream);
      break;
    case XdrMessageType.AUTH:
      decodedStellarMessage.auth = XdrAuth.decode(stream);
      break;
    case XdrMessageType.DONT_HAVE:
      decodedStellarMessage.dontHave = XdrDontHave.decode(stream);
      break;
    case XdrMessageType.GET_PEERS:
      break;
    case XdrMessageType.PEERS:
      int peerssize = stream.readInt();
      // decodedStellarMessage.peers = List<XdrPeerAddress>(peerssize);
      decodedStellarMessage.peers = []..length = peerssize;
      for (int i = 0; i < peerssize; i++) {
        decodedStellarMessage.peers![i] = XdrPeerAddress.decode(stream);
      }
      break;
    case XdrMessageType.GET_TX_SET:
      decodedStellarMessage.txSetHash = XdrUint256.decode(stream);
      break;
    case XdrMessageType.TX_SET:
      decodedStellarMessage.txSet = XdrTransactionSet.decode(stream);
      break;
    case XdrMessageType.TRANSACTION:
      decodedStellarMessage.transaction =
          XdrTransactionEnvelope.decode(stream);
      break;
    case XdrMessageType.GET_SCP_QUORUMSET:
      decodedStellarMessage.qSetHash = XdrUint256.decode(stream);
      break;
    case XdrMessageType.SCP_QUORUMSET:
      decodedStellarMessage.qSet = XdrSCPQuorumSet.decode(stream);
      break;
    case XdrMessageType.SCP_MESSAGE:
      decodedStellarMessage.envelope = XdrSCPEnvelope.decode(stream);
      break;
    case XdrMessageType.GET_SCP_STATE:
      decodedStellarMessage.getSCPLedgerSeq = XdrUint32.decode(stream);
      break;
  }
  // TODO: survey
  return decodedStellarMessage;
}