-
-#include <glib.h>
-#include <string.h>
-#include <stdlib.h>
-#include <loudmouth/loudmouth.h>
-#ifdef __WIN32__
-#include <winsock2.h>
-#endif
-
-typedef struct _loudgame {
- gchar *server;
- gchar *name;
- gchar *passwd;
- LmConnection *connection;
- GMainLoop *main_loop;
- int return_value;
-} loudgame_t;
-
-static void
-loudgame_quit (loudgame_t *lg, int return_value)
-{
- GError *error;
-
- lg->return_value = return_value;
-
- if (! lm_connection_close (lg->connection, &error))
- g_print ("An error occurred during lm_connection_close: %s\n",
- error->message);
-
- lm_connection_unref (lg->connection);
-
- g_main_loop_quit (lg->main_loop);
-}
-
-static void
-authentication_cb (LmConnection *connection, gboolean result, gpointer closure)
-{
- LmMessage *m;
- loudgame_t *lg = closure;
-
- if (! result) {
- g_print ("Authentication for %s failed\n", lg->name);
- loudgame_quit (lg, 1);
- return;
- }
-
- m = lm_message_new_with_sub_type (NULL,
- LM_MESSAGE_TYPE_PRESENCE,
- LM_MESSAGE_SUB_TYPE_AVAILABLE);
-
- lm_connection_send (connection, m, NULL);
- lm_message_unref (m);
-}
-
-static void
-connection_open_cb (LmConnection *connection, gboolean result, loudgame_t *lg)
-{
- lm_connection_authenticate (connection,
- lg->name, lg->passwd, "TestLM",
- authentication_cb, lg, FALSE, NULL);
-}
-
-static void
-send_reply (LmConnection *connection,
- const char *peer,
- const char *message,
- loudgame_t *lg)
-{
- LmMessage *reply;
- gboolean result;
- GError *error = NULL;
-
- reply = lm_message_new (peer, LM_MESSAGE_TYPE_MESSAGE);