feat(backend/mobs): clean up ruby templates and final generated code (#851)

This commit is contained in:
Alexander 2022-11-29 17:17:01 +01:00 committed by GitHub
parent 2dcdf0a6d8
commit 08b47991aa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 1625 additions and 2998 deletions

View file

@ -4,7 +4,6 @@ import "fmt"
type Message interface { type Message interface {
Encode() []byte Encode() []byte
EncodeWithIndex() []byte
Decode() Message Decode() Message
TypeID() int TypeID() int
Meta() *message Meta() *message

File diff suppressed because it is too large Load diff

View file

@ -1,11 +1,9 @@
package messages package messages
import ( import (
"encoding/json"
"errors" "errors"
"fmt" "fmt"
"io" "io"
"log"
) )
var ( var (
@ -21,19 +19,6 @@ func ReadByte(reader io.Reader) (byte, error) {
return one[0], nil return one[0], nil
} }
func ReadData(reader io.Reader) ([]byte, error) {
n, err := ReadUint(reader)
if err != nil {
return nil, err
}
p := make([]byte, n)
_, err = io.ReadFull(reader, p)
if err != nil {
return nil, err
}
return p, nil
}
func ReadUint(reader io.Reader) (uint64, error) { func ReadUint(reader io.Reader) (uint64, error) {
var x uint64 var x uint64
var s uint var s uint
@ -55,6 +40,16 @@ func ReadUint(reader io.Reader) (uint64, error) {
} }
} }
func WriteUint(v uint64, buf []byte, p int) int {
for v >= 0x80 {
buf[p] = byte(v) | 0x80
v >>= 7
p++
}
buf[p] = byte(v)
return p + 1
}
func ReadInt(reader io.Reader) (int64, error) { func ReadInt(reader io.Reader) (int64, error) {
ux, err := ReadUint(reader) ux, err := ReadUint(reader)
x := int64(ux >> 1) x := int64(ux >> 1)
@ -67,6 +62,14 @@ func ReadInt(reader io.Reader) (int64, error) {
return x, err return x, err
} }
func WriteInt(v int64, buf []byte, p int) int {
uv := uint64(v) << 1
if v < 0 {
uv = ^uv
}
return WriteUint(uv, buf, p)
}
func ReadBoolean(reader io.Reader) (bool, error) { func ReadBoolean(reader io.Reader) (bool, error) {
p := make([]byte, 1) p := make([]byte, 1)
_, err := io.ReadFull(reader, p) _, err := io.ReadFull(reader, p)
@ -76,6 +79,15 @@ func ReadBoolean(reader io.Reader) (bool, error) {
return p[0] == 1, nil return p[0] == 1, nil
} }
func WriteBoolean(v bool, buf []byte, p int) int {
if v {
buf[p] = 1
} else {
buf[p] = 0
}
return p + 1
}
func ReadString(reader io.Reader) (string, error) { func ReadString(reader io.Reader) (string, error) {
l, err := ReadUint(reader) l, err := ReadUint(reader)
if err != nil { if err != nil {
@ -92,73 +104,11 @@ func ReadString(reader io.Reader) (string, error) {
return string(buf), nil return string(buf), nil
} }
func ReadJson(reader io.Reader) (interface{}, error) {
jsonData, err := ReadData(reader)
if err != nil {
return nil, err
}
var v interface{}
if err = json.Unmarshal(jsonData, &v); err != nil {
return nil, err
}
return v, nil
}
func WriteUint(v uint64, buf []byte, p int) int {
for v >= 0x80 {
buf[p] = byte(v) | 0x80
v >>= 7
p++
}
buf[p] = byte(v)
return p + 1
}
func WriteInt(v int64, buf []byte, p int) int {
uv := uint64(v) << 1
if v < 0 {
uv = ^uv
}
return WriteUint(uv, buf, p)
}
func WriteBoolean(v bool, buf []byte, p int) int {
if v {
buf[p] = 1
} else {
buf[p] = 0
}
return p + 1
}
func WriteString(str string, buf []byte, p int) int { func WriteString(str string, buf []byte, p int) int {
p = WriteUint(uint64(len(str)), buf, p) p = WriteUint(uint64(len(str)), buf, p)
return p + copy(buf[p:], str) return p + copy(buf[p:], str)
} }
func WriteData(data []byte, buf []byte, p int) int {
p = WriteUint(uint64(len(data)), buf, p)
return p + copy(buf[p:], data)
}
func WriteJson(v interface{}, buf []byte, p int) int {
data, err := json.Marshal(v)
if err != nil {
log.Printf("JSON encoding error: %v", err)
return WriteString("null", buf, p)
}
return WriteData(data, buf, p)
}
func WriteSize(size uint64, buf []byte, p int) {
var m uint64 = 255
for i := 0; i < 3; i++ {
buf[p+i] = byte(size & m)
size = size >> 8
}
fmt.Println(buf)
}
func ReadSize(reader io.Reader) (uint64, error) { func ReadSize(reader io.Reader) (uint64, error) {
n, err := io.ReadFull(reader, three) n, err := io.ReadFull(reader, three)
if err != nil { if err != nil {

View file

@ -2,7 +2,6 @@ package messages
import ( import (
"bytes" "bytes"
"encoding/binary"
"io" "io"
"log" "log"
) )
@ -46,22 +45,6 @@ func (m *RawMessage) Encode() []byte {
return m.data return m.data
} }
func (m *RawMessage) EncodeWithIndex() []byte {
if !m.encoded {
if m.Encode() == nil {
*m.broken = true
return nil
}
}
if IsIOSType(int(m.tp)) {
return m.data
}
data := make([]byte, len(m.data)+8)
copy(data[8:], m.data[:])
binary.LittleEndian.PutUint64(data[0:], m.Meta().Index)
return data
}
func (m *RawMessage) Decode() Message { func (m *RawMessage) Decode() Message {
if !m.encoded { if !m.encoded {
if m.Encode() == nil { if m.Encode() == nil {

View file

@ -1752,304 +1752,204 @@ func DecodeIOSIssueEvent(reader io.Reader) (Message, error) {
func ReadMessage(t uint64, reader io.Reader) (Message, error) { func ReadMessage(t uint64, reader io.Reader) (Message, error) {
switch t { switch t {
case 80: case 80:
return DecodeBatchMeta(reader) return DecodeBatchMeta(reader)
case 81: case 81:
return DecodeBatchMetadata(reader) return DecodeBatchMetadata(reader)
case 82: case 82:
return DecodePartitionedMessage(reader) return DecodePartitionedMessage(reader)
case 0: case 0:
return DecodeTimestamp(reader) return DecodeTimestamp(reader)
case 1: case 1:
return DecodeSessionStart(reader) return DecodeSessionStart(reader)
case 3: case 3:
return DecodeSessionEndDeprecated(reader) return DecodeSessionEndDeprecated(reader)
case 4: case 4:
return DecodeSetPageLocation(reader) return DecodeSetPageLocation(reader)
case 5: case 5:
return DecodeSetViewportSize(reader) return DecodeSetViewportSize(reader)
case 6: case 6:
return DecodeSetViewportScroll(reader) return DecodeSetViewportScroll(reader)
case 7: case 7:
return DecodeCreateDocument(reader) return DecodeCreateDocument(reader)
case 8: case 8:
return DecodeCreateElementNode(reader) return DecodeCreateElementNode(reader)
case 9: case 9:
return DecodeCreateTextNode(reader) return DecodeCreateTextNode(reader)
case 10: case 10:
return DecodeMoveNode(reader) return DecodeMoveNode(reader)
case 11: case 11:
return DecodeRemoveNode(reader) return DecodeRemoveNode(reader)
case 12: case 12:
return DecodeSetNodeAttribute(reader) return DecodeSetNodeAttribute(reader)
case 13: case 13:
return DecodeRemoveNodeAttribute(reader) return DecodeRemoveNodeAttribute(reader)
case 14: case 14:
return DecodeSetNodeData(reader) return DecodeSetNodeData(reader)
case 15: case 15:
return DecodeSetCSSData(reader) return DecodeSetCSSData(reader)
case 16: case 16:
return DecodeSetNodeScroll(reader) return DecodeSetNodeScroll(reader)
case 17: case 17:
return DecodeSetInputTarget(reader) return DecodeSetInputTarget(reader)
case 18: case 18:
return DecodeSetInputValue(reader) return DecodeSetInputValue(reader)
case 19: case 19:
return DecodeSetInputChecked(reader) return DecodeSetInputChecked(reader)
case 20: case 20:
return DecodeMouseMove(reader) return DecodeMouseMove(reader)
case 22: case 22:
return DecodeConsoleLog(reader) return DecodeConsoleLog(reader)
case 23: case 23:
return DecodePageLoadTiming(reader) return DecodePageLoadTiming(reader)
case 24: case 24:
return DecodePageRenderTiming(reader) return DecodePageRenderTiming(reader)
case 25: case 25:
return DecodeJSExceptionDeprecated(reader) return DecodeJSExceptionDeprecated(reader)
case 26: case 26:
return DecodeIntegrationEvent(reader) return DecodeIntegrationEvent(reader)
case 27: case 27:
return DecodeRawCustomEvent(reader) return DecodeRawCustomEvent(reader)
case 28: case 28:
return DecodeUserID(reader) return DecodeUserID(reader)
case 29: case 29:
return DecodeUserAnonymousID(reader) return DecodeUserAnonymousID(reader)
case 30: case 30:
return DecodeMetadata(reader) return DecodeMetadata(reader)
case 31: case 31:
return DecodePageEvent(reader) return DecodePageEvent(reader)
case 32: case 32:
return DecodeInputEvent(reader) return DecodeInputEvent(reader)
case 33: case 33:
return DecodeClickEvent(reader) return DecodeClickEvent(reader)
case 35: case 35:
return DecodeResourceEvent(reader) return DecodeResourceEvent(reader)
case 36: case 36:
return DecodeCustomEvent(reader) return DecodeCustomEvent(reader)
case 37: case 37:
return DecodeCSSInsertRule(reader) return DecodeCSSInsertRule(reader)
case 38: case 38:
return DecodeCSSDeleteRule(reader) return DecodeCSSDeleteRule(reader)
case 39: case 39:
return DecodeFetch(reader) return DecodeFetch(reader)
case 40: case 40:
return DecodeProfiler(reader) return DecodeProfiler(reader)
case 41: case 41:
return DecodeOTable(reader) return DecodeOTable(reader)
case 42: case 42:
return DecodeStateAction(reader) return DecodeStateAction(reader)
case 43: case 43:
return DecodeStateActionEvent(reader) return DecodeStateActionEvent(reader)
case 44: case 44:
return DecodeRedux(reader) return DecodeRedux(reader)
case 45: case 45:
return DecodeVuex(reader) return DecodeVuex(reader)
case 46: case 46:
return DecodeMobX(reader) return DecodeMobX(reader)
case 47: case 47:
return DecodeNgRx(reader) return DecodeNgRx(reader)
case 48: case 48:
return DecodeGraphQL(reader) return DecodeGraphQL(reader)
case 49: case 49:
return DecodePerformanceTrack(reader) return DecodePerformanceTrack(reader)
case 50: case 50:
return DecodeGraphQLEvent(reader) return DecodeGraphQLEvent(reader)
case 51: case 51:
return DecodeFetchEvent(reader) return DecodeFetchEvent(reader)
case 52: case 52:
return DecodeDOMDrop(reader) return DecodeDOMDrop(reader)
case 53: case 53:
return DecodeResourceTiming(reader) return DecodeResourceTiming(reader)
case 54: case 54:
return DecodeConnectionInformation(reader) return DecodeConnectionInformation(reader)
case 55: case 55:
return DecodeSetPageVisibility(reader) return DecodeSetPageVisibility(reader)
case 56: case 56:
return DecodePerformanceTrackAggr(reader) return DecodePerformanceTrackAggr(reader)
case 57: case 57:
return DecodeLoadFontFace(reader) return DecodeLoadFontFace(reader)
case 58: case 58:
return DecodeSetNodeFocus(reader) return DecodeSetNodeFocus(reader)
case 59: case 59:
return DecodeLongTask(reader) return DecodeLongTask(reader)
case 60: case 60:
return DecodeSetNodeAttributeURLBased(reader) return DecodeSetNodeAttributeURLBased(reader)
case 61: case 61:
return DecodeSetCSSDataURLBased(reader) return DecodeSetCSSDataURLBased(reader)
case 62: case 62:
return DecodeIssueEvent(reader) return DecodeIssueEvent(reader)
case 63: case 63:
return DecodeTechnicalInfo(reader) return DecodeTechnicalInfo(reader)
case 64: case 64:
return DecodeCustomIssue(reader) return DecodeCustomIssue(reader)
case 66: case 66:
return DecodeAssetCache(reader) return DecodeAssetCache(reader)
case 67: case 67:
return DecodeCSSInsertRuleURLBased(reader) return DecodeCSSInsertRuleURLBased(reader)
case 69: case 69:
return DecodeMouseClick(reader) return DecodeMouseClick(reader)
case 70: case 70:
return DecodeCreateIFrameDocument(reader) return DecodeCreateIFrameDocument(reader)
case 71: case 71:
return DecodeAdoptedSSReplaceURLBased(reader) return DecodeAdoptedSSReplaceURLBased(reader)
case 72: case 72:
return DecodeAdoptedSSReplace(reader) return DecodeAdoptedSSReplace(reader)
case 73: case 73:
return DecodeAdoptedSSInsertRuleURLBased(reader) return DecodeAdoptedSSInsertRuleURLBased(reader)
case 74: case 74:
return DecodeAdoptedSSInsertRule(reader) return DecodeAdoptedSSInsertRule(reader)
case 75: case 75:
return DecodeAdoptedSSDeleteRule(reader) return DecodeAdoptedSSDeleteRule(reader)
case 76: case 76:
return DecodeAdoptedSSAddOwner(reader) return DecodeAdoptedSSAddOwner(reader)
case 77: case 77:
return DecodeAdoptedSSRemoveOwner(reader) return DecodeAdoptedSSRemoveOwner(reader)
case 79: case 79:
return DecodeZustand(reader) return DecodeZustand(reader)
case 78: case 78:
return DecodeJSException(reader) return DecodeJSException(reader)
case 126: case 126:
return DecodeSessionEnd(reader) return DecodeSessionEnd(reader)
case 127: case 127:
return DecodeSessionSearch(reader) return DecodeSessionSearch(reader)
case 107: case 107:
return DecodeIOSBatchMeta(reader) return DecodeIOSBatchMeta(reader)
case 90: case 90:
return DecodeIOSSessionStart(reader) return DecodeIOSSessionStart(reader)
case 91: case 91:
return DecodeIOSSessionEnd(reader) return DecodeIOSSessionEnd(reader)
case 92: case 92:
return DecodeIOSMetadata(reader) return DecodeIOSMetadata(reader)
case 93: case 93:
return DecodeIOSCustomEvent(reader) return DecodeIOSCustomEvent(reader)
case 94: case 94:
return DecodeIOSUserID(reader) return DecodeIOSUserID(reader)
case 95: case 95:
return DecodeIOSUserAnonymousID(reader) return DecodeIOSUserAnonymousID(reader)
case 96: case 96:
return DecodeIOSScreenChanges(reader) return DecodeIOSScreenChanges(reader)
case 97: case 97:
return DecodeIOSCrash(reader) return DecodeIOSCrash(reader)
case 98: case 98:
return DecodeIOSScreenEnter(reader) return DecodeIOSScreenEnter(reader)
case 99: case 99:
return DecodeIOSScreenLeave(reader) return DecodeIOSScreenLeave(reader)
case 100: case 100:
return DecodeIOSClickEvent(reader) return DecodeIOSClickEvent(reader)
case 101: case 101:
return DecodeIOSInputEvent(reader) return DecodeIOSInputEvent(reader)
case 102: case 102:
return DecodeIOSPerformanceEvent(reader) return DecodeIOSPerformanceEvent(reader)
case 103: case 103:
return DecodeIOSLog(reader) return DecodeIOSLog(reader)
case 104: case 104:
return DecodeIOSInternalError(reader) return DecodeIOSInternalError(reader)
case 105: case 105:
return DecodeIOSNetworkCall(reader) return DecodeIOSNetworkCall(reader)
case 110: case 110:
return DecodeIOSPerformanceAggregated(reader) return DecodeIOSPerformanceAggregated(reader)
case 111: case 111:
return DecodeIOSIssueEvent(reader) return DecodeIOSIssueEvent(reader)
} }
return nil, fmt.Errorf("Unknown message code: %v", t) return nil, fmt.Errorf("Unknown message code: %v", t)
} }

View file

@ -2,38 +2,21 @@ package messages
import ( import (
"errors" "errors"
"fmt"
"io" "io"
) )
var (
one = []byte{0}
three = []byte{0, 0, 0}
)
func ReadByte(reader io.Reader) (byte, error) { func ReadByte(reader io.Reader) (byte, error) {
p := make([]byte, 1) _, err := io.ReadFull(reader, one)
_, err := io.ReadFull(reader, p)
if err != nil { if err != nil {
return 0, err return 0, err
} }
return p[0], nil return one[0], nil
}
func SkipBytes(reader io.ReadSeeker) error {
n, err := ReadUint(reader)
if err != nil {
return err
}
_, err = reader.Seek(int64(n), io.SeekCurrent)
return err
}
func ReadData(reader io.Reader) ([]byte, error) {
n, err := ReadUint(reader)
if err != nil {
return nil, err
}
p := make([]byte, n)
_, err = io.ReadFull(reader, p)
if err != nil {
return nil, err
}
return p, nil
} }
func ReadUint(reader io.Reader) (uint64, error) { func ReadUint(reader io.Reader) (uint64, error) {
@ -47,7 +30,7 @@ func ReadUint(reader io.Reader) (uint64, error) {
} }
if b < 0x80 { if b < 0x80 {
if i > 9 || i == 9 && b > 1 { if i > 9 || i == 9 && b > 1 {
return x, errors.New("overflow") return x, errors.New("uint overflow")
} }
return x | uint64(b)<<s, nil return x | uint64(b)<<s, nil
} }
@ -57,6 +40,16 @@ func ReadUint(reader io.Reader) (uint64, error) {
} }
} }
func WriteUint(v uint64, buf []byte, p int) int {
for v >= 0x80 {
buf[p] = byte(v) | 0x80
v >>= 7
p++
}
buf[p] = byte(v)
return p + 1
}
func ReadInt(reader io.Reader) (int64, error) { func ReadInt(reader io.Reader) (int64, error) {
ux, err := ReadUint(reader) ux, err := ReadUint(reader)
x := int64(ux >> 1) x := int64(ux >> 1)
@ -69,6 +62,14 @@ func ReadInt(reader io.Reader) (int64, error) {
return x, err return x, err
} }
func WriteInt(v int64, buf []byte, p int) int {
uv := uint64(v) << 1
if v < 0 {
uv = ^uv
}
return WriteUint(uv, buf, p)
}
func ReadBoolean(reader io.Reader) (bool, error) { func ReadBoolean(reader io.Reader) (bool, error) {
p := make([]byte, 1) p := make([]byte, 1)
_, err := io.ReadFull(reader, p) _, err := io.ReadFull(reader, p)
@ -78,37 +79,6 @@ func ReadBoolean(reader io.Reader) (bool, error) {
return p[0] == 1, nil return p[0] == 1, nil
} }
func ReadString(reader io.Reader) (string, error) {
l, err := ReadUint(reader)
if err != nil {
return "", err
}
buf := make([]byte, l)
_, err = io.ReadFull(reader, buf)
if err != nil {
return "", err
}
return string(buf), nil
}
func WriteUint(v uint64, buf []byte, p int) int {
for v >= 0x80 {
buf[p] = byte(v) | 0x80
v >>= 7
p++
}
buf[p] = byte(v)
return p + 1
}
func WriteInt(v int64, buf []byte, p int) int {
uv := uint64(v) << 1
if v < 0 {
uv = ^uv
}
return WriteUint(uv, buf, p)
}
func WriteBoolean(v bool, buf []byte, p int) int { func WriteBoolean(v bool, buf []byte, p int) int {
if v { if v {
buf[p] = 1 buf[p] = 1
@ -118,7 +88,38 @@ func WriteBoolean(v bool, buf []byte, p int) int {
return p + 1 return p + 1
} }
func ReadString(reader io.Reader) (string, error) {
l, err := ReadUint(reader)
if err != nil {
return "", err
}
if l > 10e6 {
return "", errors.New("Too long string")
}
buf := make([]byte, l)
_, err = io.ReadFull(reader, buf)
if err != nil {
return "", err
}
return string(buf), nil
}
func WriteString(str string, buf []byte, p int) int { func WriteString(str string, buf []byte, p int) int {
p = WriteUint(uint64(len(str)), buf, p) p = WriteUint(uint64(len(str)), buf, p)
return p + copy(buf[p:], str) return p + copy(buf[p:], str)
} }
func ReadSize(reader io.Reader) (uint64, error) {
n, err := io.ReadFull(reader, three)
if err != nil {
return 0, err
}
if n != 3 {
return 0, fmt.Errorf("read only %d of 3 size bytes", n)
}
var size uint64
for i, b := range three {
size += uint64(b) << (8 * i)
}
return size, nil
}

View file

@ -1,12 +1,8 @@
// Auto-generated, do not edit // Auto-generated, do not edit
package messages package messages
import "encoding/binary" const (<% $messages.each do |msg| %>
Msg<%= msg.name %> = <%= msg.id %><% end %>
const (
<% $messages.each do |msg| %>
Msg<%= msg.name %> = <%= msg.id %>
<% end %>
) )
<% $messages.each do |msg| %> <% $messages.each do |msg| %>
@ -25,17 +21,6 @@ func (msg *<%= msg.name %>) Encode() []byte {
return buf[:p] return buf[:p]
} }
func (msg *<%= msg.name %>) EncodeWithIndex() []byte {
encoded := msg.Encode()
if IsIOSType(msg.TypeID()) {
return encoded
}
data := make([]byte, len(encoded)+8)
copy(data[8:], encoded[:])
binary.LittleEndian.PutUint64(data[0:], msg.Meta().Index)
return data
}
func (msg *<%= msg.name %>) Decode() Message { func (msg *<%= msg.name %>) Decode() Message {
return msg return msg
} }

View file

@ -5,7 +5,6 @@ import (
"fmt" "fmt"
"io" "io"
) )
<% $messages.each do |msg| %> <% $messages.each do |msg| %>
func Decode<%= msg.name %>(reader io.Reader) (Message, error) { func Decode<%= msg.name %>(reader io.Reader) (Message, error) {
var err error = nil var err error = nil
@ -16,15 +15,11 @@ func Decode<%= msg.name %>(reader io.Reader) (Message, error) {
}" }.join "\n" %> }" }.join "\n" %>
return msg, err return msg, err
} }
<% end %> <% end %>
func ReadMessage(t uint64, reader io.Reader) (Message, error) { func ReadMessage(t uint64, reader io.Reader) (Message, error) {
switch t { switch t {<% $messages.each do |msg| %>
<% $messages.each do |msg| %>
case <%= msg.id %>: case <%= msg.id %>:
return Decode<%= msg.name %>(reader) return Decode<%= msg.name %>(reader)<% end %>
<% end %>
} }
return nil, fmt.Errorf("Unknown message code: %v", t) return nil, fmt.Errorf("Unknown message code: %v", t)
} }