From 5e060ead332527735adbb5d69adda811122998f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20S=C5=82omkowski?= Date: Fri, 30 Oct 2015 02:15:02 +0100 Subject: [PATCH] Add text message sending. --- include/mumlib.hpp | 4 ++-- mumlib_example.cpp | 10 ++++++++++ src/mumlib.cpp | 20 +++++++++++++++----- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/include/mumlib.hpp b/include/mumlib.hpp index 6b3e6fa..67e2855 100644 --- a/include/mumlib.hpp +++ b/include/mumlib.hpp @@ -29,8 +29,6 @@ namespace mumlib { ~Mumlib(); - void setCallback(Callback &callback); - void connect(string host, int port, string user, string password); void disconnect(); @@ -41,6 +39,8 @@ namespace mumlib { void sendAudioData(int16_t *pcmData, int pcmLength); + void sendTextMessage(std::string message); + private: _Mumlib_Private *impl; }; diff --git a/mumlib_example.cpp b/mumlib_example.cpp index 85025cd..e024f19 100644 --- a/mumlib_example.cpp +++ b/mumlib_example.cpp @@ -11,6 +11,16 @@ public: virtual void audio(int16_t *pcm_data, uint32_t pcm_data_size) { mum->sendAudioData(pcm_data, pcm_data_size); } + + virtual void textMessage( + uint32_t actor, + std::vector session, + std::vector channel_id, + std::vector tree_id, + std::string message) { + mumlib::BasicCallback::textMessage(actor, session, channel_id, tree_id, message); + mum->sendTextMessage("someone said: " + message); + } }; int main(int argc, char *argv[]) { diff --git a/src/mumlib.cpp b/src/mumlib.cpp index d360580..16db5b0 100644 --- a/src/mumlib.cpp +++ b/src/mumlib.cpp @@ -30,6 +30,8 @@ namespace mumlib { Audio audio; + int sessionId = 0; + int channelId = 0; _Mumlib_Private(Callback &callback) : _Mumlib_Private(callback, *(new io_service())) { @@ -80,6 +82,9 @@ namespace mumlib { case MessageType::SERVERSYNC: { MumbleProto::ServerSync serverSync; serverSync.ParseFromArray(buffer, length); + + sessionId = serverSync.session(); + callback.serverSync( serverSync.welcome_text(), serverSync.session(), @@ -116,6 +121,8 @@ namespace mumlib { std::copy(channelState.links_remove().begin(), channelState.links_remove().end(), links_remove.begin()); + this->channelId = channel_id; + callback.channelState( channelState.name(), channel_id, @@ -310,15 +317,10 @@ namespace mumlib { delete impl; } - ConnectionState Mumlib::getConnectionState() { return impl->transport.getConnectionState(); } - void Mumlib::setCallback(Callback &callback) { - impl->callback = callback; - } - void Mumlib::connect(string host, int port, string user, string password) { impl->transport.connect(host, port, user, password); } @@ -340,4 +342,12 @@ namespace mumlib { int length = impl->audio.encodeAudioPacket(0, pcmData, pcmLength, encodedData, 5000); impl->transport.sendEncodedAudioPacket(encodedData, length); } + + void Mumlib::sendTextMessage(string message) { + MumbleProto::TextMessage textMessage; + textMessage.set_actor(impl->sessionId); + textMessage.add_channel_id(impl->channelId); + textMessage.set_message(message); + impl->transport.sendControlMessage(MessageType::TEXTMESSAGE, textMessage); + } }