aboutsummaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2016-11-27 10:08:19 +0100
committerDennis Brentjes <d.brentjes@gmail.com>2016-11-27 10:08:19 +0100
commit74cea534fd189a2db423ae60997447e66265922b (patch)
treedecc06fa5da1f3f42612d527462d22ee487bf2db /client
parentfa7a48172a3c9d9c2f96d6f9c05d80f497bc304d (diff)
downloadcmix-74cea534fd189a2db423ae60997447e66265922b.tar.gz
cmix-74cea534fd189a2db423ae60997447e66265922b.tar.bz2
cmix-74cea534fd189a2db423ae60997447e66265922b.zip
Implements message delivery.
Adds a minimum number of messages per mix. Embeds the destination in the message. Clients now send messages to themselves.
Diffstat (limited to 'client')
-rw-r--r--client/cmixclient.cpp38
-rw-r--r--client/cmixclient.hpp3
2 files changed, 31 insertions, 10 deletions
diff --git a/client/cmixclient.cpp b/client/cmixclient.cpp
index 861a6ac..5109b81 100644
--- a/client/cmixclient.cpp
+++ b/client/cmixclient.cpp
@@ -42,9 +42,10 @@ void CMixClient::initialize_connections() {
cmix_proto::ImAClient imaclient;
char* id;
- get_pub_key_hash(&cmix_ctx, &id);
+ size_t len;
+ get_pub_key_hash(&cmix_ctx, &id, &len);
- imaclient.set_id(id);
+ imaclient.set_id(id, len);
free(id);
BOOST_LOG_TRIVIAL(trace) << "sending imaclient to node: " << i;
@@ -59,6 +60,11 @@ void CMixClient::initialize_connections() {
}
}
+void CMixClient::handle_payload(cmix_proto::Payload pl)
+{
+ std::cout << "Received message: " << pl.payload() << std::endl;
+}
+
void CMixClient::handle_key_exchange(size_t node_id, cmix_proto::KeyExchange const& ke)
{
key_exchange_initiator(
@@ -71,9 +77,18 @@ void CMixClient::handle_key_exchange(size_t node_id, cmix_proto::KeyExchange con
if(std::all_of(shared_values.begin(), shared_values.end(), [](GroupElement const& value){return value != nullptr;})) {
size_t len = get_group_element_array_size(&cmix_ctx);
+
std::vector<char> vec(len, '\0');
+
+ char* id;
+ size_t id_len;
+
+ get_pub_key_hash(&cmix_ctx, &id, &id_len);
std::string s = "abcdefghijklmnopqrstuvwxyz";
- std::copy_n(s.begin(), s.size(), vec.begin() + 1);
+
+ create_message(&cmix_ctx, vec.data(), id, id_len, s.data(), s.size());
+
+ free(id);
cmix_proto::UserMessage message;
message.mutable_m()->resize(len);
@@ -83,12 +98,12 @@ void CMixClient::handle_key_exchange(size_t node_id, cmix_proto::KeyExchange con
BOOST_LOG_TRIVIAL(trace) << "sending UserMessage: " << message.ShortDebugString();
network_connections.at(0).async_send(message);
-// size_t last_node_id = network_details.node_details.size() - 1;
-// network_connections.at(last_node_id).async_receive(
-// [this, last_node_id](cmix_proto::CMixMessage const& message) {
-// handle_message(last_node_id, message);
-// }
-// );
+ size_t last_node_id = network_details.node_details.size() - 1;
+ network_connections.at(last_node_id).async_receive(
+ [this, last_node_id](cmix_proto::CMixMessage const& message) {
+ handle_message(last_node_id, message);
+ }
+ );
}
}
@@ -114,6 +129,11 @@ void CMixClient::handle_message(size_t node_id, cmix_proto::CMixMessage message)
key_exchange(node_id);
return;
}
+ case cmix_proto::CMixMessage::ContentsCase::kPayload: {
+ BOOST_LOG_TRIVIAL(trace) << "handling Payload: ";
+ handle_payload(message.payload());
+ return;
+ }
default: {
BOOST_LOG_TRIVIAL(error) << "Received unknown message";
}
diff --git a/client/cmixclient.hpp b/client/cmixclient.hpp
index 30c096d..6291bd1 100644
--- a/client/cmixclient.hpp
+++ b/client/cmixclient.hpp
@@ -61,9 +61,10 @@ class CMixClient {
void initialize_connections();
+ void handle_payload(cmix_proto::Payload pl);
void handle_key_exchange(size_t node_id, cmix_proto::KeyExchange const& ke);
-
void handle_message(size_t node_id, cmix_proto::CMixMessage message);
+
public:
/*!