Skip to content

Commit 49ed20e

Browse files
authored
move to header files (#61)
Signed-off-by: Kuat Yessenov <kuat@google.com>
1 parent 772c557 commit 49ed20e

File tree

2 files changed

+31
-36
lines changed

2 files changed

+31
-36
lines changed

include/proxy-wasm/exports.h

+29-4
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,35 @@ extern thread_local ContextBase *current_context_;
2727

2828
namespace exports {
2929

30-
template <typename Pairs> size_t pairsSize(const Pairs &result);
31-
template <typename Pairs> void marshalPairs(const Pairs &result, char *buffer);
32-
template <typename Pairs>
33-
bool getPairs(ContextBase *context, const Pairs &result, uint64_t ptr_ptr, uint64_t size_ptr);
30+
template <typename Pairs> size_t pairsSize(const Pairs &result) {
31+
size_t size = 4; // number of headers
32+
for (auto &p : result) {
33+
size += 8; // size of key, size of value
34+
size += p.first.size() + 1; // null terminated key
35+
size += p.second.size() + 1; // null terminated value
36+
}
37+
return size;
38+
}
39+
40+
template <typename Pairs> void marshalPairs(const Pairs &result, char *buffer) {
41+
char *b = buffer;
42+
*reinterpret_cast<uint32_t *>(b) = result.size();
43+
b += sizeof(uint32_t);
44+
for (auto &p : result) {
45+
*reinterpret_cast<uint32_t *>(b) = p.first.size();
46+
b += sizeof(uint32_t);
47+
*reinterpret_cast<uint32_t *>(b) = p.second.size();
48+
b += sizeof(uint32_t);
49+
}
50+
for (auto &p : result) {
51+
memcpy(b, p.first.data(), p.first.size());
52+
b += p.first.size();
53+
*b++ = 0;
54+
memcpy(b, p.second.data(), p.second.size());
55+
b += p.second.size();
56+
*b++ = 0;
57+
}
58+
}
3459

3560
// ABI functions exported from envoy to wasm.
3661

src/exports.cc

+2-32
Original file line numberDiff line numberDiff line change
@@ -67,38 +67,6 @@ Pairs toPairs(std::string_view buffer) {
6767
return result;
6868
}
6969

70-
} // namespace
71-
72-
template <typename Pairs> size_t pairsSize(const Pairs &result) {
73-
size_t size = 4; // number of headers
74-
for (auto &p : result) {
75-
size += 8; // size of key, size of value
76-
size += p.first.size() + 1; // null terminated key
77-
size += p.second.size() + 1; // null terminated value
78-
}
79-
return size;
80-
}
81-
82-
template <typename Pairs> void marshalPairs(const Pairs &result, char *buffer) {
83-
char *b = buffer;
84-
*reinterpret_cast<uint32_t *>(b) = result.size();
85-
b += sizeof(uint32_t);
86-
for (auto &p : result) {
87-
*reinterpret_cast<uint32_t *>(b) = p.first.size();
88-
b += sizeof(uint32_t);
89-
*reinterpret_cast<uint32_t *>(b) = p.second.size();
90-
b += sizeof(uint32_t);
91-
}
92-
for (auto &p : result) {
93-
memcpy(b, p.first.data(), p.first.size());
94-
b += p.first.size();
95-
*b++ = 0;
96-
memcpy(b, p.second.data(), p.second.size());
97-
b += p.second.size();
98-
*b++ = 0;
99-
}
100-
}
101-
10270
template <typename Pairs>
10371
bool getPairs(ContextBase *context, const Pairs &result, uint64_t ptr_ptr, uint64_t size_ptr) {
10472
if (result.empty()) {
@@ -117,6 +85,8 @@ bool getPairs(ContextBase *context, const Pairs &result, uint64_t ptr_ptr, uint6
11785
return true;
11886
}
11987

88+
} // namespace
89+
12090
// General ABI.
12191

12292
Word set_property(void *raw_context, Word key_ptr, Word key_size, Word value_ptr, Word value_size) {

0 commit comments

Comments
 (0)