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