self_msgproto 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/self_msgproto/message.cpp +64 -32
- data/ext/self_msgproto/msgproto/message_generated.h +57 -34
- data/lib/self_msgproto/message.rb +1 -1
- data/lib/self_msgproto/version.rb +1 -1
- data/test/unit/test_message.rb +4 -2
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48e361d23d4dcd09aca2e053666f340703bc99c345991700203acc0a7135cc4f
|
4
|
+
data.tar.gz: 8c8320a08ee30316c4d82d64b8b480bc4afba8758ae596f3de374d3f4dde8965
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acab917323d1f4f8c3c614230f6e9b22b476d6a1931fd1b53fb1b0e1700ab2462b32e01d888397b231ab3dc30e32ebfffc2dd80149a0e58a07fb4cca4f5de985
|
7
|
+
data.tar.gz: 19fd66580d5afad7ef089b3dfd4f6dd32c5dde613d51e24ca0072312e7fc75979273b7d17022edbfdcee2e942dd9fcf2530a5ef69519ee6e8fde07aed26dc0b5
|
@@ -35,41 +35,50 @@ VALUE message_initialize(int argc, VALUE *argv, VALUE self)
|
|
35
35
|
|
36
36
|
auto id = msg->id()->c_str();
|
37
37
|
auto mtype = msg->msgtype();
|
38
|
-
auto stype = msg->subtype();
|
39
38
|
auto sender = msg->sender()->c_str();
|
40
39
|
auto recipient = msg->recipient()->c_str();
|
41
40
|
auto ciphertext = msg->ciphertext();
|
42
41
|
auto metadata = msg->metadata();
|
42
|
+
auto message_type = msg->message_type();
|
43
|
+
auto priority = msg->priority();
|
43
44
|
|
44
45
|
auto offset = metadata->offset();
|
45
46
|
auto timestamp = metadata->timestamp();
|
46
47
|
|
47
|
-
VALUE
|
48
|
-
rb_ivar_set(self, rb_intern("@id"),
|
48
|
+
VALUE id_str = rb_str_new(id, std::strlen(id));
|
49
|
+
rb_ivar_set(self, rb_intern("@id"), id_str);
|
49
50
|
|
50
|
-
VALUE
|
51
|
-
rb_ivar_set(self, rb_intern("@type"),
|
51
|
+
VALUE mtype_int = rb_int2inum(mtype);
|
52
|
+
rb_ivar_set(self, rb_intern("@type"), mtype_int);
|
52
53
|
|
53
|
-
VALUE
|
54
|
-
rb_ivar_set(self, rb_intern("@
|
54
|
+
VALUE offset_int = rb_int2inum(offset);
|
55
|
+
rb_ivar_set(self, rb_intern("@offset"), offset_int);
|
55
56
|
|
56
|
-
VALUE
|
57
|
-
rb_ivar_set(self, rb_intern("@
|
57
|
+
VALUE priority_int = rb_int2inum(priority);
|
58
|
+
rb_ivar_set(self, rb_intern("@priority"), priority_int);
|
58
59
|
|
59
|
-
VALUE
|
60
|
-
rb_ivar_set(self, rb_intern("@timestamp"),
|
60
|
+
VALUE timestamp_int = rb_int2inum(timestamp);
|
61
|
+
rb_ivar_set(self, rb_intern("@timestamp"), timestamp_int);
|
61
62
|
|
62
|
-
VALUE
|
63
|
-
rb_ivar_set(self, rb_intern("@sender"),
|
63
|
+
VALUE sender_str = rb_str_new(sender, std::strlen(sender));
|
64
|
+
rb_ivar_set(self, rb_intern("@sender"), sender_str);
|
64
65
|
|
65
|
-
VALUE
|
66
|
-
rb_ivar_set(self, rb_intern("@recipient"),
|
66
|
+
VALUE recipient_str = rb_str_new(recipient, std::strlen(recipient));
|
67
|
+
rb_ivar_set(self, rb_intern("@recipient"), recipient_str);
|
67
68
|
|
68
|
-
|
69
|
-
|
69
|
+
if (message_type != NULL) {
|
70
|
+
const u_char *message_type_data = message_type->data();
|
71
|
+
long message_type_size = message_type->size();
|
70
72
|
|
71
|
-
|
72
|
-
|
73
|
+
VALUE message_type_str = rb_str_new((const char *)message_type_data, message_type_size);
|
74
|
+
rb_ivar_set(self, rb_intern("@message_type"), message_type_str);
|
75
|
+
}
|
76
|
+
|
77
|
+
const u_char *ciphertext_data = ciphertext->data();
|
78
|
+
long ciphertext_size = ciphertext->size();
|
79
|
+
|
80
|
+
VALUE ciphertext_str = rb_str_new((const char *)ciphertext_data, ciphertext_size);
|
81
|
+
rb_ivar_set(self, rb_intern("@ciphertext"), ciphertext_str);
|
73
82
|
}
|
74
83
|
|
75
84
|
return self;
|
@@ -77,25 +86,43 @@ VALUE message_initialize(int argc, VALUE *argv, VALUE self)
|
|
77
86
|
|
78
87
|
VALUE message_to_fb(VALUE self)
|
79
88
|
{
|
80
|
-
|
81
|
-
|
89
|
+
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> message_type;
|
90
|
+
u_char *message_type_str;
|
91
|
+
long message_type_len;
|
92
|
+
|
93
|
+
VALUE id_v = rb_ivar_get(self, rb_intern("@id"));
|
94
|
+
char *id_str = RSTRING_PTR(id_v);
|
95
|
+
|
96
|
+
VALUE sender_v = rb_ivar_get(self, rb_intern("@sender"));
|
97
|
+
char *sender_str = RSTRING_PTR(sender_v);
|
98
|
+
|
99
|
+
VALUE recipient_v = rb_ivar_get(self, rb_intern("@recipient"));
|
100
|
+
char *recipient_str = RSTRING_PTR(recipient_v);
|
82
101
|
|
83
|
-
VALUE
|
84
|
-
|
102
|
+
VALUE priority_v = rb_ivar_get(self, rb_intern("@priority"));
|
103
|
+
uint32_t priority = NUM2ULL(priority_v);
|
85
104
|
|
86
|
-
VALUE
|
87
|
-
char *recipientstr = RSTRING_PTR(recipientv);
|
105
|
+
VALUE message_type_v = rb_ivar_get(self, rb_intern("@message_type"));
|
88
106
|
|
89
|
-
|
90
|
-
|
91
|
-
|
107
|
+
if (message_type_v != Qnil) {
|
108
|
+
u_char *message_type_str = (u_char *)RSTRING_PTR(message_type_v);
|
109
|
+
long message_type_len = RSTRING_LEN(message_type_v);
|
110
|
+
}
|
111
|
+
|
112
|
+
VALUE ciphertext_v = rb_ivar_get(self, rb_intern("@ciphertext"));
|
113
|
+
u_char *ciphertext_str = (u_char *)RSTRING_PTR(ciphertext_v);
|
114
|
+
long ciphertext_len = RSTRING_LEN(ciphertext_v);
|
92
115
|
|
93
116
|
flatbuffers::FlatBufferBuilder builder(1024);
|
94
117
|
|
95
|
-
auto id = builder.CreateString(
|
96
|
-
auto sender = builder.CreateString(
|
97
|
-
auto recipient = builder.CreateString(
|
98
|
-
auto ciphertext = builder.CreateVector(
|
118
|
+
auto id = builder.CreateString(id_str);
|
119
|
+
auto sender = builder.CreateString(sender_str);
|
120
|
+
auto recipient = builder.CreateString(recipient_str);
|
121
|
+
auto ciphertext = builder.CreateVector(ciphertext_str, ciphertext_len);
|
122
|
+
|
123
|
+
if (message_type_v != Qnil) {
|
124
|
+
message_type = builder.CreateVector(message_type_str, message_type_len);
|
125
|
+
}
|
99
126
|
|
100
127
|
SelfMessaging::Metadata metadata(0, 0);
|
101
128
|
|
@@ -107,6 +134,11 @@ VALUE message_to_fb(VALUE self)
|
|
107
134
|
msg_builder.add_recipient(recipient);
|
108
135
|
msg_builder.add_ciphertext(ciphertext);
|
109
136
|
msg_builder.add_metadata(&metadata);
|
137
|
+
msg_builder.add_priority(priority);
|
138
|
+
|
139
|
+
if (message_type_v != Qnil) {
|
140
|
+
msg_builder.add_message_type(message_type);
|
141
|
+
}
|
110
142
|
|
111
143
|
auto msg = msg_builder.Finish();
|
112
144
|
builder.Finish(msg);
|
@@ -32,15 +32,9 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) Metadata FLATBUFFERS_FINAL_CLASS {
|
|
32
32
|
int64_t timestamp() const {
|
33
33
|
return flatbuffers::EndianScalar(timestamp_);
|
34
34
|
}
|
35
|
-
void mutate_timestamp(int64_t _timestamp) {
|
36
|
-
flatbuffers::WriteScalar(×tamp_, _timestamp);
|
37
|
-
}
|
38
35
|
int64_t offset() const {
|
39
36
|
return flatbuffers::EndianScalar(offset_);
|
40
37
|
}
|
41
|
-
void mutate_offset(int64_t _offset) {
|
42
|
-
flatbuffers::WriteScalar(&offset_, _offset);
|
43
|
-
}
|
44
38
|
};
|
45
39
|
FLATBUFFERS_STRUCT_END(Metadata, 16);
|
46
40
|
|
@@ -53,49 +47,44 @@ struct Message FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
|
|
53
47
|
VT_SENDER = 10,
|
54
48
|
VT_RECIPIENT = 12,
|
55
49
|
VT_METADATA = 14,
|
56
|
-
VT_CIPHERTEXT = 16
|
50
|
+
VT_CIPHERTEXT = 16,
|
51
|
+
VT_PRIORITY = 20,
|
52
|
+
VT_MESSAGE_TYPE = 22,
|
53
|
+
VT_COLLAPSE_KEY = 24,
|
54
|
+
VT_NOTIFICATION_PAYLOAD = 26
|
57
55
|
};
|
58
56
|
const flatbuffers::String *id() const {
|
59
57
|
return GetPointer<const flatbuffers::String *>(VT_ID);
|
60
58
|
}
|
61
|
-
flatbuffers::String *mutable_id() {
|
62
|
-
return GetPointer<flatbuffers::String *>(VT_ID);
|
63
|
-
}
|
64
59
|
SelfMessaging::MsgType msgtype() const {
|
65
60
|
return static_cast<SelfMessaging::MsgType>(GetField<int8_t>(VT_MSGTYPE, 0));
|
66
61
|
}
|
67
|
-
bool mutate_msgtype(SelfMessaging::MsgType _msgtype) {
|
68
|
-
return SetField<int8_t>(VT_MSGTYPE, static_cast<int8_t>(_msgtype), 0);
|
69
|
-
}
|
70
62
|
SelfMessaging::MsgSubType subtype() const {
|
71
63
|
return static_cast<SelfMessaging::MsgSubType>(GetField<uint16_t>(VT_SUBTYPE, 0));
|
72
64
|
}
|
73
|
-
bool mutate_subtype(SelfMessaging::MsgSubType _subtype) {
|
74
|
-
return SetField<uint16_t>(VT_SUBTYPE, static_cast<uint16_t>(_subtype), 0);
|
75
|
-
}
|
76
65
|
const flatbuffers::String *sender() const {
|
77
66
|
return GetPointer<const flatbuffers::String *>(VT_SENDER);
|
78
67
|
}
|
79
|
-
flatbuffers::String *mutable_sender() {
|
80
|
-
return GetPointer<flatbuffers::String *>(VT_SENDER);
|
81
|
-
}
|
82
68
|
const flatbuffers::String *recipient() const {
|
83
69
|
return GetPointer<const flatbuffers::String *>(VT_RECIPIENT);
|
84
70
|
}
|
85
|
-
flatbuffers::String *mutable_recipient() {
|
86
|
-
return GetPointer<flatbuffers::String *>(VT_RECIPIENT);
|
87
|
-
}
|
88
71
|
const SelfMessaging::Metadata *metadata() const {
|
89
72
|
return GetStruct<const SelfMessaging::Metadata *>(VT_METADATA);
|
90
73
|
}
|
91
|
-
SelfMessaging::Metadata *mutable_metadata() {
|
92
|
-
return GetStruct<SelfMessaging::Metadata *>(VT_METADATA);
|
93
|
-
}
|
94
74
|
const flatbuffers::Vector<uint8_t> *ciphertext() const {
|
95
75
|
return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_CIPHERTEXT);
|
96
76
|
}
|
97
|
-
|
98
|
-
return
|
77
|
+
uint32_t priority() const {
|
78
|
+
return GetField<uint32_t>(VT_PRIORITY, 0);
|
79
|
+
}
|
80
|
+
const flatbuffers::Vector<uint8_t> *message_type() const {
|
81
|
+
return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_MESSAGE_TYPE);
|
82
|
+
}
|
83
|
+
const flatbuffers::Vector<uint8_t> *collapse_key() const {
|
84
|
+
return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_COLLAPSE_KEY);
|
85
|
+
}
|
86
|
+
const flatbuffers::Vector<uint8_t> *notification_payload() const {
|
87
|
+
return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_NOTIFICATION_PAYLOAD);
|
99
88
|
}
|
100
89
|
bool Verify(flatbuffers::Verifier &verifier) const {
|
101
90
|
return VerifyTableStart(verifier) &&
|
@@ -110,6 +99,13 @@ struct Message FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
|
|
110
99
|
VerifyFieldRequired<SelfMessaging::Metadata>(verifier, VT_METADATA) &&
|
111
100
|
VerifyOffset(verifier, VT_CIPHERTEXT) &&
|
112
101
|
verifier.VerifyVector(ciphertext()) &&
|
102
|
+
VerifyField<uint32_t>(verifier, VT_PRIORITY) &&
|
103
|
+
VerifyOffset(verifier, VT_MESSAGE_TYPE) &&
|
104
|
+
verifier.VerifyVector(message_type()) &&
|
105
|
+
VerifyOffset(verifier, VT_COLLAPSE_KEY) &&
|
106
|
+
verifier.VerifyVector(collapse_key()) &&
|
107
|
+
VerifyOffset(verifier, VT_NOTIFICATION_PAYLOAD) &&
|
108
|
+
verifier.VerifyVector(notification_payload()) &&
|
113
109
|
verifier.EndTable();
|
114
110
|
}
|
115
111
|
};
|
@@ -139,6 +135,18 @@ struct MessageBuilder {
|
|
139
135
|
void add_ciphertext(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> ciphertext) {
|
140
136
|
fbb_.AddOffset(Message::VT_CIPHERTEXT, ciphertext);
|
141
137
|
}
|
138
|
+
void add_priority(uint32_t priority) {
|
139
|
+
fbb_.AddElement<uint32_t>(Message::VT_PRIORITY, priority, 0);
|
140
|
+
}
|
141
|
+
void add_message_type(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> message_type) {
|
142
|
+
fbb_.AddOffset(Message::VT_MESSAGE_TYPE, message_type);
|
143
|
+
}
|
144
|
+
void add_collapse_key(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> collapse_key) {
|
145
|
+
fbb_.AddOffset(Message::VT_COLLAPSE_KEY, collapse_key);
|
146
|
+
}
|
147
|
+
void add_notification_payload(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> notification_payload) {
|
148
|
+
fbb_.AddOffset(Message::VT_NOTIFICATION_PAYLOAD, notification_payload);
|
149
|
+
}
|
142
150
|
explicit MessageBuilder(flatbuffers::FlatBufferBuilder &_fbb)
|
143
151
|
: fbb_(_fbb) {
|
144
152
|
start_ = fbb_.StartTable();
|
@@ -159,8 +167,16 @@ inline flatbuffers::Offset<Message> CreateMessage(
|
|
159
167
|
flatbuffers::Offset<flatbuffers::String> sender = 0,
|
160
168
|
flatbuffers::Offset<flatbuffers::String> recipient = 0,
|
161
169
|
const SelfMessaging::Metadata *metadata = 0,
|
162
|
-
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> ciphertext = 0
|
170
|
+
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> ciphertext = 0,
|
171
|
+
uint32_t priority = 0,
|
172
|
+
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> message_type = 0,
|
173
|
+
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> collapse_key = 0,
|
174
|
+
flatbuffers::Offset<flatbuffers::Vector<uint8_t>> notification_payload = 0) {
|
163
175
|
MessageBuilder builder_(_fbb);
|
176
|
+
builder_.add_notification_payload(notification_payload);
|
177
|
+
builder_.add_collapse_key(collapse_key);
|
178
|
+
builder_.add_message_type(message_type);
|
179
|
+
builder_.add_priority(priority);
|
164
180
|
builder_.add_ciphertext(ciphertext);
|
165
181
|
builder_.add_metadata(metadata);
|
166
182
|
builder_.add_recipient(recipient);
|
@@ -179,11 +195,18 @@ inline flatbuffers::Offset<Message> CreateMessageDirect(
|
|
179
195
|
const char *sender = nullptr,
|
180
196
|
const char *recipient = nullptr,
|
181
197
|
const SelfMessaging::Metadata *metadata = 0,
|
182
|
-
const std::vector<uint8_t> *ciphertext = nullptr
|
198
|
+
const std::vector<uint8_t> *ciphertext = nullptr,
|
199
|
+
uint32_t priority = 0,
|
200
|
+
const std::vector<uint8_t> *message_type = nullptr,
|
201
|
+
const std::vector<uint8_t> *collapse_key = nullptr,
|
202
|
+
const std::vector<uint8_t> *notification_payload = nullptr) {
|
183
203
|
auto id__ = id ? _fbb.CreateString(id) : 0;
|
184
204
|
auto sender__ = sender ? _fbb.CreateString(sender) : 0;
|
185
205
|
auto recipient__ = recipient ? _fbb.CreateString(recipient) : 0;
|
186
206
|
auto ciphertext__ = ciphertext ? _fbb.CreateVector<uint8_t>(*ciphertext) : 0;
|
207
|
+
auto message_type__ = message_type ? _fbb.CreateVector<uint8_t>(*message_type) : 0;
|
208
|
+
auto collapse_key__ = collapse_key ? _fbb.CreateVector<uint8_t>(*collapse_key) : 0;
|
209
|
+
auto notification_payload__ = notification_payload ? _fbb.CreateVector<uint8_t>(*notification_payload) : 0;
|
187
210
|
return SelfMessaging::CreateMessage(
|
188
211
|
_fbb,
|
189
212
|
id__,
|
@@ -192,7 +215,11 @@ inline flatbuffers::Offset<Message> CreateMessageDirect(
|
|
192
215
|
sender__,
|
193
216
|
recipient__,
|
194
217
|
metadata,
|
195
|
-
ciphertext__
|
218
|
+
ciphertext__,
|
219
|
+
priority,
|
220
|
+
message_type__,
|
221
|
+
collapse_key__,
|
222
|
+
notification_payload__);
|
196
223
|
}
|
197
224
|
|
198
225
|
inline const SelfMessaging::Message *GetMessage(const void *buf) {
|
@@ -203,10 +230,6 @@ inline const SelfMessaging::Message *GetSizePrefixedMessage(const void *buf) {
|
|
203
230
|
return flatbuffers::GetSizePrefixedRoot<SelfMessaging::Message>(buf);
|
204
231
|
}
|
205
232
|
|
206
|
-
inline Message *GetMutableMessage(void *buf) {
|
207
|
-
return flatbuffers::GetMutableRoot<Message>(buf);
|
208
|
-
}
|
209
|
-
|
210
233
|
inline bool VerifyMessageBuffer(
|
211
234
|
flatbuffers::Verifier &verifier) {
|
212
235
|
return verifier.VerifyBuffer<SelfMessaging::Message>(nullptr);
|
data/test/unit/test_message.rb
CHANGED
@@ -7,16 +7,18 @@ class TestMessage < Minitest::Test
|
|
7
7
|
include SelfMsg
|
8
8
|
|
9
9
|
def test_new_message
|
10
|
-
d = Base64.decode64('
|
10
|
+
d = Base64.decode64('HAAAABgALAAoAAAAAAAkACAADAAcAAAACAAEABgAAAAoAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAGAAAACAAAAAoAAAAAAAAAAQAAAB0ZXN0BwAAAGFsaWNlOjEABgAAAHRlc3Q6MQAAJAAAADlhMGY2YzY5LTJiNmUtNGIwNi04NzFlLTBjNWJhYTkyYmM5NgAAAAA')
|
11
11
|
m = SelfMsg::Message.new(data: d)
|
12
|
+
|
12
13
|
p m.id
|
13
14
|
p m.type
|
14
|
-
p m.subtype
|
15
15
|
p m.offset
|
16
16
|
p m.timestamp
|
17
17
|
p m.sender
|
18
18
|
p m.recipient
|
19
19
|
p m.ciphertext
|
20
|
+
p m.message_type
|
21
|
+
p m.priority
|
20
22
|
|
21
23
|
p m.to_fb
|
22
24
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: self_msgproto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Bevan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rice
|
@@ -133,14 +133,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
133
|
- !ruby/object:Gem::Version
|
134
134
|
version: '0'
|
135
135
|
requirements: []
|
136
|
-
rubygems_version: 3.
|
136
|
+
rubygems_version: 3.3.5
|
137
137
|
signing_key:
|
138
138
|
specification_version: 4
|
139
139
|
summary: Bindings for Self's Flatbuffer messaging protocol
|
140
140
|
test_files:
|
141
|
-
- test/
|
142
|
-
- test/unit/test_auth.rb
|
141
|
+
- test/spec/test_message.rb
|
143
142
|
- test/unit/test_acl.rb
|
144
|
-
- test/unit/
|
143
|
+
- test/unit/test_auth.rb
|
144
|
+
- test/unit/test_header.rb
|
145
145
|
- test/unit/test_message.rb
|
146
|
-
- test/
|
146
|
+
- test/unit/test_notification.rb
|