Catchup to python-herald schema. Plus lots of refactoring. #49
2 changed files with 494 additions and 489 deletions
|
@ -59,489 +59,8 @@ func (kv *BlockTxsValue) Unpack(buf []byte, order binary.ByteOrder) ([]byte, err
|
||||||
return buf[offset:], nil
|
return buf[offset:], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Metadata associated with each prefix/table
|
|
||||||
|
|
||||||
type tableMeta struct {
|
|
||||||
newKey func() interface{}
|
|
||||||
newValue func() interface{}
|
|
||||||
newKeyUnpack func([]byte) interface{}
|
|
||||||
newValueUnpack func([]byte) interface{}
|
|
||||||
API *SerializationAPI
|
|
||||||
}
|
|
||||||
|
|
||||||
var tableRegistry = map[byte]tableMeta{
|
|
||||||
ClaimToSupport: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &ClaimToSupportKey{Prefix: []byte{ClaimToSupport}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &ClaimToSupportValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return ClaimToSupportKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return ClaimToSupportValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
SupportToClaim: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &SupportToClaimKey{Prefix: []byte{SupportToClaim}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &SupportToClaimValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return SupportToClaimKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return SupportToClaimValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
ClaimToTXO: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &ClaimToTXOKey{Prefix: []byte{ClaimToTXO}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &ClaimToTXOValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return ClaimToTXOKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return ClaimToTXOValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
TXOToClaim: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &TXOToClaimKey{Prefix: []byte{TXOToClaim}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &TXOToClaimValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return TXOToClaimKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return TXOToClaimValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
ClaimToChannel: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &ClaimToChannelKey{Prefix: []byte{ClaimToChannel}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &ClaimToChannelValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return ClaimToChannelKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return ClaimToChannelValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
ChannelToClaim: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &ChannelToClaimKey{Prefix: []byte{ChannelToClaim}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &ChannelToClaimValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return ChannelToClaimKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return ChannelToClaimValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
ClaimShortIdPrefix: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &ClaimShortIDKey{Prefix: []byte{ClaimShortIdPrefix}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &ClaimShortIDValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return ClaimShortIDKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return ClaimShortIDValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
EffectiveAmount: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &EffectiveAmountKey{Prefix: []byte{EffectiveAmount}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &EffectiveAmountValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return EffectiveAmountKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return EffectiveAmountValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
ClaimExpiration: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &ClaimExpirationKey{Prefix: []byte{ClaimExpiration}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &ClaimExpirationValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return ClaimExpirationKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return ClaimExpirationValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
ClaimTakeover: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &ClaimTakeoverKey{Prefix: []byte{ClaimTakeover}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &ClaimTakeoverValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return ClaimTakeoverKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return ClaimTakeoverValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
PendingActivation: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &PendingActivationKey{Prefix: []byte{PendingActivation}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &PendingActivationValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return PendingActivationKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return PendingActivationValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
ActivatedClaimAndSupport: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &ActivationKey{Prefix: []byte{ActivatedClaimAndSupport}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &ActivationValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return ActivationKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return ActivationValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
ActiveAmount: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &ActiveAmountKey{Prefix: []byte{ActiveAmount}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &ActiveAmountValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return ActiveAmountKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return ActiveAmountValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
Repost: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &RepostKey{Prefix: []byte{Repost}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &RepostValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return RepostKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return RepostValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
RepostedClaim: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &RepostedKey{Prefix: []byte{RepostedClaim}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &RepostedValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return RepostedKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return RepostedValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
Undo: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &UndoKey{Prefix: []byte{Undo}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &UndoValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return UndoKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return UndoValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
ClaimDiff: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &TouchedOrDeletedClaimKey{Prefix: []byte{ClaimDiff}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &TouchedOrDeletedClaimValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return TouchedOrDeletedClaimKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return TouchedOrDeletedClaimValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
Tx: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &TxKey{Prefix: []byte{Tx}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &TxValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return TxKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return TxValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
BlockHash: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &BlockHashKey{Prefix: []byte{BlockHash}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &BlockHashValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return BlockHashKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return BlockHashValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Header: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &BlockHeaderKey{Prefix: []byte{Header}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &BlockHeaderValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return BlockHeaderKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return BlockHeaderValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
TxNum: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &TxNumKey{Prefix: []byte{TxNum}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &TxNumValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return TxNumKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return TxNumValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
TxCount: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &TxCountKey{Prefix: []byte{TxCount}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &TxCountValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return TxCountKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return TxCountValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
TxHash: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &TxHashKey{Prefix: []byte{TxHash}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &TxHashValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return TxHashKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return TxHashValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
UTXO: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &UTXOKey{Prefix: []byte{UTXO}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &UTXOValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return UTXOKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return UTXOValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
HashXUTXO: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &HashXUTXOKey{Prefix: []byte{HashXUTXO}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &HashXUTXOValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return HashXUTXOKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return HashXUTXOValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
HashXHistory: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &HashXHistoryKey{Prefix: []byte{HashXHistory}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &HashXHistoryValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return HashXHistoryKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return HashXHistoryValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
DBState: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &DBStateKey{Prefix: []byte{DBState}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &DBStateValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return DBStateKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return DBStateValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
ChannelCount: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &ChannelCountKey{Prefix: []byte{ChannelCount}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &ChannelCountValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return ChannelCountKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return ChannelCountValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
SupportAmount: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &SupportAmountKey{Prefix: []byte{SupportAmount}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &SupportAmountValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return SupportAmountKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return SupportAmountValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
BlockTXs: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &BlockTxsKey{Prefix: []byte{BlockTXs}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &BlockTxsValue{}
|
|
||||||
},
|
|
||||||
newKeyUnpack: func(buf []byte) interface{} {
|
|
||||||
return BlockTxsKeyUnpack(buf)
|
|
||||||
},
|
|
||||||
newValueUnpack: func(buf []byte) interface{} {
|
|
||||||
return BlockTxsValueUnpack(buf)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
TrendingNotifications: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &TrendingNotificationKey{Prefix: []byte{TrendingNotifications}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &TrendingNotificationValue{}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
MempoolTx: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &MempoolTxKey{Prefix: []byte{MempoolTx}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &MempoolTxValue{}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
TouchedHashX: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &TouchedHashXKey{Prefix: []byte{TouchedHashX}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &TouchedHashXValue{}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
HashXStatus: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &HashXStatusKey{Prefix: []byte{HashXStatus}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &HashXStatusValue{}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
HashXMempoolStatus: {
|
|
||||||
newKey: func() interface{} {
|
|
||||||
return &HashXMempoolStatusKey{Prefix: []byte{HashXMempoolStatus}}
|
|
||||||
},
|
|
||||||
newValue: func() interface{} {
|
|
||||||
return &HashXMempoolStatusValue{}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
func genericNew(prefix []byte, key bool) (interface{}, error) {
|
func genericNew(prefix []byte, key bool) (interface{}, error) {
|
||||||
t, ok := tableRegistry[prefix[0]]
|
t, ok := prefixRegistry[prefix[0]]
|
||||||
if !ok {
|
if !ok {
|
||||||
panic(fmt.Sprintf("not handled: prefix=%v", prefix))
|
panic(fmt.Sprintf("not handled: prefix=%v", prefix))
|
||||||
}
|
}
|
||||||
|
@ -607,7 +126,7 @@ func GenericUnpack(pfx []byte, key bool, buf []byte) (interface{}, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSerializationAPI(prefix []byte) *SerializationAPI {
|
func GetSerializationAPI(prefix []byte) *SerializationAPI {
|
||||||
t, ok := tableRegistry[prefix[0]]
|
t, ok := prefixRegistry[prefix[0]]
|
||||||
if !ok {
|
if !ok {
|
||||||
panic(fmt.Sprintf("not handled: prefix=%v", prefix))
|
panic(fmt.Sprintf("not handled: prefix=%v", prefix))
|
||||||
}
|
}
|
||||||
|
|
|
@ -3468,14 +3468,16 @@ func UnpackGenericKey(key []byte) (BaseKey, error) {
|
||||||
}
|
}
|
||||||
// Look up the prefix metadata, and use the registered function(s)
|
// Look up the prefix metadata, and use the registered function(s)
|
||||||
// to create and unpack key of appropriate type.
|
// to create and unpack key of appropriate type.
|
||||||
t, ok := tableRegistry[key[0]]
|
t, ok := prefixRegistry[key[0]]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("unpack key function for %v not implemented", key[0])
|
return nil, fmt.Errorf("unpack key function for %v not implemented", key[0])
|
||||||
}
|
}
|
||||||
if t.newKeyUnpack != nil {
|
if t.newKeyUnpack != nil {
|
||||||
|
// Type provides <Type>KeyUnpack() function.
|
||||||
return t.newKeyUnpack(key).(BaseKey), nil
|
return t.newKeyUnpack(key).(BaseKey), nil
|
||||||
}
|
}
|
||||||
if t.newKey != nil {
|
if t.newKey != nil {
|
||||||
|
// Type provides a new<Type> function.
|
||||||
k := t.newKey()
|
k := t.newKey()
|
||||||
unpacker, ok := k.(KeyUnpacker)
|
unpacker, ok := k.(KeyUnpacker)
|
||||||
if ok {
|
if ok {
|
||||||
|
@ -3486,7 +3488,7 @@ func UnpackGenericKey(key []byte) (BaseKey, error) {
|
||||||
return nil, fmt.Errorf("unpack key function for %v not implemented", key[0])
|
return nil, fmt.Errorf("unpack key function for %v not implemented", key[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
func UnpackGenericValue(key []byte, value []byte) (BaseValue, error) {
|
func UnpackGenericValue(key, value []byte) (BaseValue, error) {
|
||||||
if len(key) == 0 {
|
if len(key) == 0 {
|
||||||
return nil, fmt.Errorf("key length zero")
|
return nil, fmt.Errorf("key length zero")
|
||||||
}
|
}
|
||||||
|
@ -3495,14 +3497,16 @@ func UnpackGenericValue(key []byte, value []byte) (BaseValue, error) {
|
||||||
}
|
}
|
||||||
// Look up the prefix metadata, and use the registered function(s)
|
// Look up the prefix metadata, and use the registered function(s)
|
||||||
// to create and unpack value of appropriate type.
|
// to create and unpack value of appropriate type.
|
||||||
t, ok := tableRegistry[key[0]]
|
t, ok := prefixRegistry[key[0]]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("unpack value function for %v not implemented", key[0])
|
return nil, fmt.Errorf("unpack value function for %v not implemented", key[0])
|
||||||
}
|
}
|
||||||
if t.newValueUnpack != nil {
|
if t.newValueUnpack != nil {
|
||||||
|
// Type provides <Type>ValueUnpack() function.
|
||||||
return t.newValueUnpack(value).(BaseValue), nil
|
return t.newValueUnpack(value).(BaseValue), nil
|
||||||
}
|
}
|
||||||
if t.newValue != nil {
|
if t.newValue != nil {
|
||||||
|
// Type provides a new<Type> function.
|
||||||
k := t.newValue()
|
k := t.newValue()
|
||||||
unpacker, ok := k.(ValueUnpacker)
|
unpacker, ok := k.(ValueUnpacker)
|
||||||
if ok {
|
if ok {
|
||||||
|
@ -3515,21 +3519,503 @@ func UnpackGenericValue(key []byte, value []byte) (BaseValue, error) {
|
||||||
|
|
||||||
func PackPartialGenericKey(key BaseKey, fields int) ([]byte, error) {
|
func PackPartialGenericKey(key BaseKey, fields int) ([]byte, error) {
|
||||||
if key == nil {
|
if key == nil {
|
||||||
return nil, fmt.Errorf("key length zero")
|
return nil, fmt.Errorf("key is nil")
|
||||||
}
|
}
|
||||||
return key.PartialPack(fields), nil
|
return key.PartialPack(fields), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func PackGenericKey(key BaseKey) ([]byte, error) {
|
func PackGenericKey(key BaseKey) ([]byte, error) {
|
||||||
if key == nil {
|
if key == nil {
|
||||||
return nil, fmt.Errorf("key length zero")
|
return nil, fmt.Errorf("key is nil")
|
||||||
}
|
}
|
||||||
return key.PackKey(), nil
|
return key.PackKey(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func PackGenericValue(value BaseValue) ([]byte, error) {
|
func PackGenericValue(value BaseValue) ([]byte, error) {
|
||||||
if value == nil {
|
if value == nil {
|
||||||
return nil, fmt.Errorf("value length zero")
|
return nil, fmt.Errorf("value is nil")
|
||||||
}
|
}
|
||||||
return value.PackValue(), nil
|
return value.PackValue(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Metadata associated with each prefix/table. Currently used to
|
||||||
|
// implement generic unpacking.
|
||||||
|
|
||||||
|
type prefixMeta struct {
|
||||||
|
newKey func() interface{}
|
||||||
|
newValue func() interface{}
|
||||||
|
newKeyUnpack func([]byte) interface{}
|
||||||
|
newValueUnpack func([]byte) interface{}
|
||||||
|
API *SerializationAPI
|
||||||
|
}
|
||||||
|
|
||||||
|
var prefixRegistry = map[byte]prefixMeta{
|
||||||
|
ClaimToSupport: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &ClaimToSupportKey{Prefix: []byte{ClaimToSupport}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &ClaimToSupportValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return ClaimToSupportKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return ClaimToSupportValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
SupportToClaim: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &SupportToClaimKey{Prefix: []byte{SupportToClaim}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &SupportToClaimValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return SupportToClaimKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return SupportToClaimValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
ClaimToTXO: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &ClaimToTXOKey{Prefix: []byte{ClaimToTXO}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &ClaimToTXOValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return ClaimToTXOKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return ClaimToTXOValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
TXOToClaim: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &TXOToClaimKey{Prefix: []byte{TXOToClaim}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &TXOToClaimValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return TXOToClaimKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return TXOToClaimValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
ClaimToChannel: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &ClaimToChannelKey{Prefix: []byte{ClaimToChannel}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &ClaimToChannelValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return ClaimToChannelKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return ClaimToChannelValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ChannelToClaim: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &ChannelToClaimKey{Prefix: []byte{ChannelToClaim}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &ChannelToClaimValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return ChannelToClaimKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return ChannelToClaimValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
ClaimShortIdPrefix: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &ClaimShortIDKey{Prefix: []byte{ClaimShortIdPrefix}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &ClaimShortIDValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return ClaimShortIDKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return ClaimShortIDValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
EffectiveAmount: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &EffectiveAmountKey{Prefix: []byte{EffectiveAmount}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &EffectiveAmountValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return EffectiveAmountKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return EffectiveAmountValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ClaimExpiration: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &ClaimExpirationKey{Prefix: []byte{ClaimExpiration}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &ClaimExpirationValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return ClaimExpirationKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return ClaimExpirationValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
ClaimTakeover: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &ClaimTakeoverKey{Prefix: []byte{ClaimTakeover}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &ClaimTakeoverValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return ClaimTakeoverKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return ClaimTakeoverValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
PendingActivation: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &PendingActivationKey{Prefix: []byte{PendingActivation}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &PendingActivationValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return PendingActivationKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return PendingActivationValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ActivatedClaimAndSupport: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &ActivationKey{Prefix: []byte{ActivatedClaimAndSupport}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &ActivationValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return ActivationKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return ActivationValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ActiveAmount: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &ActiveAmountKey{Prefix: []byte{ActiveAmount}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &ActiveAmountValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return ActiveAmountKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return ActiveAmountValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
Repost: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &RepostKey{Prefix: []byte{Repost}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &RepostValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return RepostKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return RepostValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
RepostedClaim: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &RepostedKey{Prefix: []byte{RepostedClaim}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &RepostedValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return RepostedKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return RepostedValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
Undo: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &UndoKey{Prefix: []byte{Undo}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &UndoValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return UndoKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return UndoValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ClaimDiff: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &TouchedOrDeletedClaimKey{Prefix: []byte{ClaimDiff}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &TouchedOrDeletedClaimValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return TouchedOrDeletedClaimKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return TouchedOrDeletedClaimValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
Tx: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &TxKey{Prefix: []byte{Tx}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &TxValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return TxKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return TxValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
BlockHash: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &BlockHashKey{Prefix: []byte{BlockHash}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &BlockHashValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return BlockHashKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return BlockHashValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Header: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &BlockHeaderKey{Prefix: []byte{Header}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &BlockHeaderValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return BlockHeaderKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return BlockHeaderValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
TxNum: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &TxNumKey{Prefix: []byte{TxNum}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &TxNumValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return TxNumKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return TxNumValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
TxCount: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &TxCountKey{Prefix: []byte{TxCount}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &TxCountValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return TxCountKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return TxCountValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
TxHash: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &TxHashKey{Prefix: []byte{TxHash}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &TxHashValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return TxHashKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return TxHashValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
UTXO: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &UTXOKey{Prefix: []byte{UTXO}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &UTXOValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return UTXOKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return UTXOValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
HashXUTXO: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &HashXUTXOKey{Prefix: []byte{HashXUTXO}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &HashXUTXOValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return HashXUTXOKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return HashXUTXOValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
HashXHistory: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &HashXHistoryKey{Prefix: []byte{HashXHistory}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &HashXHistoryValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return HashXHistoryKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return HashXHistoryValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
DBState: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &DBStateKey{Prefix: []byte{DBState}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &DBStateValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return DBStateKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return DBStateValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ChannelCount: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &ChannelCountKey{Prefix: []byte{ChannelCount}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &ChannelCountValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return ChannelCountKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return ChannelCountValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
SupportAmount: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &SupportAmountKey{Prefix: []byte{SupportAmount}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &SupportAmountValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return SupportAmountKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return SupportAmountValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
BlockTXs: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &BlockTxsKey{Prefix: []byte{BlockTXs}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &BlockTxsValue{}
|
||||||
|
},
|
||||||
|
newKeyUnpack: func(buf []byte) interface{} {
|
||||||
|
return BlockTxsKeyUnpack(buf)
|
||||||
|
},
|
||||||
|
newValueUnpack: func(buf []byte) interface{} {
|
||||||
|
return BlockTxsValueUnpack(buf)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
TrendingNotifications: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &TrendingNotificationKey{Prefix: []byte{TrendingNotifications}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &TrendingNotificationValue{}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
MempoolTx: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &MempoolTxKey{Prefix: []byte{MempoolTx}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &MempoolTxValue{}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
TouchedHashX: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &TouchedHashXKey{Prefix: []byte{TouchedHashX}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &TouchedHashXValue{}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
HashXStatus: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &HashXStatusKey{Prefix: []byte{HashXStatus}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &HashXStatusValue{}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
HashXMempoolStatus: {
|
||||||
|
newKey: func() interface{} {
|
||||||
|
return &HashXMempoolStatusKey{Prefix: []byte{HashXMempoolStatus}}
|
||||||
|
},
|
||||||
|
newValue: func() interface{} {
|
||||||
|
return &HashXMempoolStatusValue{}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue