leveldb_xdr.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package files
  2. import (
  3. "bytes"
  4. "io"
  5. "github.com/calmh/syncthing/xdr"
  6. )
  7. func (o fileVersion) EncodeXDR(w io.Writer) (int, error) {
  8. var xw = xdr.NewWriter(w)
  9. return o.encodeXDR(xw)
  10. }
  11. func (o fileVersion) MarshalXDR() []byte {
  12. return o.AppendXDR(make([]byte, 0, 128))
  13. }
  14. func (o fileVersion) AppendXDR(bs []byte) []byte {
  15. var aw = xdr.AppendWriter(bs)
  16. var xw = xdr.NewWriter(&aw)
  17. o.encodeXDR(xw)
  18. return []byte(aw)
  19. }
  20. func (o fileVersion) encodeXDR(xw *xdr.Writer) (int, error) {
  21. xw.WriteUint64(o.version)
  22. xw.WriteBytes(o.node)
  23. return xw.Tot(), xw.Error()
  24. }
  25. func (o *fileVersion) DecodeXDR(r io.Reader) error {
  26. xr := xdr.NewReader(r)
  27. return o.decodeXDR(xr)
  28. }
  29. func (o *fileVersion) UnmarshalXDR(bs []byte) error {
  30. var br = bytes.NewReader(bs)
  31. var xr = xdr.NewReader(br)
  32. return o.decodeXDR(xr)
  33. }
  34. func (o *fileVersion) decodeXDR(xr *xdr.Reader) error {
  35. o.version = xr.ReadUint64()
  36. o.node = xr.ReadBytes()
  37. return xr.Error()
  38. }
  39. func (o versionList) EncodeXDR(w io.Writer) (int, error) {
  40. var xw = xdr.NewWriter(w)
  41. return o.encodeXDR(xw)
  42. }
  43. func (o versionList) MarshalXDR() []byte {
  44. return o.AppendXDR(make([]byte, 0, 128))
  45. }
  46. func (o versionList) AppendXDR(bs []byte) []byte {
  47. var aw = xdr.AppendWriter(bs)
  48. var xw = xdr.NewWriter(&aw)
  49. o.encodeXDR(xw)
  50. return []byte(aw)
  51. }
  52. func (o versionList) encodeXDR(xw *xdr.Writer) (int, error) {
  53. xw.WriteUint32(uint32(len(o.versions)))
  54. for i := range o.versions {
  55. o.versions[i].encodeXDR(xw)
  56. }
  57. return xw.Tot(), xw.Error()
  58. }
  59. func (o *versionList) DecodeXDR(r io.Reader) error {
  60. xr := xdr.NewReader(r)
  61. return o.decodeXDR(xr)
  62. }
  63. func (o *versionList) UnmarshalXDR(bs []byte) error {
  64. var br = bytes.NewReader(bs)
  65. var xr = xdr.NewReader(br)
  66. return o.decodeXDR(xr)
  67. }
  68. func (o *versionList) decodeXDR(xr *xdr.Reader) error {
  69. _versionsSize := int(xr.ReadUint32())
  70. o.versions = make([]fileVersion, _versionsSize)
  71. for i := range o.versions {
  72. (&o.versions[i]).decodeXDR(xr)
  73. }
  74. return xr.Error()
  75. }