add chat to RsEvent

This commit is contained in:
sehraf 2020-04-03 18:47:14 +02:00
parent 4c4b7ce754
commit 2abd284899
No known key found for this signature in database
GPG Key ID: DF09F6EAE356B2C6
4 changed files with 44 additions and 3 deletions

View File

@ -882,6 +882,13 @@ bool p3ChatService::handleRecvChatMsgItem(RsChatMsgItem *& ci)
mHistoryMgr->addMessage(cm);
if(rsEvents)
{
auto ev = std::make_shared<RsChatMessageEvent>();
ev->mChatMessage = cm;
rsEvents->postEvent(ev);
}
return true ;
}

View File

@ -42,6 +42,22 @@ class p3HistoryMgr;
typedef RsPeerId ChatLobbyVirtualPeerId ;
struct RsChatMessageEvent : RsEvent
{
RsChatMessageEvent() : RsEvent(RsEventType::CHAT_MESSAGE) {}
~RsChatMessageEvent() override = default;
///* @see RsEvent @see RsSerializable
void serial_process( RsGenericSerializer::SerializeJob j, RsGenericSerializer::SerializeContext& ctx ) override
{
RsEvent::serial_process(j, ctx);
RS_SERIAL_PROCESS(mChatMessage);
}
ChatMessage mChatMessage;
};
//!The basic Chat service.
/**
*

View File

@ -94,6 +94,9 @@ enum class RsEventType : uint32_t
/// @see RsFiles
FILE_TRANSFER = 14,
/// @see RsMsgs
CHAT_MESSAGE = 15,
MAX /// Used to detect invalid event type passed
};

View File

@ -426,9 +426,8 @@ public:
}
};
class ChatMessage
struct ChatMessage : RsSerializable
{
public:
ChatId chat_id; // id of chat endpoint
RsPeerId broadcast_peer_id; // only used for broadcast chat: source peer id
RsGxsId lobby_peer_gxs_id; // only used for lobbys: nickname of message author
@ -441,6 +440,22 @@ public:
bool incoming;
bool online; // for outgoing messages: was this message send?
//bool system_message;
///* @see RsEvent @see RsSerializable
void serial_process( RsGenericSerializer::SerializeJob j, RsGenericSerializer::SerializeContext& ctx ) override
{
RS_SERIAL_PROCESS(chat_id);
RS_SERIAL_PROCESS(broadcast_peer_id);
RS_SERIAL_PROCESS(lobby_peer_gxs_id);
RS_SERIAL_PROCESS(peer_alternate_nickname);
RS_SERIAL_PROCESS(chatflags);
RS_SERIAL_PROCESS(sendTime);
RS_SERIAL_PROCESS(recvTime);
RS_SERIAL_PROCESS(msg);
RS_SERIAL_PROCESS(incoming);
RS_SERIAL_PROCESS(online);
}
};
class ChatLobbyInvite : RsSerializable