github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/whisper/whisperv5/gen_newmessage_json.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:51</date> 10 //</624342688979750912> 11 12 // 13 14 package whisperv5 15 16 import ( 17 "encoding/json" 18 19 "github.com/ethereum/go-ethereum/common/hexutil" 20 ) 21 22 var _ = (*newMessageOverride)(nil) 23 24 func (n NewMessage) MarshalJSON() ([]byte, error) { 25 type NewMessage struct { 26 SymKeyID string `json:"symKeyID"` 27 PublicKey hexutil.Bytes `json:"pubKey"` 28 Sig string `json:"sig"` 29 TTL uint32 `json:"ttl"` 30 Topic TopicType `json:"topic"` 31 Payload hexutil.Bytes `json:"payload"` 32 Padding hexutil.Bytes `json:"padding"` 33 PowTime uint32 `json:"powTime"` 34 PowTarget float64 `json:"powTarget"` 35 TargetPeer string `json:"targetPeer"` 36 } 37 var enc NewMessage 38 enc.SymKeyID = n.SymKeyID 39 enc.PublicKey = n.PublicKey 40 enc.Sig = n.Sig 41 enc.TTL = n.TTL 42 enc.Topic = n.Topic 43 enc.Payload = n.Payload 44 enc.Padding = n.Padding 45 enc.PowTime = n.PowTime 46 enc.PowTarget = n.PowTarget 47 enc.TargetPeer = n.TargetPeer 48 return json.Marshal(&enc) 49 } 50 51 func (n *NewMessage) UnmarshalJSON(input []byte) error { 52 type NewMessage struct { 53 SymKeyID *string `json:"symKeyID"` 54 PublicKey *hexutil.Bytes `json:"pubKey"` 55 Sig *string `json:"sig"` 56 TTL *uint32 `json:"ttl"` 57 Topic *TopicType `json:"topic"` 58 Payload *hexutil.Bytes `json:"payload"` 59 Padding *hexutil.Bytes `json:"padding"` 60 PowTime *uint32 `json:"powTime"` 61 PowTarget *float64 `json:"powTarget"` 62 TargetPeer *string `json:"targetPeer"` 63 } 64 var dec NewMessage 65 if err := json.Unmarshal(input, &dec); err != nil { 66 return err 67 } 68 if dec.SymKeyID != nil { 69 n.SymKeyID = *dec.SymKeyID 70 } 71 if dec.PublicKey != nil { 72 n.PublicKey = *dec.PublicKey 73 } 74 if dec.Sig != nil { 75 n.Sig = *dec.Sig 76 } 77 if dec.TTL != nil { 78 n.TTL = *dec.TTL 79 } 80 if dec.Topic != nil { 81 n.Topic = *dec.Topic 82 } 83 if dec.Payload != nil { 84 n.Payload = *dec.Payload 85 } 86 if dec.Padding != nil { 87 n.Padding = *dec.Padding 88 } 89 if dec.PowTime != nil { 90 n.PowTime = *dec.PowTime 91 } 92 if dec.PowTarget != nil { 93 n.PowTarget = *dec.PowTarget 94 } 95 if dec.TargetPeer != nil { 96 n.TargetPeer = *dec.TargetPeer 97 } 98 return nil 99 } 100