rps.go 875 Bytes
Newer Older
tavit ohanian's avatar
tavit ohanian committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
package coreindex

import (
	"encoding/json"
	"fmt"

	cid "gitlab.dms3.io/dms3/go-cid"
)

type rps struct {
	Cid *cid.Cid // reposet cid
}

type Rps interface {
	GetCid() *cid.Cid

	SetCid(v *cid.Cid)

	Equals(o Rps) bool

	Marshal() ([]byte, error)
	Unmarshal(b []byte) error
}

func NewRps() Rps {
	return &rps{
		Cid: nil,
	}
}

func (c *rps) GetCid() *cid.Cid {
	return c.Cid
}

func (c *rps) SetCid(v *cid.Cid) {
	c.Cid = v
}

func (c *rps) Equals(o Rps) bool {
	return c.Cid.Equals(*o.GetCid())
}

func (c *rps) Marshal() ([]byte, error) {

	b, err := json.Marshal(*c)
	if err != nil {
		return nil, fmt.Errorf("failed to marshal reposet properties: %v", err)
	} else {
		return b, nil
	}
}

func (c *rps) Unmarshal(b []byte) error {

	err := json.Unmarshal(b, c)
	if err != nil {
		return fmt.Errorf("failed to unmarshal reposet properties: %v", err)
	}
	return nil
}