Gadu-Gadu: initial multilogon support (2) soc.2012.gg

Tue, 07 Aug 2012 20:23:59 +0200

author
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
date
Tue, 07 Aug 2012 20:23:59 +0200
branch
soc.2012.gg
changeset 33335
a6356adbe365
parent 33334
734fc6da6179
child 33336
7c97b5dd3bf4

Gadu-Gadu: initial multilogon support (2)

libpurple/protocols/gg/multilogon.c file | annotate | diff | comparison | revisions
libpurple/protocols/gg/multilogon.h file | annotate | diff | comparison | revisions
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/gg/multilogon.c	Tue Aug 07 20:23:59 2012 +0200
@@ -0,0 +1,65 @@
+#include "multilogon.h"
+
+#include <debug.h>
+
+#include "gg.h"
+
+struct _ggp_multilogon_session_data
+{
+	int session_count;
+};
+
+static inline ggp_multilogon_session_data *
+ggp_multilogon_get_mldata(PurpleConnection *gc);
+
+////////////
+
+static inline ggp_multilogon_session_data *
+ggp_multilogon_get_mldata(PurpleConnection *gc)
+{
+	GGPInfo *accdata = purple_connection_get_protocol_data(gc);
+	return accdata->multilogon_data;
+}
+
+void ggp_multilogon_setup(PurpleConnection *gc)
+{
+	GGPInfo *accdata = purple_connection_get_protocol_data(gc);
+	
+	ggp_multilogon_session_data *mldata = g_new0(ggp_multilogon_session_data, 1);
+	accdata->multilogon_data = mldata;
+}
+
+void ggp_multilogon_cleanup(PurpleConnection *gc)
+{
+	ggp_multilogon_session_data *mldata = ggp_multilogon_get_mldata(gc);
+	g_free(mldata);
+}
+
+void ggp_multilogon_msg(PurpleConnection *gc, struct gg_event_msg *msg)
+{
+	ggp_recv_message_handler(gc, msg, TRUE);
+}
+
+void ggp_multilogon_info(PurpleConnection *gc,
+	struct gg_event_multilogon_info *info)
+{
+	ggp_multilogon_session_data *mldata = ggp_multilogon_get_mldata(gc);
+	int i;
+	
+	purple_debug_info("gg", "ggp_multilogon_info: session list changed\n");
+	for (i = 0; i < info->count; i++)
+	{
+		purple_debug_misc("gg", "ggp_multilogon_info: "
+			"session [%s] logged in at %lu\n",
+			info->sessions[i].name,
+			info->sessions[i].logon_time);
+	}
+
+	mldata->session_count = info->count;
+}
+
+int ggp_multilogon_get_session_count(PurpleConnection *gc)
+{
+	ggp_multilogon_session_data *mldata = ggp_multilogon_get_mldata(gc);
+	return mldata->session_count;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/gg/multilogon.h	Tue Aug 07 20:23:59 2012 +0200
@@ -0,0 +1,18 @@
+#ifndef _GGP_MULTILOGON_H
+#define _GGP_MULTILOGON_H
+
+#include <internal.h>
+#include <libgadu.h>
+
+typedef struct _ggp_multilogon_session_data ggp_multilogon_session_data;
+
+void ggp_multilogon_setup(PurpleConnection *gc);
+void ggp_multilogon_cleanup(PurpleConnection *gc);
+
+void ggp_multilogon_msg(PurpleConnection *gc, struct gg_event_msg *msg);
+void ggp_multilogon_info(PurpleConnection *gc,
+	struct gg_event_multilogon_info *msg);
+
+int ggp_multilogon_get_session_count(PurpleConnection *gc);
+
+#endif /* _GGP_MULTILOGON_H */

mercurial