diff options
Diffstat (limited to 'Sluift/client.cpp')
| -rw-r--r-- | Sluift/client.cpp | 38 | 
1 files changed, 32 insertions, 6 deletions
| diff --git a/Sluift/client.cpp b/Sluift/client.cpp index 75f675d..24ece85 100644 --- a/Sluift/client.cpp +++ b/Sluift/client.cpp @@ -1,12 +1,10 @@  /* - * Copyright (c) 2013-2017 Isode Limited. + * Copyright (c) 2013-2018 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */  #include <boost/assign/list_of.hpp> -#include <boost/lambda/bind.hpp> -#include <boost/lambda/lambda.hpp>  #include <Swiften/Base/IDGenerator.h>  #include <Swiften/Disco/ClientDiscoManager.h> @@ -42,7 +40,6 @@  #include <Sluift/globals.h>  using namespace Swift; -namespace lambda = boost::lambda;  static inline SluiftClient* getClient(lua_State* L) {      return *Lua::checkUserData<SluiftClient>(L, 1); @@ -602,6 +599,33 @@ static void pushEvent(lua_State* L, const SluiftClient::Event& event) {              Lua::registerTableToString(L, -1);              break;          } +        case SluiftClient::Event::RosterAddType: { +            Lua::Table result = boost::assign::map_list_of +                ("type", std::make_shared<Lua::Value>(std::string("rosterpush"))) +                ("jid",  std::make_shared<Lua::Value>(event.item.toString())) +                ("action", std::make_shared<Lua::Value>(std::string("added"))); +            Lua::pushValue(L, result); +            Lua::registerTableToString(L, -1); +            break; +        } +        case SluiftClient::Event::RosterRemoveType: { +            Lua::Table result = boost::assign::map_list_of +                ("type", std::make_shared<Lua::Value>(std::string("rosterpush"))) +                ("jid",  std::make_shared<Lua::Value>(event.item.toString())) +                ("action", std::make_shared<Lua::Value>(std::string("removed"))); +            Lua::pushValue(L, result); +            Lua::registerTableToString(L, -1); +            break; +        } +        case SluiftClient::Event::RosterUpdateType: { +            Lua::Table result = boost::assign::map_list_of +                ("type", std::make_shared<Lua::Value>(std::string("rosterpush"))) +                ("jid",  std::make_shared<Lua::Value>(event.item.toString())) +                ("action", std::make_shared<Lua::Value>(std::string("updated"))); +            Lua::pushValue(L, result); +            Lua::registerTableToString(L, -1); +            break; +        }      }  } @@ -659,7 +683,9 @@ SLUIFT_LUA_FUNCTION(Client, get_next_event) {      }      else if (type) {          event = client->getNextEvent( -                timeout, lambda::bind(&SluiftClient::Event::type, lambda::_1) == *type); +                timeout, [&](const SluiftClient::Event& event) { +                    return event.type == *type; +                });      }      else {          event = client->getNextEvent(timeout); @@ -701,7 +727,7 @@ SLUIFT_LUA_FUNCTION_WITH_HELP(          lua_getfield(L, 2, "groups");          if (!lua_isnil(L, -1)) {              if (lua_type(L, -1) == LUA_TTABLE) { -                for (size_t i = 1; i <= lua_objlen(L, -1); ++i) { +                for (size_t i = 1; i <= lua_rawlen(L, -1); ++i) {                      lua_rawgeti(L, -1, boost::numeric_cast<int>(i));                      const char* rawGroup = lua_tostring(L, -1);                      if (rawGroup) { | 
 Swift
 Swift