From d48a580d62772540453110a7a0db58c5419a4934 Mon Sep 17 00:00:00 2001 From: Alex Kaminskii Date: Mon, 17 Oct 2022 10:29:47 +0200 Subject: [PATCH] feat(mobs;backend): negative filtering for mob-file messages (no backend involved in plugin creation) --- backend/pkg/messages/filters.go | 2 +- backend/pkg/messages/messages.go | 72 +++++++++---------- backend/pkg/messages/read-message.go | 30 ++++---- ee/connectors/msgcodec/messages.py | 16 ++--- ee/connectors/msgcodec/msgcodec.py | 12 ++-- .../backend~pkg~messages~filters.go.erb | 2 +- 6 files changed, 67 insertions(+), 67 deletions(-) diff --git a/backend/pkg/messages/filters.go b/backend/pkg/messages/filters.go index c72176010..fa2049d94 100644 --- a/backend/pkg/messages/filters.go +++ b/backend/pkg/messages/filters.go @@ -2,7 +2,7 @@ package messages func IsReplayerType(id int) bool { - return 0 == id || 4 == id || 5 == id || 6 == id || 7 == id || 8 == id || 9 == id || 10 == id || 11 == id || 12 == id || 13 == id || 14 == id || 15 == id || 16 == id || 18 == id || 19 == id || 20 == id || 22 == id || 37 == id || 38 == id || 39 == id || 40 == id || 41 == id || 44 == id || 45 == id || 46 == id || 47 == id || 48 == id || 49 == id || 54 == id || 55 == id || 59 == id || 60 == id || 61 == id || 67 == id || 69 == id || 70 == id || 71 == id || 72 == id || 73 == id || 74 == id || 75 == id || 76 == id || 77 == id || 79 == id || 90 == id || 93 == id || 96 == id || 100 == id || 102 == id || 103 == id || 105 == id + return 80 != id && 81 != id && 82 != id && 1 != id && 3 != id && 17 != id && 23 != id && 24 != id && 25 != id && 26 != id && 27 != id && 28 != id && 29 != id && 30 != id && 31 != id && 32 != id && 33 != id && 34 != id && 35 != id && 36 != id && 42 != id && 43 != id && 50 != id && 51 != id && 52 != id && 53 != id && 56 != id && 62 != id && 63 != id && 64 != id && 66 != id && 78 != id && 127 != id && 107 != id && 91 != id && 92 != id && 94 != id && 95 != id && 97 != id && 98 != id && 99 != id && 101 != id && 104 != id && 110 != id && 111 != id } func IsIOSType(id int) bool { diff --git a/backend/pkg/messages/messages.go b/backend/pkg/messages/messages.go index 46c91dd38..fe8220596 100644 --- a/backend/pkg/messages/messages.go +++ b/backend/pkg/messages/messages.go @@ -156,10 +156,10 @@ const ( MsgZustand = 79 - MsgSessionSearch = 127 - MsgJSException = 78 + MsgSessionSearch = 127 + MsgIOSBatchMeta = 107 MsgIOSSessionStart = 90 @@ -3040,40 +3040,6 @@ func (msg *Zustand) TypeID() int { return 79 } -type SessionSearch struct { - message - Timestamp uint64 - Partition uint64 -} - -func (msg *SessionSearch) Encode() []byte { - buf := make([]byte, 21) - buf[0] = 127 - p := 1 - p = WriteUint(msg.Timestamp, buf, p) - p = WriteUint(msg.Partition, buf, p) - return buf[:p] -} - -func (msg *SessionSearch) 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 *SessionSearch) Decode() Message { - return msg -} - -func (msg *SessionSearch) TypeID() int { - return 127 -} - type JSException struct { message Name string @@ -3112,6 +3078,40 @@ func (msg *JSException) TypeID() int { return 78 } +type SessionSearch struct { + message + Timestamp uint64 + Partition uint64 +} + +func (msg *SessionSearch) Encode() []byte { + buf := make([]byte, 21) + buf[0] = 127 + p := 1 + p = WriteUint(msg.Timestamp, buf, p) + p = WriteUint(msg.Partition, buf, p) + return buf[:p] +} + +func (msg *SessionSearch) 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 *SessionSearch) Decode() Message { + return msg +} + +func (msg *SessionSearch) TypeID() int { + return 127 +} + type IOSBatchMeta struct { message Timestamp uint64 diff --git a/backend/pkg/messages/read-message.go b/backend/pkg/messages/read-message.go index fad608863..6fcc95a94 100644 --- a/backend/pkg/messages/read-message.go +++ b/backend/pkg/messages/read-message.go @@ -1303,18 +1303,6 @@ func DecodeZustand(reader io.Reader) (Message, error) { return msg, err } -func DecodeSessionSearch(reader io.Reader) (Message, error) { - var err error = nil - msg := &SessionSearch{} - if msg.Timestamp, err = ReadUint(reader); err != nil { - return nil, err - } - if msg.Partition, err = ReadUint(reader); err != nil { - return nil, err - } - return msg, err -} - func DecodeJSException(reader io.Reader) (Message, error) { var err error = nil msg := &JSException{} @@ -1333,6 +1321,18 @@ func DecodeJSException(reader io.Reader) (Message, error) { return msg, err } +func DecodeSessionSearch(reader io.Reader) (Message, error) { + var err error = nil + msg := &SessionSearch{} + if msg.Timestamp, err = ReadUint(reader); err != nil { + return nil, err + } + if msg.Partition, err = ReadUint(reader); err != nil { + return nil, err + } + return msg, err +} + func DecodeIOSBatchMeta(reader io.Reader) (Message, error) { var err error = nil msg := &IOSBatchMeta{} @@ -1966,12 +1966,12 @@ func ReadMessage(t uint64, reader io.Reader) (Message, error) { case 79: return DecodeZustand(reader) - case 127: - return DecodeSessionSearch(reader) - case 78: return DecodeJSException(reader) + case 127: + return DecodeSessionSearch(reader) + case 107: return DecodeIOSBatchMeta(reader) diff --git a/ee/connectors/msgcodec/messages.py b/ee/connectors/msgcodec/messages.py index 254832267..06709336e 100644 --- a/ee/connectors/msgcodec/messages.py +++ b/ee/connectors/msgcodec/messages.py @@ -743,14 +743,6 @@ class Zustand(Message): self.state = state -class SessionSearch(Message): - __id__ = 127 - - def __init__(self, timestamp, partition): - self.timestamp = timestamp - self.partition = partition - - class JSException(Message): __id__ = 78 @@ -761,6 +753,14 @@ class JSException(Message): self.metadata = metadata +class SessionSearch(Message): + __id__ = 127 + + def __init__(self, timestamp, partition): + self.timestamp = timestamp + self.partition = partition + + class IOSBatchMeta(Message): __id__ = 107 diff --git a/ee/connectors/msgcodec/msgcodec.py b/ee/connectors/msgcodec/msgcodec.py index 724105b1e..707f21241 100644 --- a/ee/connectors/msgcodec/msgcodec.py +++ b/ee/connectors/msgcodec/msgcodec.py @@ -661,12 +661,6 @@ class MessageCodec(Codec): state=self.read_string(reader) ) - if message_id == 127: - return SessionSearch( - timestamp=self.read_uint(reader), - partition=self.read_uint(reader) - ) - if message_id == 78: return JSException( name=self.read_string(reader), @@ -675,6 +669,12 @@ class MessageCodec(Codec): metadata=self.read_string(reader) ) + if message_id == 127: + return SessionSearch( + timestamp=self.read_uint(reader), + partition=self.read_uint(reader) + ) + if message_id == 107: return IOSBatchMeta( timestamp=self.read_uint(reader), diff --git a/mobs/templates/backend~pkg~messages~filters.go.erb b/mobs/templates/backend~pkg~messages~filters.go.erb index 63466136a..bb43037e8 100644 --- a/mobs/templates/backend~pkg~messages~filters.go.erb +++ b/mobs/templates/backend~pkg~messages~filters.go.erb @@ -2,7 +2,7 @@ package messages func IsReplayerType(id int) bool { - return <%= $messages.select { |msg| msg.replayer != false }.map{ |msg| "#{msg.id} == id" }.join(' || ') %> + return <%= $messages.select { |msg| msg.replayer == false }.map{ |msg| "#{msg.id} != id" }.join(' && ') %> } func IsIOSType(id int) bool {