From acd19fa05d8a7fa2ebac9d6534ee203368f1a3e9 Mon Sep 17 00:00:00 2001 From: Edwin Mons Date: Tue, 26 Nov 2013 09:31:09 +0100 Subject: Add presence_type to presence event Change-Id: I3de5cd5ce1d84d6ce6a4b02af939ed5e0eb721f0 diff --git a/Sluift/client.cpp b/Sluift/client.cpp index c1be73e..2ca62d6 100644 --- a/Sluift/client.cpp +++ b/Sluift/client.cpp @@ -325,7 +325,7 @@ SLUIFT_LUA_FUNCTION(Client, set_options) { } lua_getfield(L, 2, "port"); if (!lua_isnil(L, -1)) { - client->getOptions().manualPort = lua_tointeger(L, -1); + client->getOptions().manualPort = boost::numeric_cast(lua_tointeger(L, -1)); } lua_getfield(L, 2, "ack"); if (!lua_isnil(L, -1)) { @@ -352,6 +352,23 @@ SLUIFT_LUA_FUNCTION(Client, set_options) { return 0; } +static std::string convertPresenceTypeToString(Presence::Type type) { + std::string result; + + switch (type) { + case Presence::Available: result = "available"; break; + case Presence::Error: result = "error"; break; + case Presence::Probe: result = "probe"; break; + case Presence::Subscribe: result = "subscribe"; break; + case Presence::Subscribed: result = "subscribed"; break; + case Presence::Unavailable: result = "unavailable"; break; + case Presence::Unsubscribe: result = "unsubscribe"; break; + case Presence::Unsubscribed: result = "unsubscribed"; break; + } + + return result; +} + static void pushEvent(lua_State* L, const SluiftClient::Event& event) { switch (event.type) { case SluiftClient::Event::MessageType: { @@ -369,7 +386,8 @@ static void pushEvent(lua_State* L, const SluiftClient::Event& event) { Lua::Table result = boost::assign::map_list_of ("type", boost::make_shared(std::string("presence"))) ("from", boost::make_shared(presence->getFrom().toString())) - ("status", boost::make_shared(presence->getStatus())); + ("status", boost::make_shared(presence->getStatus())) + ("presence_type", boost::make_shared(convertPresenceTypeToString(presence->getType()))); Lua::pushValue(L, result); if (!presence->getPayloads().empty()) { const std::vector > payloads = presence->getPayloads(); -- cgit v0.10.2-6-g49f6