public void WriteTo(Stream output) { Protobuf.ProtobufReaderWriter proto = new ProtobufReaderWriter(output); proto.WriteKey(1, ProtobufReaderWriter.PROTOBUF_LENDELIM); proto.WriteBytes(Payment.ToBytes()); if (Memo != null) { proto.WriteKey(2, ProtobufReaderWriter.PROTOBUF_LENDELIM); proto.WriteString(Memo); } }
internal void Write(Stream output) { var writer = new ProtobufReaderWriter(output); if (_Amount != null) { writer.WriteKey(1, ProtobufReaderWriter.PROTOBUF_VARINT); writer.WriteULong((ulong)_Amount.Satoshi); } writer.WriteKey(2, ProtobufReaderWriter.PROTOBUF_LENDELIM); writer.WriteBytes(Script == null ? new byte[0] : Script.ToBytes(true)); }
public void WriteTo(Stream stream) { var writer = new ProtobufReaderWriter(stream); if (_Network != null) { var str = _Network == Network.Main ? "main" : _Network == Network.TestNet ? "test" : _Network == Network.RegTest ? "regtest" : null; if (str == null) { throw new InvalidOperationException("Impossible to serialize a payment request on network " + _Network); } writer.WriteKey(1, ProtobufReaderWriter.PROTOBUF_LENDELIM); writer.WriteString(str); } foreach (var txout in Outputs) { writer.WriteKey(2, ProtobufReaderWriter.PROTOBUF_LENDELIM); writer.WriteBytes(txout.ToBytes()); } writer.WriteKey(3, ProtobufReaderWriter.PROTOBUF_VARINT); writer.WriteULong(Utils.DateTimeToUnixTime(Time)); if (Expires != null) { writer.WriteKey(4, ProtobufReaderWriter.PROTOBUF_VARINT); writer.WriteULong(Utils.DateTimeToUnixTime(Expires.Value)); } if (Memo != null) { writer.WriteKey(5, ProtobufReaderWriter.PROTOBUF_LENDELIM); writer.WriteString(Memo); } if (PaymentUrl != null) { writer.WriteKey(6, ProtobufReaderWriter.PROTOBUF_LENDELIM); writer.WriteString(PaymentUrl.AbsoluteUri); } if (MerchantData != null) { writer.WriteKey(7, ProtobufReaderWriter.PROTOBUF_LENDELIM); writer.WriteBytes(MerchantData); } }
public static PaymentMessage Load(Stream source, Network network) { if (source.CanSeek && source.Length > MaxLength) { throw new ArgumentException("Payment messages larger than " + MaxLength + " bytes should be rejected by the merchant's server", "source"); } network = network ?? Network.Main; PaymentMessage message = new PaymentMessage(); ProtobufReaderWriter proto = new ProtobufReaderWriter(source); int key; while (proto.TryReadKey(out key)) { switch (key) { case 1: message.MerchantData = proto.ReadBytes(); break; case 2: var tx = network.Consensus.ConsensusFactory.CreateTransaction(); tx.ReadWrite(proto.ReadBytes()); message.Transactions.Add(tx); break; case 3: message.RefundTo.Add(PaymentOutput.Load(proto.ReadBytes())); break; case 4: message.Memo = proto.ReadString(); break; default: break; } } message.Network = network; return(message); }
public static PaymentMessage Load(Stream source) { if (source.CanSeek && source.Length > MaxLength) { throw new ArgumentException("Payment messages larger than " + MaxLength + " bytes should be rejected by the merchant's server", "source"); } PaymentMessage message = new PaymentMessage(); ProtobufReaderWriter proto = new ProtobufReaderWriter(source); int key; while (proto.TryReadKey(out key)) { switch (key) { case 1: message.MerchantData = proto.ReadBytes(); break; case 2: message.Transactions.Add(new Transaction(proto.ReadBytes())); break; case 3: message.RefundTo.Add(PaymentOutput.Load(proto.ReadBytes())); break; case 4: message.Memo = proto.ReadString(); break; default: break; } } return(message); }