aboutsummaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2016-11-18 14:34:20 +0100
committerDennis Brentjes <d.brentjes@gmail.com>2016-11-18 14:34:20 +0100
commit5a3f32ff25e7672ebc453818e7aa01ae84598ce7 (patch)
tree6279bd29963ed82d4442fd42784b61313dedaea8 /node
parent7f2ae6e37f6e78d7edd561e7c2f91e69e93be85b (diff)
downloadcmix-5a3f32ff25e7672ebc453818e7aa01ae84598ce7.tar.gz
cmix-5a3f32ff25e7672ebc453818e7aa01ae84598ce7.tar.bz2
cmix-5a3f32ff25e7672ebc453818e7aa01ae84598ce7.zip
The Precomputation postprocess step is now done on batch level.
Diffstat (limited to 'node')
-rw-r--r--node/node_node.cpp47
1 files changed, 23 insertions, 24 deletions
diff --git a/node/node_node.cpp b/node/node_node.cpp
index f6e5071..63a44df 100644
--- a/node/node_node.cpp
+++ b/node/node_node.cpp
@@ -90,35 +90,34 @@ template <typename T>
cmix_proto::PrePost fill_precomputation_post_message(CMixContext& ctx, T const& rs, T const& ms) {
cmix_proto::PrePost prepost;
+ size_t len = get_group_element_array_size(&ctx);
+
+ std::vector<char*> r_epirs(ms.size(), nullptr);
+ std::vector<char*> m_epirs(ms.size(), nullptr);
+ std::vector<char const*> rsv(ms.size(), nullptr);
+ std::vector<char const*> msv(ms.size(), nullptr);
for(size_t i = 0; i < ms.size(); ++i) {
- prepost.add_r_epirs();
- prepost.add_m_epirs();
-
- size_t el_len = get_group_element_array_size(&ctx);
-
- prepost.mutable_r_epirs(i)->resize(el_len);
- prepost.mutable_m_epirs(i)->resize(el_len);
+ std::string* r = prepost.add_r_epirs();
+ r->resize(len);
+ r_epirs[i] = &(*r)[0];
- post_process(
- &ctx,
- &(*prepost.mutable_r_epirs(i))[0],
- &(*prepost.mutable_m_epirs(i))[0],
- rs.Get(i).data(),
- ms.Get(i).data(),
- i
- );
+ std::string* m = prepost.add_m_epirs();
+ m->resize(len);
+ m_epirs[i] = &(*m)[0];
- {
- std::stringstream ss;
- ss << "pirs: ";
- std::string pirs = to_string(ctx.pirs[i], ctx);
- for(auto&& c : pirs) {
- ss << "\\" << std::setw(3) << std::setfill('0') << std::oct << (unsigned int) c;
- }
- BOOST_LOG_TRIVIAL(trace) << ss.str();
- }
+ rsv[i] = rs.Get(i).data();
+ msv[i] = ms.Get(i).data();
}
+ post_process(
+ &ctx,
+ r_epirs.data(),
+ m_epirs.data(),
+ rsv.data(),
+ msv.data(),
+ ms.size()
+ );
+
return prepost;
}