Message system now uses queues instead of vectors.
This commit is contained in:
parent
7f7f9ae047
commit
b1aa31403b
@ -36,15 +36,15 @@ extern "C" {
|
||||
* @brief A structure with necessary variables for other users.
|
||||
*/
|
||||
struct NeoComm_user {
|
||||
const char *nick; ///< The alias used by the user.
|
||||
const char *hash; ///< The unique hash of the user.
|
||||
char *nick; ///< The alias used by the user.
|
||||
char *hash; ///< The unique hash of the user.
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Structure with relevant message information.
|
||||
*/
|
||||
struct NeoComm_message {
|
||||
const char *msg; ///< The text message.
|
||||
char *msg; ///< The text message.
|
||||
time_t sent; ///< The time it was sent.
|
||||
struct NeoComm_user from; ///< Info on the peer who sent the message.
|
||||
};
|
||||
@ -176,9 +176,7 @@ struct NeoComm_message *NeoComm_get_next_message(const char *channel_name);
|
||||
*
|
||||
* @param msg The message to free from memory.
|
||||
*/
|
||||
static inline void NeoComm_free_message(struct NeoComm_message *msg) {
|
||||
free(msg);
|
||||
}
|
||||
void NeoComm_free_message(struct NeoComm_message *msg);
|
||||
|
||||
/**
|
||||
* @brief Send a message to a channel.
|
||||
|
@ -64,10 +64,10 @@ int NeoComm_join_channel(const char *channel_name) {
|
||||
/*.hash =*/ chan_hash,
|
||||
/*.token =*/ node.listen<dht::ImMessage>(chan_hash,
|
||||
[&](dht::ImMessage &&msg) {
|
||||
channels[s_chan_name].msgs.push_back(msg);
|
||||
channels[s_chan_name].msgs.push(msg);
|
||||
return true;
|
||||
}),
|
||||
/*.msgs = */ std::vector<dht::ImMessage>()
|
||||
/*.msgs =*/ std::queue<dht::ImMessage>()
|
||||
};
|
||||
|
||||
return 1;
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
#include <opendht.h>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <future>
|
||||
@ -28,7 +28,7 @@
|
||||
struct channel_info {
|
||||
dht::InfoHash hash;
|
||||
std::future<size_t> token;
|
||||
std::vector<dht::ImMessage> msgs;
|
||||
std::queue<dht::ImMessage> msgs;
|
||||
};
|
||||
|
||||
extern dht::DhtRunner node;
|
||||
|
@ -36,18 +36,23 @@ struct NeoComm_message *NeoComm_get_next_message(const char *channel_name) {
|
||||
struct NeoComm_message *msg =
|
||||
static_cast<struct NeoComm_message*>(malloc(sizeof(struct NeoComm_message)));
|
||||
|
||||
*msg = {
|
||||
/*.msg =*/ new_msg->msg.c_str(),
|
||||
/*.sent =*/ new_msg->date,
|
||||
/*.from =*/ {
|
||||
/*.nick =*/ "DEFAULT", // TODO: Implement this!!!
|
||||
/*.hash =*/ new_msg->from.to_c_str()
|
||||
}
|
||||
};
|
||||
msg->msg = static_cast<char*>(malloc(new_msg->msg.size()));
|
||||
strcpy(msg->msg, new_msg->msg.c_str());
|
||||
msg->sent = new_msg->date;
|
||||
msg->from.nick = NULL; // TODO: Implement this!
|
||||
msg->from.hash = static_cast<char*>(malloc(strlen(new_msg->from.to_c_str())));
|
||||
strcpy(msg->from.hash, new_msg->from.to_c_str());
|
||||
channels[s_chan_name].msgs.pop();
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
void NeoComm_free_message(struct NeoComm_message *msg) {
|
||||
free(msg->msg);
|
||||
free(msg->from.hash);
|
||||
free(msg);
|
||||
}
|
||||
|
||||
time_t NeoComm_send_message(const char *channel_name, const char *message) {
|
||||
if(not node.isRunning())
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user