Skip to content

Commit 12aaec8

Browse files
committed
💥 Add BufferView for buffers instead of string_view
Uses span<uint8_t> for binary data where possible, removing casts to/from char*.
1 parent 59dfc93 commit 12aaec8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+598
-411
lines changed

actor_model/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ idf_component_register(
1414
"src"
1515
"${CMAKE_CURRENT_BINARY_DIR}/src/gen"
1616
REQUIRES
17+
"span"
1718
"uuid"
1819
PRIV_REQUIRES
1920
"esp_ringbuf"

actor_model/src/actor_model.cpp

Lines changed: 124 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
namespace ActorModel {
1515

16-
using string_view = std::string_view;
1716
using Reason = Process::Reason;
1817

1918
// free functions bound to default node
@@ -66,8 +65,8 @@ auto send(
6665

6766
auto send(
6867
const Pid& pid,
69-
const string_view type,
70-
const string_view payload
68+
const MessageType type,
69+
const BufferView payload
7170
) -> bool
7271
{
7372
auto& node = Process::get_default_node();
@@ -76,28 +75,56 @@ auto send(
7675

7776
auto send(
7877
const Pid& pid,
79-
const string_view type,
80-
const std::vector<uint8_t>& payload_vec
78+
const MessageType type,
79+
const Buffer& payload_buf
8180
) -> bool
8281
{
8382
auto& node = Process::get_default_node();
84-
const auto payload = string_view{
85-
reinterpret_cast<const char*>(payload_vec.data()),
86-
payload_vec.size()
83+
const auto payload = BufferView{payload_buf.data(), payload_buf.size()};
84+
85+
return node.send(pid, type, payload);
86+
}
87+
88+
auto send(
89+
const Pid& pid,
90+
const MessageType type,
91+
const string_view payload_str
92+
) -> bool
93+
{
94+
auto& node = Process::get_default_node();
95+
const auto payload = BufferView{
96+
reinterpret_cast<const uint8_t*>(payload_str.data()),
97+
payload_str.size()
8798
};
8899

89100
return node.send(pid, type, payload);
90101
}
91102

92103
auto send(
93104
const Pid& pid,
94-
const string_view type,
105+
const MessageType type,
106+
const string& payload_str
107+
) -> bool
108+
{
109+
auto& node = Process::get_default_node();
110+
const auto payload = BufferView{
111+
reinterpret_cast<const uint8_t*>(payload_str.data()),
112+
payload_str.size()
113+
};
114+
115+
return node.send(pid, type, payload);
116+
}
117+
118+
119+
auto send(
120+
const Pid& pid,
121+
const MessageType type,
95122
const flatbuffers::Vector<uint8_t>& payload_fbvec
96123
) -> bool
97124
{
98125
auto& node = Process::get_default_node();
99-
const auto payload = string_view{
100-
reinterpret_cast<const char*>(payload_fbvec.data()),
126+
const auto payload = BufferView{
127+
payload_fbvec.data(),
101128
payload_fbvec.size()
102129
};
103130

@@ -106,15 +133,16 @@ auto send(
106133

107134
auto send(
108135
const Pid& pid,
109-
const string_view type,
136+
const MessageType type,
110137
const MessageFlatbuffer& payload_flatbuffer
111138
) -> bool
112139
{
113140
auto& node = Process::get_default_node();
114-
auto payload = string_view(
115-
reinterpret_cast<const char*>(payload_flatbuffer.data()),
141+
auto payload = BufferView{
142+
payload_flatbuffer.data(),
116143
payload_flatbuffer.size()
117-
);
144+
};
145+
118146
return node.send(pid, type, payload);
119147
}
120148

@@ -131,25 +159,57 @@ auto send_after(
131159
auto send_after(
132160
const Time time,
133161
const Pid& pid,
134-
const string_view type,
135-
const string_view payload
162+
const MessageType type,
163+
const BufferView payload
164+
) -> TRef
165+
{
166+
auto& node = Process::get_default_node();
167+
return node.send_after(time, pid, type, payload);
168+
}
169+
170+
auto send_after(
171+
const Time time,
172+
const Pid& pid,
173+
const MessageType type,
174+
const Buffer& payload_buf
175+
) -> TRef
176+
{
177+
auto& node = Process::get_default_node();
178+
const auto payload = BufferView{
179+
reinterpret_cast<const uint8_t*>(payload_buf.data()),
180+
payload_buf.size()
181+
};
182+
183+
return node.send_after(time, pid, type, payload);
184+
}
185+
186+
auto send_after(
187+
const Time time,
188+
const Pid& pid,
189+
const MessageType type,
190+
const string_view payload_str
136191
) -> TRef
137192
{
138193
auto& node = Process::get_default_node();
194+
const auto payload = BufferView{
195+
reinterpret_cast<const uint8_t*>(payload_str.data()),
196+
payload_str.size()
197+
};
198+
139199
return node.send_after(time, pid, type, payload);
140200
}
141201

142202
auto send_after(
143203
const Time time,
144204
const Pid& pid,
145-
const string_view type,
146-
const std::vector<uint8_t>& payload_vec
205+
const MessageType type,
206+
const string& payload_str
147207
) -> TRef
148208
{
149209
auto& node = Process::get_default_node();
150-
const auto payload = string_view{
151-
reinterpret_cast<const char*>(payload_vec.data()),
152-
payload_vec.size()
210+
const auto payload = BufferView{
211+
reinterpret_cast<const uint8_t*>(payload_str.data()),
212+
payload_str.size()
153213
};
154214

155215
return node.send_after(time, pid, type, payload);
@@ -158,15 +218,16 @@ auto send_after(
158218
auto send_after(
159219
const Time time,
160220
const Pid& pid,
161-
const string_view type,
221+
const MessageType type,
162222
const MessageFlatbuffer& payload_flatbuffer
163223
) -> TRef
164224
{
165225
auto& node = Process::get_default_node();
166-
auto payload = string_view(
167-
reinterpret_cast<const char*>(payload_flatbuffer.data()),
226+
auto payload = BufferView{
227+
payload_flatbuffer.data(),
168228
payload_flatbuffer.size()
169-
);
229+
};
230+
170231
return node.send_after(time, pid, type, payload);
171232
}
172233

@@ -183,8 +244,8 @@ auto send_interval(
183244
auto send_interval(
184245
const Time time,
185246
const Pid& pid,
186-
const string_view type,
187-
const string_view payload
247+
const MessageType type,
248+
const BufferView payload
188249
) -> TRef
189250
{
190251
auto& node = Process::get_default_node();
@@ -194,14 +255,14 @@ auto send_interval(
194255
auto send_interval(
195256
const Time time,
196257
const Pid& pid,
197-
const string_view type,
198-
const std::vector<uint8_t>& payload_vec
258+
const MessageType type,
259+
const Buffer& payload_buf
199260
) -> TRef
200261
{
201262
auto& node = Process::get_default_node();
202-
const auto payload = string_view{
203-
reinterpret_cast<const char*>(payload_vec.data()),
204-
payload_vec.size()
263+
const auto payload = BufferView{
264+
payload_buf.data(),
265+
payload_buf.size()
205266
};
206267

207268
return node.send_interval(time, pid, type, payload);
@@ -210,15 +271,32 @@ auto send_interval(
210271
auto send_interval(
211272
const Time time,
212273
const Pid& pid,
213-
const string_view type,
274+
const MessageType type,
275+
const string_view payload_str
276+
) -> TRef
277+
{
278+
auto& node = Process::get_default_node();
279+
const auto payload = BufferView{
280+
reinterpret_cast<const uint8_t*>(payload_str.data()),
281+
payload_str.size()
282+
};
283+
284+
return node.send_interval(time, pid, type, payload);
285+
}
286+
287+
auto send_interval(
288+
const Time time,
289+
const Pid& pid,
290+
const MessageType type,
214291
const MessageFlatbuffer& payload_flatbuffer
215292
) -> TRef
216293
{
217294
auto& node = Process::get_default_node();
218-
auto payload = string_view(
219-
reinterpret_cast<const char*>(payload_flatbuffer.data()),
295+
auto payload = BufferView{
296+
payload_flatbuffer.data(),
220297
payload_flatbuffer.size()
221-
);
298+
};
299+
222300
return node.send_interval(time, pid, type, payload);
223301
}
224302

@@ -229,14 +307,14 @@ auto cancel(const TRef tref)
229307
return node.cancel(tref);
230308
}
231309

232-
auto register_name(const string_view name, const Pid& pid)
310+
auto register_name(const Name name, const Pid& pid)
233311
-> bool
234312
{
235313
auto& node = Process::get_default_node();
236314
return node.register_name(name, pid);
237315
}
238316

239-
auto unregister(const string_view name)
317+
auto unregister(const Name name)
240318
-> bool
241319
{
242320
auto& node = Process::get_default_node();
@@ -250,7 +328,7 @@ auto registered()
250328
return node.registered();
251329
}
252330

253-
auto whereis(const string_view name)
331+
auto whereis(const Name name)
254332
-> MaybePid
255333
{
256334
auto& node = Process::get_default_node();
@@ -264,7 +342,7 @@ auto exit(const Pid& pid, const Pid& pid2, const Reason exit_reason)
264342
return node.exit(pid, pid2, exit_reason);
265343
}
266344

267-
auto module(const std::string_view module_flatbuffer)
345+
auto module(const BufferView module_flatbuffer)
268346
-> bool
269347
{
270348
auto& node = Process::get_default_node();
@@ -273,8 +351,8 @@ auto module(const std::string_view module_flatbuffer)
273351

274352
auto apply(
275353
const Pid& pid,
276-
const std::string_view function_name,
277-
const std::string_view args
354+
const Name function_name,
355+
const BufferView args
278356
) -> ResultUnion
279357
{
280358
auto& node = Process::get_default_node();
@@ -283,9 +361,9 @@ auto apply(
283361

284362
auto apply(
285363
const Pid& pid,
286-
const std::string_view module_name,
287-
const std::string_view function_name,
288-
const std::string_view args
364+
const Name module_name,
365+
const Name function_name,
366+
const BufferView args
289367
) -> ResultUnion
290368
{
291369
auto& node = Process::get_default_node();

0 commit comments

Comments
 (0)