summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2013-08-16 21:11:56 (GMT)
committerRemko Tronçon <git@el-tramo.be>2013-08-17 09:32:03 (GMT)
commit92ffd5b909badeafabbf73b73a6946a5440c8be5 (patch)
treea33a6086ace038c63751403ae29573ae161846b2 /Sluift/sluift.cpp
parentac6ff12e174b832326c6d89784d4c5e53044eecf (diff)
downloadswift-contrib-92ffd5b909badeafabbf73b73a6946a5440c8be5.zip
swift-contrib-92ffd5b909badeafabbf73b73a6946a5440c8be5.tar.bz2
Fix building sluift as .dll on Mac OS X.
Change-Id: Ia8043d66ef676048e7fe1d0347b65e8d64aa3bd5
Diffstat (limited to 'Sluift/sluift.cpp')
-rw-r--r--Sluift/sluift.cpp114
1 files changed, 8 insertions, 106 deletions
diff --git a/Sluift/sluift.cpp b/Sluift/sluift.cpp
index 0a653bb..397d7f3 100644
--- a/Sluift/sluift.cpp
+++ b/Sluift/sluift.cpp
@@ -1,4 +1,4 @@
/*
- * Copyright (c) 2011 Remko Tronçon
+ * Copyright (c) 2011-2013 Remko Tronçon
* Licensed under the GNU General Public License v3.
* See Documentation/Licenses/GPLv3.txt for more information.
@@ -18,7 +18,7 @@
#include "Watchdog.h"
-#include "SluiftException.h"
#include "ResponseSink.h"
#include "Lua/Value.h"
+#include "ClientHelpers.h"
using namespace Swift;
@@ -43,5 +43,5 @@ static BoostNetworkFactories networkFactories(&eventLoop);
class SluiftClient {
public:
- SluiftClient(const JID& jid, const std::string& password) : tracer(NULL) {
+ SluiftClient(const JID& jid, const std::string& password, lua_State* L) : L(L), tracer(NULL) {
client = new Client(jid, password, &networkFactories);
client->setAlwaysTrustCertificates();
@@ -86,5 +86,5 @@ class SluiftClient {
if (watchdog.getTimedOut()) {
client->disconnect();
- throw SluiftException("Timeout while connecting");
+ luaL_error(L, "Timeout while connecting");
}
}
@@ -184,9 +184,10 @@ class SluiftClient {
void handleDisconnected(const boost::optional<ClientError>& error) {
if (error) {
- throw SluiftException(*error);
+ luaL_error(L, getClientErrorString(*error).c_str());
}
}
private:
+ lua_State* L;
Client* client;
ClientOptions options;
@@ -206,5 +207,4 @@ static inline SluiftClient* getClient(lua_State* L) {
static int sluift_client_connect(lua_State *L) {
- try {
SluiftClient* client = getClient(L);
std::string host;
@@ -221,28 +221,14 @@ static int sluift_client_connect(lua_State *L) {
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_async_connect(lua_State *L) {
- try {
getClient(L)->connect();
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_wait_connected(lua_State *L) {
- try {
getClient(L)->waitConnected();
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_is_connected(lua_State *L) {
@@ -252,15 +238,9 @@ static int sluift_client_is_connected(lua_State *L) {
static int sluift_client_disconnect(lua_State *L) {
- try {
getClient(L)->disconnect();
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_set_version(lua_State *L) {
- try {
eventLoop.runOnce();
@@ -278,11 +258,6 @@ static int sluift_client_set_version(lua_State *L) {
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_get_contacts(lua_State *L) {
- try {
eventLoop.runOnce();
@@ -309,11 +284,6 @@ static int sluift_client_get_contacts(lua_State *L) {
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_get_version(lua_State *L) {
- try {
SluiftClient* client = getClient(L);
int timeout = -1;
@@ -359,11 +329,6 @@ static int sluift_client_get_version(lua_State *L) {
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_send_message(lua_State *L) {
- try {
eventLoop.runOnce();
@@ -372,11 +337,6 @@ static int sluift_client_send_message(lua_State *L) {
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_send_presence(lua_State *L) {
- try {
eventLoop.runOnce();
@@ -385,11 +345,6 @@ static int sluift_client_send_presence(lua_State *L) {
return 0;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_get(lua_State *L) {
- try {
SluiftClient* client = getClient(L);
JID jid;
@@ -418,11 +373,6 @@ static int sluift_client_get(lua_State *L) {
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_set(lua_State *L) {
- try {
SluiftClient* client = getClient(L);
JID jid;
@@ -451,11 +401,6 @@ static int sluift_client_set(lua_State *L) {
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_send(lua_State *L) {
- try {
eventLoop.runOnce();
@@ -464,8 +409,4 @@ static int sluift_client_send(lua_State *L) {
return 0;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_set_options(lua_State* L) {
@@ -510,5 +451,4 @@ static void pushEvent(lua_State* L, Stanza::ref event) {
static int sluift_client_for_event(lua_State *L) {
- try {
eventLoop.runOnce();
@@ -541,11 +481,6 @@ static int sluift_client_for_event(lua_State *L) {
}
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_get_next_event(lua_State *L) {
- try {
eventLoop.runOnce();
@@ -558,12 +493,7 @@ static int sluift_client_get_next_event(lua_State *L) {
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_add_contact(lua_State* L) {
- try {
eventLoop.runOnce();
SluiftClient* client = getClient(L);
@@ -622,11 +552,6 @@ static int sluift_client_add_contact(lua_State* L) {
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_remove_contact(lua_State* L) {
- try {
eventLoop.runOnce();
SluiftClient* client = getClient(L);
@@ -645,11 +570,6 @@ static int sluift_client_remove_contact(lua_State* L) {
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_confirm_subscription(lua_State* L) {
- try {
eventLoop.runOnce();
SluiftClient* client = getClient(L);
@@ -658,11 +578,6 @@ static int sluift_client_confirm_subscription(lua_State* L) {
return 0;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_cancel_subscription(lua_State* L) {
- try {
eventLoop.runOnce();
SluiftClient* client = getClient(L);
@@ -671,8 +586,4 @@ static int sluift_client_cancel_subscription(lua_State* L) {
return 0;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_client_gc (lua_State *L) {
@@ -712,5 +623,5 @@ static const luaL_reg sluift_client_functions[] = {
static int sluift_new_client(lua_State *L) {
- try {
+ luaL_checkstring(L, 1);
JID jid(std::string(luaL_checkstring(L, 1)));
std::string password(luaL_checkstring(L, 2));
@@ -720,11 +631,7 @@ static int sluift_new_client(lua_State *L) {
lua_setmetatable(L, -2);
- *client = new SluiftClient(jid, password);
+ *client = new SluiftClient(jid, password, L);
return 1;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_jid_to_bare(lua_State *L) {
@@ -753,5 +660,4 @@ static int sluift_jid_resource(lua_State *L) {
static int sluift_sleep(lua_State *L) {
- try {
eventLoop.runOnce();
@@ -764,8 +670,4 @@ static int sluift_sleep(lua_State *L) {
return 0;
}
- catch (const SluiftException& e) {
- return luaL_error(L, e.getReason().c_str());
- }
-}
static int sluift_index(lua_State *L) {