-
Notifications
You must be signed in to change notification settings - Fork 16
/
coin_data.go
56 lines (44 loc) · 1.04 KB
/
coin_data.go
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
/*
____ _ _
/ __ \ | | | |
| | | |_ __ ___| | ___ __| | __ _ ___ _ __
| | | | '_ \ / _ \ |/ _ \/ _` |/ _` |/ _ \ '__|
| |__| | | | | __/ | __/ (_| | (_| | __/ |
\____/|_| |_|\___|_|\___|\__,_|\__, |\___|_|
__/ |
|___/
Copyright 2017 - 2019 OneLedger
*/
package balance
import (
"errors"
"github.com/Oneledger/protocol/serialize"
)
type CoinData struct {
Currency Currency `json:"currency"`
Amount []byte `json:"amount"`
}
func (c *Coin) NewDataInstance() serialize.Data {
return &CoinData{}
}
func (c *Coin) Data() serialize.Data {
b, _ := c.Amount.MarshalJSON()
return &CoinData{c.Currency, b}
}
func (c *Coin) SetData(a interface{}) error {
cd, ok := a.(*CoinData)
if !ok {
return errors.New("Wrong coin data")
}
amt := &Amount{}
err := amt.UnmarshalJSON(cd.Amount)
if err != nil {
return err
}
c.Currency = cd.Currency
c.Amount = amt
return nil
}
func (ad *CoinData) SerialTag() string {
return ""
}