|
@@ -113,80 +113,6 @@ func (o *Announce) DecodeXDRFrom(xr *xdr.Reader) error {
|
|
|
|
|
|
/*
|
|
|
|
|
|
-Relay Structure:
|
|
|
-
|
|
|
- 0 1 2 3
|
|
|
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|
|
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
-| Length of URL |
|
|
|
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
-/ /
|
|
|
-\ URL (variable length) \
|
|
|
-/ /
|
|
|
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
-| Latency |
|
|
|
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
-
|
|
|
-
|
|
|
-struct Relay {
|
|
|
- string URL<2083>;
|
|
|
- int Latency;
|
|
|
-}
|
|
|
-
|
|
|
-*/
|
|
|
-
|
|
|
-func (o Relay) EncodeXDR(w io.Writer) (int, error) {
|
|
|
- var xw = xdr.NewWriter(w)
|
|
|
- return o.EncodeXDRInto(xw)
|
|
|
-}
|
|
|
-
|
|
|
-func (o Relay) MarshalXDR() ([]byte, error) {
|
|
|
- return o.AppendXDR(make([]byte, 0, 128))
|
|
|
-}
|
|
|
-
|
|
|
-func (o Relay) MustMarshalXDR() []byte {
|
|
|
- bs, err := o.MarshalXDR()
|
|
|
- if err != nil {
|
|
|
- panic(err)
|
|
|
- }
|
|
|
- return bs
|
|
|
-}
|
|
|
-
|
|
|
-func (o Relay) AppendXDR(bs []byte) ([]byte, error) {
|
|
|
- var aw = xdr.AppendWriter(bs)
|
|
|
- var xw = xdr.NewWriter(&aw)
|
|
|
- _, err := o.EncodeXDRInto(xw)
|
|
|
- return []byte(aw), err
|
|
|
-}
|
|
|
-
|
|
|
-func (o Relay) EncodeXDRInto(xw *xdr.Writer) (int, error) {
|
|
|
- if l := len(o.URL); l > 2083 {
|
|
|
- return xw.Tot(), xdr.ElementSizeExceeded("URL", l, 2083)
|
|
|
- }
|
|
|
- xw.WriteString(o.URL)
|
|
|
- xw.WriteUint32(uint32(o.Latency))
|
|
|
- return xw.Tot(), xw.Error()
|
|
|
-}
|
|
|
-
|
|
|
-func (o *Relay) DecodeXDR(r io.Reader) error {
|
|
|
- xr := xdr.NewReader(r)
|
|
|
- return o.DecodeXDRFrom(xr)
|
|
|
-}
|
|
|
-
|
|
|
-func (o *Relay) UnmarshalXDR(bs []byte) error {
|
|
|
- var br = bytes.NewReader(bs)
|
|
|
- var xr = xdr.NewReader(br)
|
|
|
- return o.DecodeXDRFrom(xr)
|
|
|
-}
|
|
|
-
|
|
|
-func (o *Relay) DecodeXDRFrom(xr *xdr.Reader) error {
|
|
|
- o.URL = xr.ReadStringMax(2083)
|
|
|
- o.Latency = int32(xr.ReadUint32())
|
|
|
- return xr.Error()
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
-
|
|
|
Device Structure:
|
|
|
|
|
|
0 1 2 3
|
|
@@ -200,10 +126,8 @@ Device Structure:
|
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
| Number of Addresses |
|
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
-| Length of Addresses |
|
|
|
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
/ /
|
|
|
-\ Addresses (variable length) \
|
|
|
+\ Zero or more Address Structures \
|
|
|
/ /
|
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
| Number of Relays |
|
|
@@ -216,7 +140,7 @@ Device Structure:
|
|
|
|
|
|
struct Device {
|
|
|
opaque ID<32>;
|
|
|
- string Addresses<16>;
|
|
|
+ Address Addresses<16>;
|
|
|
Relay Relays<16>;
|
|
|
}
|
|
|
|
|
@@ -256,7 +180,10 @@ func (o Device) EncodeXDRInto(xw *xdr.Writer) (int, error) {
|
|
|
}
|
|
|
xw.WriteUint32(uint32(len(o.Addresses)))
|
|
|
for i := range o.Addresses {
|
|
|
- xw.WriteString(o.Addresses[i])
|
|
|
+ _, err := o.Addresses[i].EncodeXDRInto(xw)
|
|
|
+ if err != nil {
|
|
|
+ return xw.Tot(), err
|
|
|
+ }
|
|
|
}
|
|
|
if l := len(o.Relays); l > 16 {
|
|
|
return xw.Tot(), xdr.ElementSizeExceeded("Relays", l, 16)
|
|
@@ -291,9 +218,9 @@ func (o *Device) DecodeXDRFrom(xr *xdr.Reader) error {
|
|
|
if _AddressesSize > 16 {
|
|
|
return xdr.ElementSizeExceeded("Addresses", _AddressesSize, 16)
|
|
|
}
|
|
|
- o.Addresses = make([]string, _AddressesSize)
|
|
|
+ o.Addresses = make([]Address, _AddressesSize)
|
|
|
for i := range o.Addresses {
|
|
|
- o.Addresses[i] = xr.ReadString()
|
|
|
+ (&o.Addresses[i]).DecodeXDRFrom(xr)
|
|
|
}
|
|
|
_RelaysSize := int(xr.ReadUint32())
|
|
|
if _RelaysSize < 0 {
|
|
@@ -308,3 +235,146 @@ func (o *Device) DecodeXDRFrom(xr *xdr.Reader) error {
|
|
|
}
|
|
|
return xr.Error()
|
|
|
}
|
|
|
+
|
|
|
+/*
|
|
|
+
|
|
|
+Address Structure:
|
|
|
+
|
|
|
+ 0 1 2 3
|
|
|
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|
|
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
+| Length of URL |
|
|
|
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
+/ /
|
|
|
+\ URL (variable length) \
|
|
|
+/ /
|
|
|
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
+
|
|
|
+
|
|
|
+struct Address {
|
|
|
+ string URL<2083>;
|
|
|
+}
|
|
|
+
|
|
|
+*/
|
|
|
+
|
|
|
+func (o Address) EncodeXDR(w io.Writer) (int, error) {
|
|
|
+ var xw = xdr.NewWriter(w)
|
|
|
+ return o.EncodeXDRInto(xw)
|
|
|
+}
|
|
|
+
|
|
|
+func (o Address) MarshalXDR() ([]byte, error) {
|
|
|
+ return o.AppendXDR(make([]byte, 0, 128))
|
|
|
+}
|
|
|
+
|
|
|
+func (o Address) MustMarshalXDR() []byte {
|
|
|
+ bs, err := o.MarshalXDR()
|
|
|
+ if err != nil {
|
|
|
+ panic(err)
|
|
|
+ }
|
|
|
+ return bs
|
|
|
+}
|
|
|
+
|
|
|
+func (o Address) AppendXDR(bs []byte) ([]byte, error) {
|
|
|
+ var aw = xdr.AppendWriter(bs)
|
|
|
+ var xw = xdr.NewWriter(&aw)
|
|
|
+ _, err := o.EncodeXDRInto(xw)
|
|
|
+ return []byte(aw), err
|
|
|
+}
|
|
|
+
|
|
|
+func (o Address) EncodeXDRInto(xw *xdr.Writer) (int, error) {
|
|
|
+ if l := len(o.URL); l > 2083 {
|
|
|
+ return xw.Tot(), xdr.ElementSizeExceeded("URL", l, 2083)
|
|
|
+ }
|
|
|
+ xw.WriteString(o.URL)
|
|
|
+ return xw.Tot(), xw.Error()
|
|
|
+}
|
|
|
+
|
|
|
+func (o *Address) DecodeXDR(r io.Reader) error {
|
|
|
+ xr := xdr.NewReader(r)
|
|
|
+ return o.DecodeXDRFrom(xr)
|
|
|
+}
|
|
|
+
|
|
|
+func (o *Address) UnmarshalXDR(bs []byte) error {
|
|
|
+ var br = bytes.NewReader(bs)
|
|
|
+ var xr = xdr.NewReader(br)
|
|
|
+ return o.DecodeXDRFrom(xr)
|
|
|
+}
|
|
|
+
|
|
|
+func (o *Address) DecodeXDRFrom(xr *xdr.Reader) error {
|
|
|
+ o.URL = xr.ReadStringMax(2083)
|
|
|
+ return xr.Error()
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+
|
|
|
+Relay Structure:
|
|
|
+
|
|
|
+ 0 1 2 3
|
|
|
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
|
|
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
+| Length of URL |
|
|
|
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
+/ /
|
|
|
+\ URL (variable length) \
|
|
|
+/ /
|
|
|
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
+| Latency |
|
|
|
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
+
|
|
|
+
|
|
|
+struct Relay {
|
|
|
+ string URL<2083>;
|
|
|
+ int Latency;
|
|
|
+}
|
|
|
+
|
|
|
+*/
|
|
|
+
|
|
|
+func (o Relay) EncodeXDR(w io.Writer) (int, error) {
|
|
|
+ var xw = xdr.NewWriter(w)
|
|
|
+ return o.EncodeXDRInto(xw)
|
|
|
+}
|
|
|
+
|
|
|
+func (o Relay) MarshalXDR() ([]byte, error) {
|
|
|
+ return o.AppendXDR(make([]byte, 0, 128))
|
|
|
+}
|
|
|
+
|
|
|
+func (o Relay) MustMarshalXDR() []byte {
|
|
|
+ bs, err := o.MarshalXDR()
|
|
|
+ if err != nil {
|
|
|
+ panic(err)
|
|
|
+ }
|
|
|
+ return bs
|
|
|
+}
|
|
|
+
|
|
|
+func (o Relay) AppendXDR(bs []byte) ([]byte, error) {
|
|
|
+ var aw = xdr.AppendWriter(bs)
|
|
|
+ var xw = xdr.NewWriter(&aw)
|
|
|
+ _, err := o.EncodeXDRInto(xw)
|
|
|
+ return []byte(aw), err
|
|
|
+}
|
|
|
+
|
|
|
+func (o Relay) EncodeXDRInto(xw *xdr.Writer) (int, error) {
|
|
|
+ if l := len(o.URL); l > 2083 {
|
|
|
+ return xw.Tot(), xdr.ElementSizeExceeded("URL", l, 2083)
|
|
|
+ }
|
|
|
+ xw.WriteString(o.URL)
|
|
|
+ xw.WriteUint32(uint32(o.Latency))
|
|
|
+ return xw.Tot(), xw.Error()
|
|
|
+}
|
|
|
+
|
|
|
+func (o *Relay) DecodeXDR(r io.Reader) error {
|
|
|
+ xr := xdr.NewReader(r)
|
|
|
+ return o.DecodeXDRFrom(xr)
|
|
|
+}
|
|
|
+
|
|
|
+func (o *Relay) UnmarshalXDR(bs []byte) error {
|
|
|
+ var br = bytes.NewReader(bs)
|
|
|
+ var xr = xdr.NewReader(br)
|
|
|
+ return o.DecodeXDRFrom(xr)
|
|
|
+}
|
|
|
+
|
|
|
+func (o *Relay) DecodeXDRFrom(xr *xdr.Reader) error {
|
|
|
+ o.URL = xr.ReadStringMax(2083)
|
|
|
+ o.Latency = int32(xr.ReadUint32())
|
|
|
+ return xr.Error()
|
|
|
+}
|