From ae6f3f11a96720f5a70dc01261680bdc6c749fa2 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 5 May 2023 07:29:37 +0200 Subject: [PATCH] api/message/types.go: Adding Blocknum and Timestamp to ActionTrace struct --- api/message/msgpack/codec_test.go | 126 +++---- api/message/msgpack/msgpack.go | 541 ++++++++++++++++++++++++++++-- api/message/types.go | 9 +- 3 files changed, 596 insertions(+), 80 deletions(-) diff --git a/api/message/msgpack/codec_test.go b/api/message/msgpack/codec_test.go index 787c1e3..a2da221 100644 --- a/api/message/msgpack/codec_test.go +++ b/api/message/msgpack/codec_test.go @@ -4,6 +4,7 @@ import ( "encoding/hex" "encoding/json" "testing" + "time" "github.com/eosswedenorg/thalos/api/message" "github.com/shamaton/msgpack/v2" @@ -30,12 +31,14 @@ func TestMsgpack_EncodeActionTrace(t *testing.T) { assert.NoError(t, err) msg := message.ActionTrace{ - TxID: "edc06dce6320459fd644756972048da453b2816b0a434c37ddffde36778dcab3", - Name: "sellitem", - Contract: "mygame", - Receiver: "eosio", - Data: dataJson, - HexData: "d0fa1b2ab8a6fd0d1b0173df91aa9ffd277642d05780cf750", + TxID: "edc06dce6320459fd644756972048da453b2816b0a434c37ddffde36778dcab3", + BlockNum: 12345, + Timestamp: time.Unix(1699617279, int64(time.Millisecond)*500), + Name: "sellitem", + Contract: "mygame", + Receiver: "eosio", + Data: dataJson, + HexData: "d0fa1b2ab8a6fd0d1b0173df91aa9ffd277642d05780cf750", Authorization: []message.PermissionLevel{ {Actor: "mygame", Permission: "active"}, }, @@ -48,7 +51,7 @@ func TestMsgpack_EncodeActionTrace(t *testing.T) { assert.NoError(t, err) expected := []byte{ - 0x8a, 0xa5, 0x74, 0x78, 0x5f, 0x69, 0x64, 0xd9, + 0x8c, 0xa5, 0x74, 0x78, 0x5f, 0x69, 0x64, 0xd9, 0x40, 0x65, 0x64, 0x63, 0x30, 0x36, 0x64, 0x63, 0x65, 0x36, 0x33, 0x32, 0x30, 0x34, 0x35, 0x39, 0x66, 0x64, 0x36, 0x34, 0x34, 0x37, 0x35, 0x36, @@ -57,50 +60,55 @@ func TestMsgpack_EncodeActionTrace(t *testing.T) { 0x62, 0x30, 0x61, 0x34, 0x33, 0x34, 0x63, 0x33, 0x37, 0x64, 0x64, 0x66, 0x66, 0x64, 0x65, 0x33, 0x36, 0x37, 0x37, 0x38, 0x64, 0x63, 0x61, 0x62, - 0x33, 0xa4, 0x6e, 0x61, 0x6d, 0x65, 0xa8, 0x73, - 0x65, 0x6c, 0x6c, 0x69, 0x74, 0x65, 0x6d, 0xa8, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0xa6, 0x6d, 0x79, 0x67, 0x61, 0x6d, 0x65, 0xa8, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0xa5, 0x65, 0x6f, 0x73, 0x69, 0x6f, 0xa4, 0x64, - 0x61, 0x74, 0x61, 0xc4, 0x9b, 0x7b, 0x22, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3a, 0x22, - 0x31, 0x30, 0x30, 0x30, 0x2e, 0x30, 0x30, 0x30, - 0x30, 0x20, 0x53, 0x43, 0x41, 0x4d, 0x22, 0x2c, - 0x22, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0x3a, 0x22, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x31, - 0x22, 0x2c, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x22, - 0x3a, 0x7b, 0x22, 0x61, 0x67, 0x69, 0x22, 0x3a, - 0x22, 0x32, 0x30, 0x22, 0x2c, 0x22, 0x64, 0x75, - 0x72, 0x22, 0x3a, 0x22, 0x31, 0x30, 0x30, 0x22, - 0x2c, 0x22, 0x69, 0x64, 0x22, 0x3a, 0x22, 0x32, - 0x31, 0x33, 0x31, 0x32, 0x34, 0x32, 0x22, 0x2c, - 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x22, - 0x47, 0x72, 0x65, 0x61, 0x74, 0x20, 0x53, 0x77, - 0x6f, 0x72, 0x64, 0x22, 0x2c, 0x22, 0x71, 0x75, - 0x61, 0x6c, 0x22, 0x3a, 0x22, 0x65, 0x70, 0x69, - 0x63, 0x22, 0x2c, 0x22, 0x73, 0x74, 0x72, 0x22, - 0x3a, 0x22, 0x31, 0x30, 0x30, 0x22, 0x7d, 0x2c, - 0x22, 0x74, 0x6f, 0x22, 0x3a, 0x22, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0x22, 0x7d, - 0xa8, 0x68, 0x65, 0x78, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0xd9, 0x31, 0x64, 0x30, 0x66, 0x61, 0x31, - 0x62, 0x32, 0x61, 0x62, 0x38, 0x61, 0x36, 0x66, - 0x64, 0x30, 0x64, 0x31, 0x62, 0x30, 0x31, 0x37, - 0x33, 0x64, 0x66, 0x39, 0x31, 0x61, 0x61, 0x39, - 0x66, 0x66, 0x64, 0x32, 0x37, 0x37, 0x36, 0x34, - 0x32, 0x64, 0x30, 0x35, 0x37, 0x38, 0x30, 0x63, - 0x66, 0x37, 0x35, 0x30, 0xad, 0x61, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x91, 0x82, 0xa5, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0xa6, 0x6d, 0x79, 0x67, 0x61, 0x6d, - 0x65, 0xaa, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0xa6, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x65, 0xa6, 0x65, 0x78, 0x63, 0x65, - 0x70, 0x74, 0xa6, 0x65, 0x72, 0x72, 0x73, 0x74, - 0x72, 0xa5, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x02, - 0xa6, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0xc4, - 0x4, 0xde, 0xad, 0xbe, 0xef, + 0x33, 0xa8, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x6e, + 0x75, 0x6d, 0xcd, 0x30, 0x39, 0xae, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0xd7, 0xff, 0x77, 0x35, + 0x94, 0x00, 0x65, 0x4e, 0x19, 0xff, 0xa4, 0x6e, + 0x61, 0x6d, 0x65, 0xa8, 0x73, 0x65, 0x6c, 0x6c, + 0x69, 0x74, 0x65, 0x6d, 0xa8, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0xa6, 0x6d, 0x79, + 0x67, 0x61, 0x6d, 0x65, 0xa8, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0xa5, 0x65, 0x6f, + 0x73, 0x69, 0x6f, 0xa4, 0x64, 0x61, 0x74, 0x61, + 0xc4, 0x9b, 0x7b, 0x22, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x3a, 0x22, 0x31, 0x30, 0x30, + 0x30, 0x2e, 0x30, 0x30, 0x30, 0x30, 0x20, 0x53, + 0x43, 0x41, 0x4d, 0x22, 0x2c, 0x22, 0x66, 0x72, + 0x6f, 0x6d, 0x22, 0x3a, 0x22, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x22, 0x2c, 0x22, + 0x69, 0x74, 0x65, 0x6d, 0x22, 0x3a, 0x7b, 0x22, + 0x61, 0x67, 0x69, 0x22, 0x3a, 0x22, 0x32, 0x30, + 0x22, 0x2c, 0x22, 0x64, 0x75, 0x72, 0x22, 0x3a, + 0x22, 0x31, 0x30, 0x30, 0x22, 0x2c, 0x22, 0x69, + 0x64, 0x22, 0x3a, 0x22, 0x32, 0x31, 0x33, 0x31, + 0x32, 0x34, 0x32, 0x22, 0x2c, 0x22, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x3a, 0x22, 0x47, 0x72, 0x65, + 0x61, 0x74, 0x20, 0x53, 0x77, 0x6f, 0x72, 0x64, + 0x22, 0x2c, 0x22, 0x71, 0x75, 0x61, 0x6c, 0x22, + 0x3a, 0x22, 0x65, 0x70, 0x69, 0x63, 0x22, 0x2c, + 0x22, 0x73, 0x74, 0x72, 0x22, 0x3a, 0x22, 0x31, + 0x30, 0x30, 0x22, 0x7d, 0x2c, 0x22, 0x74, 0x6f, + 0x22, 0x3a, 0x22, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x32, 0x22, 0x7d, 0xa8, 0x68, 0x65, + 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0xd9, 0x31, + 0x64, 0x30, 0x66, 0x61, 0x31, 0x62, 0x32, 0x61, + 0x62, 0x38, 0x61, 0x36, 0x66, 0x64, 0x30, 0x64, + 0x31, 0x62, 0x30, 0x31, 0x37, 0x33, 0x64, 0x66, + 0x39, 0x31, 0x61, 0x61, 0x39, 0x66, 0x66, 0x64, + 0x32, 0x37, 0x37, 0x36, 0x34, 0x32, 0x64, 0x30, + 0x35, 0x37, 0x38, 0x30, 0x63, 0x66, 0x37, 0x35, + 0x30, 0xad, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x91, + 0x82, 0xa5, 0x61, 0x63, 0x74, 0x6f, 0x72, 0xa6, + 0x6d, 0x79, 0x67, 0x61, 0x6d, 0x65, 0xaa, 0x70, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0xa6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, + 0xa6, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0xa6, + 0x65, 0x72, 0x72, 0x73, 0x74, 0x72, 0xa5, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x02, 0xa6, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0xc4, 0x04, 0xde, 0xad, + 0xbe, 0xef, } assert.Equal(t, expected, data) @@ -109,7 +117,7 @@ func TestMsgpack_EncodeActionTrace(t *testing.T) { func TestMsgpack_Decode(t *testing.T) { RegisterGeneratedResolver() - data := []byte("\x8a\xa5tx_id\xd9@edc06dce6320459fd644756972048da453b2816b0a434c37ddffde36778dcab3\xa4name\xa4drop\xa8contract\xa6mygame\xa8receiver\xa8account1\xa4dataċ{\"dropped_from_id\":674562,\"item\":{\"dur\":145,\"id\":49623,\"name\":\"Shadowmourne\",\"qual\":\"legendary\",\"sta\":198,\"str\":223},\"receiver\":\"account1\"}\xa8hex_data\xda\x01\x167b2264726f707065645f66726f6d5f6964223a3637343536322c226974656d223a7b22647572223a3134352c226964223a34393632332c226e616d65223a22536861646f776d6f75726e65222c227175616c223a226c6567656e64617279222c22737461223a3139382c22737472223a3232337d2c227265636569766572223a226163636f756e7431227d\xadauthorization\x91\x82\xa5actor\xa6mygame\xaapermission\xa6active\xa6except\xa6errstr\xa5error\x02\xa6return\xc4\x04ޭ\xbe\xef") + data := []byte("\x8c\xa5tx_id\xd9@edc06dce6320459fd644756972048da453b2816b0a434c37ddffde36778dcab3\xa8blocknum\xce\x00\x85F7\xaeblocktimestamp\xd6\xffH\xf1U\x1f\xa4name\xa4drop\xa8contract\xa6mygame\xa8receiver\xa8account1\xa4dataċ{\"dropped_from_id\":674562,\"item\":{\"dur\":145,\"id\":49623,\"name\":\"Shadowmourne\",\"qual\":\"legendary\",\"sta\":198,\"str\":223},\"receiver\":\"account1\"}\xa8hex_data\xda\x01\x167b2264726f707065645f66726f6d5f6964223a3637343536322c226974656d223a7b22647572223a3134352c226964223a34393632332c226e616d65223a22536861646f776d6f75726e65222c227175616c223a226c6567656e64617279222c22737461223a3139382c22737472223a3232337d2c227265636569766572223a226163636f756e7431227d\xadauthorization\x91\x82\xa5actor\xa6mygame\xaapermission\xa6active\xa6except\xa6errstr\xa5error\x02\xa6return\xc4\x04ޭ\xbe\xef") dataJson, err := json.Marshal(map[string]interface{}{ "item": map[string]interface{}{ @@ -127,12 +135,14 @@ func TestMsgpack_Decode(t *testing.T) { assert.NoError(t, err) expected := message.ActionTrace{ - TxID: "edc06dce6320459fd644756972048da453b2816b0a434c37ddffde36778dcab3", - Name: "drop", - Contract: "mygame", - Receiver: "account1", - Data: dataJson, - HexData: hex.EncodeToString(dataJson), + TxID: "edc06dce6320459fd644756972048da453b2816b0a434c37ddffde36778dcab3", + BlockNum: 8734263, + Timestamp: time.Unix(1223775519, 0), + Name: "drop", + Contract: "mygame", + Receiver: "account1", + Data: dataJson, + HexData: hex.EncodeToString(dataJson), Authorization: []message.PermissionLevel{ {Actor: "mygame", Permission: "active"}, }, diff --git a/api/message/msgpack/msgpack.go b/api/message/msgpack/msgpack.go index 7c9eeec..b80248b 100644 --- a/api/message/msgpack/msgpack.go +++ b/api/message/msgpack/msgpack.go @@ -8,6 +8,7 @@ import ( msgpack "github.com/shamaton/msgpackgen/msgpack" dec "github.com/shamaton/msgpackgen/msgpack/dec" enc "github.com/shamaton/msgpackgen/msgpack/enc" + "time" ) // RegisterGeneratedResolver registers generated resolver. @@ -57,6 +58,36 @@ func ___encodeAsArray(i interface{}) ([]byte, error) { return nil, fmt.Errorf("%s size / offset different %d : %d", "github.com/eosswedenorg/thalos/api/message.HeartBeat", size, offset) } return b, err + case message.PermissionLevel: + encoder := enc.NewEncoder() + size, err := ___calcArraySizePermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v, encoder) + if err != nil { + return nil, err + } + encoder.MakeBytes(size) + b, offset, err := ___encodeArrayPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v, encoder, 0) + if err != nil { + return nil, err + } + if size != offset { + return nil, fmt.Errorf("%s size / offset different %d : %d", "github.com/eosswedenorg/thalos/api/message.PermissionLevel", size, offset) + } + return b, err + case *message.PermissionLevel: + encoder := enc.NewEncoder() + size, err := ___calcArraySizePermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(*v, encoder) + if err != nil { + return nil, err + } + encoder.MakeBytes(size) + b, offset, err := ___encodeArrayPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(*v, encoder, 0) + if err != nil { + return nil, err + } + if size != offset { + return nil, fmt.Errorf("%s size / offset different %d : %d", "github.com/eosswedenorg/thalos/api/message.PermissionLevel", size, offset) + } + return b, err case message.ActionTrace: encoder := enc.NewEncoder() size, err := ___calcArraySizeActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v, encoder) @@ -124,6 +155,36 @@ func ___encodeAsMap(i interface{}) ([]byte, error) { return nil, fmt.Errorf("%s size / offset different %d : %d", "github.com/eosswedenorg/thalos/api/message.HeartBeat", size, offset) } return b, err + case message.PermissionLevel: + encoder := enc.NewEncoder() + size, err := ___calcMapSizePermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v, encoder) + if err != nil { + return nil, err + } + encoder.MakeBytes(size) + b, offset, err := ___encodeMapPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v, encoder, 0) + if err != nil { + return nil, err + } + if size != offset { + return nil, fmt.Errorf("%s size / offset different %d : %d", "github.com/eosswedenorg/thalos/api/message.PermissionLevel", size, offset) + } + return b, err + case *message.PermissionLevel: + encoder := enc.NewEncoder() + size, err := ___calcMapSizePermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(*v, encoder) + if err != nil { + return nil, err + } + encoder.MakeBytes(size) + b, offset, err := ___encodeMapPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(*v, encoder, 0) + if err != nil { + return nil, err + } + if size != offset { + return nil, fmt.Errorf("%s size / offset different %d : %d", "github.com/eosswedenorg/thalos/api/message.PermissionLevel", size, offset) + } + return b, err case message.ActionTrace: encoder := enc.NewEncoder() size, err := ___calcMapSizeActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v, encoder) @@ -184,6 +245,20 @@ func ___decodeAsArray(data []byte, i interface{}) (bool, error) { return true, fmt.Errorf("read length is different [%d] [%d] ", offset, decoder.Len()) } return true, err + case *message.PermissionLevel: + decoder := dec.NewDecoder(data) + offset, err := ___decodeArrayPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v, decoder, 0) + if err == nil && offset != decoder.Len() { + return true, fmt.Errorf("read length is different [%d] [%d] ", offset, decoder.Len()) + } + return true, err + case **message.PermissionLevel: + decoder := dec.NewDecoder(data) + offset, err := ___decodeArrayPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(*v, decoder, 0) + if err == nil && offset != decoder.Len() { + return true, fmt.Errorf("read length is different [%d] [%d] ", offset, decoder.Len()) + } + return true, err case *message.ActionTrace: decoder := dec.NewDecoder(data) offset, err := ___decodeArrayActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v, decoder, 0) @@ -219,6 +294,20 @@ func ___decodeAsMap(data []byte, i interface{}) (bool, error) { return true, fmt.Errorf("read length is different [%d] [%d] ", offset, decoder.Len()) } return true, err + case *message.PermissionLevel: + decoder := dec.NewDecoder(data) + offset, err := ___decodeMapPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v, decoder, 0) + if err == nil && offset != decoder.Len() { + return true, fmt.Errorf("read length is different [%d] [%d] ", offset, decoder.Len()) + } + return true, err + case **message.PermissionLevel: + decoder := dec.NewDecoder(data) + offset, err := ___decodeMapPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(*v, decoder, 0) + if err == nil && offset != decoder.Len() { + return true, fmt.Errorf("read length is different [%d] [%d] ", offset, decoder.Len()) + } + return true, err case *message.ActionTrace: decoder := dec.NewDecoder(data) offset, err := ___decodeMapActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v, decoder, 0) @@ -388,11 +477,139 @@ func ___decodeMapHeartBeat_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d return offset, err } +// calculate size from github.com/eosswedenorg/thalos/api/message.PermissionLevel +func ___calcArraySizePermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v message.PermissionLevel, encoder *enc.Encoder) (int, error) { + size := 0 + size += encoder.CalcStructHeaderFix(2) + size += encoder.CalcString(v.Actor) + size += encoder.CalcString(v.Permission) + return size, nil +} + +// calculate size from github.com/eosswedenorg/thalos/api/message.PermissionLevel +func ___calcMapSizePermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v message.PermissionLevel, encoder *enc.Encoder) (int, error) { + size := 0 + size += encoder.CalcStructHeaderFix(2) + size += encoder.CalcStringFix(5) + size += encoder.CalcString(v.Actor) + size += encoder.CalcStringFix(10) + size += encoder.CalcString(v.Permission) + return size, nil +} + +// encode from github.com/eosswedenorg/thalos/api/message.PermissionLevel +func ___encodeArrayPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v message.PermissionLevel, encoder *enc.Encoder, offset int) ([]byte, int, error) { + var err error + offset = encoder.WriteStructHeaderFixAsArray(2, offset) + offset = encoder.WriteString(v.Actor, offset) + offset = encoder.WriteString(v.Permission, offset) + return encoder.EncodedBytes(), offset, err +} + +// encode from github.com/eosswedenorg/thalos/api/message.PermissionLevel +func ___encodeMapPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v message.PermissionLevel, encoder *enc.Encoder, offset int) ([]byte, int, error) { + var err error + offset = encoder.WriteStructHeaderFixAsMap(2, offset) + offset = encoder.WriteStringFix("actor", 5, offset) + offset = encoder.WriteString(v.Actor, offset) + offset = encoder.WriteStringFix("permission", 10, offset) + offset = encoder.WriteString(v.Permission, offset) + return encoder.EncodedBytes(), offset, err +} + +// decode to github.com/eosswedenorg/thalos/api/message.PermissionLevel +func ___decodeArrayPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v *message.PermissionLevel, decoder *dec.Decoder, offset int) (int, error) { + offset, err := decoder.CheckStructHeader(2, offset) + if err != nil { + return 0, err + } + { + var vv string + vv, offset, err = decoder.AsString(offset) + if err != nil { + return 0, err + } + v.Actor = vv + } + { + var vv string + vv, offset, err = decoder.AsString(offset) + if err != nil { + return 0, err + } + v.Permission = vv + } + return offset, err +} + +// decode to github.com/eosswedenorg/thalos/api/message.PermissionLevel +func ___decodeMapPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v *message.PermissionLevel, decoder *dec.Decoder, offset int) (int, error) { + keys := [][]byte{ + {uint8(0x61), uint8(0x63), uint8(0x74), uint8(0x6f), uint8(0x72)}, // actor + {uint8(0x70), uint8(0x65), uint8(0x72), uint8(0x6d), uint8(0x69), uint8(0x73), uint8(0x73), uint8(0x69), uint8(0x6f), uint8(0x6e)}, // permission + } + offset, err := decoder.CheckStructHeader(2, offset) + if err != nil { + return 0, err + } + count := 0 + for count < 2 { + var dataKey []byte + dataKey, offset, err = decoder.AsStringBytes(offset) + if err != nil { + return 0, err + } + fieldIndex := -1 + for i, key := range keys { + if len(dataKey) != len(key) { + continue + } + fieldIndex = i + for dataKeyIndex := range dataKey { + if dataKey[dataKeyIndex] != key[dataKeyIndex] { + fieldIndex = -1 + break + } + } + if fieldIndex >= 0 { + break + } + } + switch fieldIndex { + case 0: + { + var vv string + vv, offset, err = decoder.AsString(offset) + if err != nil { + return 0, err + } + v.Actor = vv + } + count++ + case 1: + { + var vv string + vv, offset, err = decoder.AsString(offset) + if err != nil { + return 0, err + } + v.Permission = vv + } + count++ + default: + return 0, fmt.Errorf("unknown key[%s] found", string(dataKey)) + } + } + return offset, err +} + // calculate size from github.com/eosswedenorg/thalos/api/message.ActionTrace func ___calcArraySizeActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v message.ActionTrace, encoder *enc.Encoder) (int, error) { size := 0 - size += encoder.CalcStructHeaderFix(6) + size += encoder.CalcStructHeaderFix(12) size += encoder.CalcString(v.TxID) + size += encoder.CalcUint32(v.BlockNum) + size += encoder.CalcTime(v.Timestamp) size += encoder.CalcString(v.Name) size += encoder.CalcString(v.Contract) size += encoder.CalcString(v.Receiver) @@ -409,15 +626,49 @@ func ___calcArraySizeActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988b size += encoder.CalcNil() } size += encoder.CalcString(v.HexData) + if v.Authorization != nil { + s, err := encoder.CalcSliceLength(len(v.Authorization), false) + if err != nil { + return 0, err + } + size += s + for _, vv := range v.Authorization { + size_vv, err := ___calcArraySizePermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(vv, encoder) + if err != nil { + return 0, err + } + size += size_vv + } + } else { + size += encoder.CalcNil() + } + size += encoder.CalcString(v.Except) + size += encoder.CalcUint64(v.Error) + if v.Return != nil { + s, err := encoder.CalcSliceLength(len(v.Return), true) + if err != nil { + return 0, err + } + size += s + for _, vv := range v.Return { + size += encoder.CalcByte(vv) + } + } else { + size += encoder.CalcNil() + } return size, nil } // calculate size from github.com/eosswedenorg/thalos/api/message.ActionTrace func ___calcMapSizeActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v message.ActionTrace, encoder *enc.Encoder) (int, error) { size := 0 - size += encoder.CalcStructHeaderFix(6) + size += encoder.CalcStructHeaderFix(12) size += encoder.CalcStringFix(5) size += encoder.CalcString(v.TxID) + size += encoder.CalcStringFix(8) + size += encoder.CalcUint32(v.BlockNum) + size += encoder.CalcStringFix(14) + size += encoder.CalcTime(v.Timestamp) size += encoder.CalcStringFix(4) size += encoder.CalcString(v.Name) size += encoder.CalcStringFix(8) @@ -439,14 +690,50 @@ func ___calcMapSizeActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc6 } size += encoder.CalcStringFix(8) size += encoder.CalcString(v.HexData) + size += encoder.CalcStringFix(13) + if v.Authorization != nil { + s, err := encoder.CalcSliceLength(len(v.Authorization), false) + if err != nil { + return 0, err + } + size += s + for _, vv := range v.Authorization { + size_vv, err := ___calcMapSizePermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(vv, encoder) + if err != nil { + return 0, err + } + size += size_vv + } + } else { + size += encoder.CalcNil() + } + size += encoder.CalcStringFix(6) + size += encoder.CalcString(v.Except) + size += encoder.CalcStringFix(5) + size += encoder.CalcUint64(v.Error) + size += encoder.CalcStringFix(6) + if v.Return != nil { + s, err := encoder.CalcSliceLength(len(v.Return), true) + if err != nil { + return 0, err + } + size += s + for _, vv := range v.Return { + size += encoder.CalcByte(vv) + } + } else { + size += encoder.CalcNil() + } return size, nil } // encode from github.com/eosswedenorg/thalos/api/message.ActionTrace func ___encodeArrayActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v message.ActionTrace, encoder *enc.Encoder, offset int) ([]byte, int, error) { var err error - offset = encoder.WriteStructHeaderFixAsArray(6, offset) + offset = encoder.WriteStructHeaderFixAsArray(12, offset) offset = encoder.WriteString(v.TxID, offset) + offset = encoder.WriteUint32(v.BlockNum, offset) + offset = encoder.WriteTime(v.Timestamp, offset) offset = encoder.WriteString(v.Name, offset) offset = encoder.WriteString(v.Contract, offset) offset = encoder.WriteString(v.Receiver, offset) @@ -459,15 +746,40 @@ func ___encodeArrayActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc6 offset = encoder.WriteNil(offset) } offset = encoder.WriteString(v.HexData, offset) + if v.Authorization != nil { + offset = encoder.WriteSliceLength(len(v.Authorization), offset, false) + for _, vv := range v.Authorization { + _, offset, err = ___encodeArrayPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(vv, encoder, offset) + if err != nil { + return nil, 0, err + } + } + } else { + offset = encoder.WriteNil(offset) + } + offset = encoder.WriteString(v.Except, offset) + offset = encoder.WriteUint64(v.Error, offset) + if v.Return != nil { + offset = encoder.WriteSliceLength(len(v.Return), offset, true) + for _, vv := range v.Return { + offset = encoder.WriteByte(vv, offset) + } + } else { + offset = encoder.WriteNil(offset) + } return encoder.EncodedBytes(), offset, err } // encode from github.com/eosswedenorg/thalos/api/message.ActionTrace func ___encodeMapActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v message.ActionTrace, encoder *enc.Encoder, offset int) ([]byte, int, error) { var err error - offset = encoder.WriteStructHeaderFixAsMap(6, offset) + offset = encoder.WriteStructHeaderFixAsMap(12, offset) offset = encoder.WriteStringFix("tx_id", 5, offset) offset = encoder.WriteString(v.TxID, offset) + offset = encoder.WriteStringFix("blocknum", 8, offset) + offset = encoder.WriteUint32(v.BlockNum, offset) + offset = encoder.WriteStringFix("blocktimestamp", 14, offset) + offset = encoder.WriteTime(v.Timestamp, offset) offset = encoder.WriteStringFix("name", 4, offset) offset = encoder.WriteString(v.Name, offset) offset = encoder.WriteStringFix("contract", 8, offset) @@ -485,12 +797,37 @@ func ___encodeMapActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f } offset = encoder.WriteStringFix("hex_data", 8, offset) offset = encoder.WriteString(v.HexData, offset) + offset = encoder.WriteStringFix("authorization", 13, offset) + if v.Authorization != nil { + offset = encoder.WriteSliceLength(len(v.Authorization), offset, false) + for _, vv := range v.Authorization { + _, offset, err = ___encodeMapPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(vv, encoder, offset) + if err != nil { + return nil, 0, err + } + } + } else { + offset = encoder.WriteNil(offset) + } + offset = encoder.WriteStringFix("except", 6, offset) + offset = encoder.WriteString(v.Except, offset) + offset = encoder.WriteStringFix("error", 5, offset) + offset = encoder.WriteUint64(v.Error, offset) + offset = encoder.WriteStringFix("return", 6, offset) + if v.Return != nil { + offset = encoder.WriteSliceLength(len(v.Return), offset, true) + for _, vv := range v.Return { + offset = encoder.WriteByte(vv, offset) + } + } else { + offset = encoder.WriteNil(offset) + } return encoder.EncodedBytes(), offset, err } // decode to github.com/eosswedenorg/thalos/api/message.ActionTrace func ___decodeArrayActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v *message.ActionTrace, decoder *dec.Decoder, offset int) (int, error) { - offset, err := decoder.CheckStructHeader(6, offset) + offset, err := decoder.CheckStructHeader(12, offset) if err != nil { return 0, err } @@ -502,6 +839,22 @@ func ___decodeArrayActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc6 } v.TxID = vv } + { + var vv uint32 + vv, offset, err = decoder.AsUint32(offset) + if err != nil { + return 0, err + } + v.BlockNum = vv + } + { + var vv time.Time + vv, offset, err = decoder.AsDateTime(offset) + if err != nil { + return 0, err + } + v.Timestamp = vv + } { var vv string vv, offset, err = decoder.AsString(offset) @@ -554,25 +907,87 @@ func ___decodeArrayActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc6 } v.HexData = vv } + if !decoder.IsCodeNil(offset) { + var vv []message.PermissionLevel + var vvl int + vvl, offset, err = decoder.SliceLength(offset) + if err != nil { + return 0, err + } + vv = make([]message.PermissionLevel, vvl) + for vvi := range vv { + var vvv message.PermissionLevel + offset, err = ___decodeArrayPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(&vvv, decoder, offset) + if err != nil { + return 0, err + } + vv[vvi] = vvv + } + v.Authorization = vv + } else { + offset++ + } + { + var vv string + vv, offset, err = decoder.AsString(offset) + if err != nil { + return 0, err + } + v.Except = vv + } + { + var vv uint64 + vv, offset, err = decoder.AsUint64(offset) + if err != nil { + return 0, err + } + v.Error = vv + } + if !decoder.IsCodeNil(offset) { + var vv []byte + var vvl int + vvl, offset, err = decoder.SliceLength(offset) + if err != nil { + return 0, err + } + vv = make([]byte, vvl) + for vvi := range vv { + var vvv byte + vvv, offset, err = decoder.AsByte(offset) + if err != nil { + return 0, err + } + vv[vvi] = vvv + } + v.Return = vv + } else { + offset++ + } return offset, err } // decode to github.com/eosswedenorg/thalos/api/message.ActionTrace func ___decodeMapActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(v *message.ActionTrace, decoder *dec.Decoder, offset int) (int, error) { keys := [][]byte{ - {uint8(0x74), uint8(0x78), uint8(0x5f), uint8(0x69), uint8(0x64)}, // tx_id - {uint8(0x6e), uint8(0x61), uint8(0x6d), uint8(0x65)}, // name - {uint8(0x63), uint8(0x6f), uint8(0x6e), uint8(0x74), uint8(0x72), uint8(0x61), uint8(0x63), uint8(0x74)}, // contract - {uint8(0x72), uint8(0x65), uint8(0x63), uint8(0x65), uint8(0x69), uint8(0x76), uint8(0x65), uint8(0x72)}, // receiver - {uint8(0x64), uint8(0x61), uint8(0x74), uint8(0x61)}, // data - {uint8(0x68), uint8(0x65), uint8(0x78), uint8(0x5f), uint8(0x64), uint8(0x61), uint8(0x74), uint8(0x61)}, // hex_data + {uint8(0x74), uint8(0x78), uint8(0x5f), uint8(0x69), uint8(0x64)}, // tx_id + {uint8(0x62), uint8(0x6c), uint8(0x6f), uint8(0x63), uint8(0x6b), uint8(0x6e), uint8(0x75), uint8(0x6d)}, // blocknum + {uint8(0x62), uint8(0x6c), uint8(0x6f), uint8(0x63), uint8(0x6b), uint8(0x74), uint8(0x69), uint8(0x6d), uint8(0x65), uint8(0x73), uint8(0x74), uint8(0x61), uint8(0x6d), uint8(0x70)}, // blocktimestamp + {uint8(0x6e), uint8(0x61), uint8(0x6d), uint8(0x65)}, // name + {uint8(0x63), uint8(0x6f), uint8(0x6e), uint8(0x74), uint8(0x72), uint8(0x61), uint8(0x63), uint8(0x74)}, // contract + {uint8(0x72), uint8(0x65), uint8(0x63), uint8(0x65), uint8(0x69), uint8(0x76), uint8(0x65), uint8(0x72)}, // receiver + {uint8(0x64), uint8(0x61), uint8(0x74), uint8(0x61)}, // data + {uint8(0x68), uint8(0x65), uint8(0x78), uint8(0x5f), uint8(0x64), uint8(0x61), uint8(0x74), uint8(0x61)}, // hex_data + {uint8(0x61), uint8(0x75), uint8(0x74), uint8(0x68), uint8(0x6f), uint8(0x72), uint8(0x69), uint8(0x7a), uint8(0x61), uint8(0x74), uint8(0x69), uint8(0x6f), uint8(0x6e)}, // authorization + {uint8(0x65), uint8(0x78), uint8(0x63), uint8(0x65), uint8(0x70), uint8(0x74)}, // except + {uint8(0x65), uint8(0x72), uint8(0x72), uint8(0x6f), uint8(0x72)}, // error + {uint8(0x72), uint8(0x65), uint8(0x74), uint8(0x75), uint8(0x72), uint8(0x6e)}, // return } - offset, err := decoder.CheckStructHeader(6, offset) + offset, err := decoder.CheckStructHeader(12, offset) if err != nil { return 0, err } count := 0 - for count < 6 { + for count < 12 { var dataKey []byte dataKey, offset, err = decoder.AsStringBytes(offset) if err != nil { @@ -607,22 +1022,22 @@ func ___decodeMapActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f count++ case 1: { - var vv string - vv, offset, err = decoder.AsString(offset) + var vv uint32 + vv, offset, err = decoder.AsUint32(offset) if err != nil { return 0, err } - v.Name = vv + v.BlockNum = vv } count++ case 2: { - var vv string - vv, offset, err = decoder.AsString(offset) + var vv time.Time + vv, offset, err = decoder.AsDateTime(offset) if err != nil { return 0, err } - v.Contract = vv + v.Timestamp = vv } count++ case 3: @@ -632,10 +1047,30 @@ func ___decodeMapActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f if err != nil { return 0, err } - v.Receiver = vv + v.Name = vv } count++ case 4: + { + var vv string + vv, offset, err = decoder.AsString(offset) + if err != nil { + return 0, err + } + v.Contract = vv + } + count++ + case 5: + { + var vv string + vv, offset, err = decoder.AsString(offset) + if err != nil { + return 0, err + } + v.Receiver = vv + } + count++ + case 6: if !decoder.IsCodeNil(offset) { var vv []byte var vvl int @@ -657,7 +1092,7 @@ func ___decodeMapActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f offset++ } count++ - case 5: + case 7: { var vv string vv, offset, err = decoder.AsString(offset) @@ -667,6 +1102,70 @@ func ___decodeMapActionTrace_27424f445a2085e7723342fb0df638c626b43c59240988bc64f v.HexData = vv } count++ + case 8: + if !decoder.IsCodeNil(offset) { + var vv []message.PermissionLevel + var vvl int + vvl, offset, err = decoder.SliceLength(offset) + if err != nil { + return 0, err + } + vv = make([]message.PermissionLevel, vvl) + for vvi := range vv { + var vvv message.PermissionLevel + offset, err = ___decodeMapPermissionLevel_27424f445a2085e7723342fb0df638c626b43c59240988bc64f2d60167ee4080(&vvv, decoder, offset) + if err != nil { + return 0, err + } + vv[vvi] = vvv + } + v.Authorization = vv + } else { + offset++ + } + count++ + case 9: + { + var vv string + vv, offset, err = decoder.AsString(offset) + if err != nil { + return 0, err + } + v.Except = vv + } + count++ + case 10: + { + var vv uint64 + vv, offset, err = decoder.AsUint64(offset) + if err != nil { + return 0, err + } + v.Error = vv + } + count++ + case 11: + if !decoder.IsCodeNil(offset) { + var vv []byte + var vvl int + vvl, offset, err = decoder.SliceLength(offset) + if err != nil { + return 0, err + } + vv = make([]byte, vvl) + for vvi := range vv { + var vvv byte + vvv, offset, err = decoder.AsByte(offset) + if err != nil { + return 0, err + } + vv[vvi] = vvv + } + v.Return = vv + } else { + offset++ + } + count++ default: return 0, fmt.Errorf("unknown key[%s] found", string(dataKey)) } diff --git a/api/message/types.go b/api/message/types.go index a0b480c..dae9a04 100644 --- a/api/message/types.go +++ b/api/message/types.go @@ -1,6 +1,9 @@ package message -import "encoding/json" +import ( + "encoding/json" + "time" +) type HeartBeat struct { BlockNum uint32 `json:"blocknum" msgpack:"blocknum"` @@ -16,6 +19,10 @@ type PermissionLevel struct { type ActionTrace struct { TxID string `json:"tx_id" msgpack:"tx_id"` + BlockNum uint32 `json:"blocknum" msgpack:"blocknum"` + + Timestamp time.Time `json:"blocktimestamp" msgpack:"blocktimestamp"` + // Action name Name string `json:"name" msgpack:"name"`