Hex Artifact Content
Not logged in

Artifact 72ab85bc43fff2260bdb3e4e07265fad265193d4:


0000: 70 61 63 6b 61 67 65 20 6f 72 67 2e 69 6e 74 65  package org.inte
0010: 72 6c 65 64 67 65 72 2e 63 6f 64 65 63 73 2e 6f  rledger.codecs.o
0020: 65 72 2e 69 6c 71 70 3b 0a 0a 69 6d 70 6f 72 74  er.ilqp;..import
0030: 20 6f 72 67 2e 69 6e 74 65 72 6c 65 64 67 65 72   org.interledger
0040: 2e 49 6e 74 65 72 6c 65 64 67 65 72 41 64 64 72  .InterledgerAddr
0050: 65 73 73 3b 0a 69 6d 70 6f 72 74 20 6f 72 67 2e  ess;.import org.
0060: 69 6e 74 65 72 6c 65 64 67 65 72 2e 63 6f 64 65  interledger.code
0070: 63 73 2e 43 6f 64 65 63 3b 0a 69 6d 70 6f 72 74  cs.Codec;.import
0080: 20 6f 72 67 2e 69 6e 74 65 72 6c 65 64 67 65 72   org.interledger
0090: 2e 63 6f 64 65 63 73 2e 43 6f 64 65 63 43 6f 6e  .codecs.CodecCon
00a0: 74 65 78 74 3b 0a 69 6d 70 6f 72 74 20 6f 72 67  text;.import org
00b0: 2e 69 6e 74 65 72 6c 65 64 67 65 72 2e 63 6f 64  .interledger.cod
00c0: 65 63 73 2e 51 75 6f 74 65 4c 69 71 75 69 64 69  ecs.QuoteLiquidi
00d0: 74 79 52 65 71 75 65 73 74 43 6f 64 65 63 3b 0a  tyRequestCodec;.
00e0: 69 6d 70 6f 72 74 20 6f 72 67 2e 69 6e 74 65 72  import org.inter
00f0: 6c 65 64 67 65 72 2e 63 6f 64 65 63 73 2e 6f 65  ledger.codecs.oe
0100: 72 2e 4f 65 72 55 69 6e 74 33 32 43 6f 64 65 63  r.OerUint32Codec
0110: 2e 4f 65 72 55 69 6e 74 33 32 3b 0a 69 6d 70 6f  .OerUint32;.impo
0120: 72 74 20 6f 72 67 2e 69 6e 74 65 72 6c 65 64 67  rt org.interledg
0130: 65 72 2e 63 6f 64 65 63 73 2e 70 61 63 6b 65 74  er.codecs.packet
0140: 74 79 70 65 73 2e 49 6e 74 65 72 6c 65 64 67 65  types.Interledge
0150: 72 50 61 63 6b 65 74 54 79 70 65 3b 0a 69 6d 70  rPacketType;.imp
0160: 6f 72 74 20 6f 72 67 2e 69 6e 74 65 72 6c 65 64  ort org.interled
0170: 67 65 72 2e 69 6c 71 70 2e 51 75 6f 74 65 4c 69  ger.ilqp.QuoteLi
0180: 71 75 69 64 69 74 79 52 65 71 75 65 73 74 3b 0a  quidityRequest;.
0190: 0a 69 6d 70 6f 72 74 20 6a 61 76 61 2e 69 6f 2e  .import java.io.
01a0: 49 4f 45 78 63 65 70 74 69 6f 6e 3b 0a 69 6d 70  IOException;.imp
01b0: 6f 72 74 20 6a 61 76 61 2e 69 6f 2e 49 6e 70 75  ort java.io.Inpu
01c0: 74 53 74 72 65 61 6d 3b 0a 69 6d 70 6f 72 74 20  tStream;.import 
01d0: 6a 61 76 61 2e 69 6f 2e 4f 75 74 70 75 74 53 74  java.io.OutputSt
01e0: 72 65 61 6d 3b 0a 69 6d 70 6f 72 74 20 6a 61 76  ream;.import jav
01f0: 61 2e 74 69 6d 65 2e 44 75 72 61 74 69 6f 6e 3b  a.time.Duration;
0200: 0a 69 6d 70 6f 72 74 20 6a 61 76 61 2e 74 69 6d  .import java.tim
0210: 65 2e 74 65 6d 70 6f 72 61 6c 2e 43 68 72 6f 6e  e.temporal.Chron
0220: 6f 55 6e 69 74 3b 0a 69 6d 70 6f 72 74 20 6a 61  oUnit;.import ja
0230: 76 61 2e 75 74 69 6c 2e 4f 62 6a 65 63 74 73 3b  va.util.Objects;
0240: 0a 0a 2f 2a 2a 0a 20 2a 20 41 6e 20 69 6d 70 6c  ../**. * An impl
0250: 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 7b 40  ementation of {@
0260: 6c 69 6e 6b 20 43 6f 64 65 63 7d 20 74 68 61 74  link Codec} that
0270: 20 72 65 61 64 73 20 61 6e 64 20 77 72 69 74 65   reads and write
0280: 73 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 0a 20  s instances of. 
0290: 2a 20 7b 40 6c 69 6e 6b 20 51 75 6f 74 65 4c 69  * {@link QuoteLi
02a0: 71 75 69 64 69 74 79 52 65 71 75 65 73 74 7d 2e  quidityRequest}.
02b0: 20 69 6e 20 4f 45 52 20 66 6f 72 6d 61 74 2e 0a   in OER format..
02c0: 20 2a 20 0a 20 2a 20 40 73 65 65 20 22 68 74 74   * . * @see "htt
02d0: 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f  ps://github.com/
02e0: 69 6e 74 65 72 6c 65 64 67 65 72 2f 72 66 63 73  interledger/rfcs
02f0: 2f 62 6c 6f 62 2f 6d 61 73 74 65 72 2f 61 73 6e  /blob/master/asn
0300: 31 2f 49 6e 74 65 72 6c 65 64 67 65 72 51 75 6f  1/InterledgerQuo
0310: 74 69 6e 67 50 72 6f 74 6f 63 6f 6c 2e 61 73 6e  tingProtocol.asn
0320: 22 0a 20 2a 2f 0a 70 75 62 6c 69 63 20 63 6c 61  ". */.public cla
0330: 73 73 20 51 75 6f 74 65 4c 69 71 75 69 64 69 74  ss QuoteLiquidit
0340: 79 52 65 71 75 65 73 74 4f 65 72 43 6f 64 65 63  yRequestOerCodec
0350: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 51 75 6f 74   implements Quot
0360: 65 4c 69 71 75 69 64 69 74 79 52 65 71 75 65 73  eLiquidityReques
0370: 74 43 6f 64 65 63 20 7b 0a 0a 20 20 40 4f 76 65  tCodec {..  @Ove
0380: 72 72 69 64 65 0a 20 20 70 75 62 6c 69 63 20 51  rride.  public Q
0390: 75 6f 74 65 4c 69 71 75 69 64 69 74 79 52 65 71  uoteLiquidityReq
03a0: 75 65 73 74 20 72 65 61 64 28 43 6f 64 65 63 43  uest read(CodecC
03b0: 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 2c 20  ontext context, 
03c0: 49 6e 70 75 74 53 74 72 65 61 6d 20 69 6e 70 75  InputStream inpu
03d0: 74 53 74 72 65 61 6d 29 0a 20 20 20 20 20 20 74  tStream).      t
03e0: 68 72 6f 77 73 20 49 4f 45 78 63 65 70 74 69 6f  hrows IOExceptio
03f0: 6e 20 7b 0a 0a 20 20 20 20 4f 62 6a 65 63 74 73  n {..    Objects
0400: 2e 72 65 71 75 69 72 65 4e 6f 6e 4e 75 6c 6c 28  .requireNonNull(
0410: 63 6f 6e 74 65 78 74 29 3b 0a 20 20 20 20 4f 62  context);.    Ob
0420: 6a 65 63 74 73 2e 72 65 71 75 69 72 65 4e 6f 6e  jects.requireNon
0430: 4e 75 6c 6c 28 69 6e 70 75 74 53 74 72 65 61 6d  Null(inputStream
0440: 29 3b 0a 0a 20 20 20 20 2f 2a 20 72 65 61 64 20  );..    /* read 
0450: 74 68 65 20 49 6e 74 65 72 6c 65 64 67 65 72 20  the Interledger 
0460: 41 64 64 72 65 73 73 2e 20 2a 2f 0a 20 20 20 20  Address. */.    
0470: 66 69 6e 61 6c 20 49 6e 74 65 72 6c 65 64 67 65  final Interledge
0480: 72 41 64 64 72 65 73 73 20 64 65 73 74 69 6e 61  rAddress destina
0490: 74 69 6f 6e 41 63 63 6f 75 6e 74 20 3d 0a 20 20  tionAccount =.  
04a0: 20 20 20 20 20 20 63 6f 6e 74 65 78 74 2e 72 65        context.re
04b0: 61 64 28 49 6e 74 65 72 6c 65 64 67 65 72 41 64  ad(InterledgerAd
04c0: 64 72 65 73 73 2e 63 6c 61 73 73 2c 20 69 6e 70  dress.class, inp
04d0: 75 74 53 74 72 65 61 6d 29 3b 0a 0a 20 20 20 20  utStream);..    
04e0: 2f 2a 20 72 65 61 64 20 74 68 65 20 64 65 73 74  /* read the dest
04f0: 69 6e 61 74 69 6f 6e 20 68 6f 6c 64 20 64 75 72  ination hold dur
0500: 61 74 69 6f 6e 20 77 68 69 63 68 20 69 73 20 61  ation which is a
0510: 20 75 6e 69 74 33 32 20 2a 2f 0a 20 20 20 20 6c   unit32 */.    l
0520: 6f 6e 67 20 64 65 73 74 69 6e 61 74 69 6f 6e 48  ong destinationH
0530: 6f 6c 64 44 75 72 61 74 69 6f 6e 20 3d 20 63 6f  oldDuration = co
0540: 6e 74 65 78 74 2e 72 65 61 64 28 4f 65 72 55 69  ntext.read(OerUi
0550: 6e 74 33 32 2e 63 6c 61 73 73 2c 20 69 6e 70 75  nt32.class, inpu
0560: 74 53 74 72 65 61 6d 29 2e 67 65 74 56 61 6c 75  tStream).getValu
0570: 65 28 29 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e  e();..    return
0580: 20 51 75 6f 74 65 4c 69 71 75 69 64 69 74 79 52   QuoteLiquidityR
0590: 65 71 75 65 73 74 2e 42 75 69 6c 64 65 72 2e 62  equest.Builder.b
05a0: 75 69 6c 64 65 72 28 29 0a 20 20 20 20 20 20 20  uilder().       
05b0: 20 2e 64 65 73 74 69 6e 61 74 69 6f 6e 41 63 63   .destinationAcc
05c0: 6f 75 6e 74 28 64 65 73 74 69 6e 61 74 69 6f 6e  ount(destination
05d0: 41 63 63 6f 75 6e 74 29 0a 20 20 20 20 20 20 20  Account).       
05e0: 20 2e 64 65 73 74 69 6e 61 74 69 6f 6e 48 6f 6c   .destinationHol
05f0: 64 44 75 72 61 74 69 6f 6e 28 44 75 72 61 74 69  dDuration(Durati
0600: 6f 6e 2e 6f 66 28 64 65 73 74 69 6e 61 74 69 6f  on.of(destinatio
0610: 6e 48 6f 6c 64 44 75 72 61 74 69 6f 6e 2c 20 43  nHoldDuration, C
0620: 68 72 6f 6e 6f 55 6e 69 74 2e 4d 49 4c 4c 49 53  hronoUnit.MILLIS
0630: 29 29 0a 20 20 20 20 20 20 20 20 2e 62 75 69 6c  )).        .buil
0640: 64 28 29 3b 0a 20 20 7d 0a 0a 20 20 40 4f 76 65  d();.  }..  @Ove
0650: 72 72 69 64 65 0a 20 20 70 75 62 6c 69 63 20 76  rride.  public v
0660: 6f 69 64 20 77 72 69 74 65 28 43 6f 64 65 63 43  oid write(CodecC
0670: 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 2c 20  ontext context, 
0680: 51 75 6f 74 65 4c 69 71 75 69 64 69 74 79 52 65  QuoteLiquidityRe
0690: 71 75 65 73 74 20 69 6e 73 74 61 6e 63 65 2c 0a  quest instance,.
06a0: 20 20 20 20 20 20 4f 75 74 70 75 74 53 74 72 65        OutputStre
06b0: 61 6d 20 6f 75 74 70 75 74 53 74 72 65 61 6d 29  am outputStream)
06c0: 20 74 68 72 6f 77 73 20 49 4f 45 78 63 65 70 74   throws IOExcept
06d0: 69 6f 6e 20 7b 0a 20 20 0a 20 20 20 20 4f 62 6a  ion {.  .    Obj
06e0: 65 63 74 73 2e 72 65 71 75 69 72 65 4e 6f 6e 4e  ects.requireNonN
06f0: 75 6c 6c 28 63 6f 6e 74 65 78 74 29 3b 0a 20 20  ull(context);.  
0700: 20 20 4f 62 6a 65 63 74 73 2e 72 65 71 75 69 72    Objects.requir
0710: 65 4e 6f 6e 4e 75 6c 6c 28 69 6e 73 74 61 6e 63  eNonNull(instanc
0720: 65 29 3b 0a 20 20 20 20 4f 62 6a 65 63 74 73 2e  e);.    Objects.
0730: 72 65 71 75 69 72 65 4e 6f 6e 4e 75 6c 6c 28 6f  requireNonNull(o
0740: 75 74 70 75 74 53 74 72 65 61 6d 29 3b 0a 0a 20  utputStream);.. 
0750: 20 20 20 2f 2a 20 77 72 69 74 65 20 74 68 65 20     /* write the 
0760: 70 61 63 6b 65 74 20 74 79 70 65 2e 20 2a 2f 0a  packet type. */.
0770: 20 20 20 20 63 6f 6e 74 65 78 74 2e 77 72 69 74      context.writ
0780: 65 28 49 6e 74 65 72 6c 65 64 67 65 72 50 61 63  e(InterledgerPac
0790: 6b 65 74 54 79 70 65 2e 63 6c 61 73 73 2c 20 74  ketType.class, t
07a0: 68 69 73 2e 67 65 74 54 79 70 65 49 64 28 29 2c  his.getTypeId(),
07b0: 20 6f 75 74 70 75 74 53 74 72 65 61 6d 29 3b 0a   outputStream);.
07c0: 0a 20 20 20 20 2f 2a 20 64 65 73 74 69 6e 61 74  .    /* destinat
07d0: 69 6f 6e 20 61 63 63 6f 75 6e 74 20 2a 2f 0a 20  ion account */. 
07e0: 20 20 20 63 6f 6e 74 65 78 74 2e 77 72 69 74 65     context.write
07f0: 28 49 6e 74 65 72 6c 65 64 67 65 72 41 64 64 72  (InterledgerAddr
0800: 65 73 73 2e 63 6c 61 73 73 2c 20 69 6e 73 74 61  ess.class, insta
0810: 6e 63 65 2e 67 65 74 44 65 73 74 69 6e 61 74 69  nce.getDestinati
0820: 6f 6e 41 63 63 6f 75 6e 74 28 29 2c 20 6f 75 74  onAccount(), out
0830: 70 75 74 53 74 72 65 61 6d 29 3b 0a 20 20 20 20  putStream);.    
0840: 0a 20 20 20 20 2f 2a 20 64 65 73 74 69 6e 61 74  .    /* destinat
0850: 69 6f 6e 20 68 6f 6c 64 20 64 75 72 61 74 69 6f  ion hold duratio
0860: 6e 2c 20 69 6e 20 6d 69 6c 6c 69 73 65 63 6f 6e  n, in millisecon
0870: 64 73 20 2a 2f 0a 20 20 20 20 63 6f 6e 74 65 78  ds */.    contex
0880: 74 2e 77 72 69 74 65 28 4f 65 72 55 69 6e 74 33  t.write(OerUint3
0890: 32 2e 63 6c 61 73 73 2c 20 6e 65 77 20 4f 65 72  2.class, new Oer
08a0: 55 69 6e 74 33 32 28 69 6e 73 74 61 6e 63 65 2e  Uint32(instance.
08b0: 67 65 74 44 65 73 74 69 6e 61 74 69 6f 6e 48 6f  getDestinationHo
08c0: 6c 64 44 75 72 61 74 69 6f 6e 28 29 2e 74 6f 4d  ldDuration().toM
08d0: 69 6c 6c 69 73 28 29 29 2c 0a 20 20 20 20 20 20  illis()),.      
08e0: 20 20 6f 75 74 70 75 74 53 74 72 65 61 6d 29 3b    outputStream);
08f0: 0a 20 20 7d 0a 7d 0a                             .  }.}.