1 /*
2 ** Jabby (a C library for Jabber protocol)
3 ** Copyright (c) 2002 Hubert Soko�owski <who_ami@tlen.pl>
4 **
5 ** This code is free software; you can redistribute it and/or
6 ** modify it under the terms of the GNU General Public License.
7 **
8 */
9 
10 
11 #include "jabby.h"
12 #include "search.h"
13 
14 #include <string.h>
15 
16 GList *events_list;
17 
jabby_event_new(enum jabby_event_type type)18 jabby_event *jabby_event_new(enum jabby_event_type type)
19 {
20   jabby_event *event;
21 
22   event = g_malloc(sizeof(*event));
23   memset(event, 0, sizeof(*event));
24   event->type = type;
25   switch(type)
26   {
27     case JABBY_EVENT_ERROR:
28       break;
29     case JABBY_EVENT_MESSAGE:
30       break;
31     case JABBY_EVENT_SUBSCRIBE:
32       break;
33     case JABBY_EVENT_SUBSCRIBED:
34       break;
35     case JABBY_EVENT_UNSUBSCRIBE:
36       break;
37     case JABBY_EVENT_UNSUBSCRIBED:
38       break;
39     case JABBY_EVENT_ROSTER_ITEM:
40 //      event->event.roster->jid = g_strdup();
41       break;
42     case JABBY_EVENT_ROSTER_END:
43       break;
44     case JABBY_EVENT_PRESENCE:
45       break;
46     case JABBY_EVENT_UNAUTHORIZED:
47       break;
48     case JABBY_EVENT_CONNECTION_FAILED:
49       break;
50     case JABBY_EVENT_SEARCH_ITEM:
51       break;
52     case JABBY_EVENT_SEARCH_END:
53       break;
54     case JABBY_EVENT_AGENT:
55       break;
56     case JABBY_EVENT_AGENTS_END:
57       break;
58     case JABBY_EVENT_REGISTERED:
59       break;
60     default:
61       g_print("Unknown event type passed to jabby_event_new !\n");
62       g_free(event);
63       return NULL;
64   }
65   return event;
66 }
67 
jabby_event_registered_new()68 jabby_event_registered* jabby_event_registered_new()
69 {
70   jabby_event_registered *reg;
71 
72   reg = g_malloc(sizeof(*reg));
73   memset(reg, 0, sizeof(*reg));
74   return reg;
75 }
76 
jabby_event_agent_new()77 jabby_event_agent* jabby_event_agent_new()
78 {
79   jabby_event_agent *agent;
80 
81   agent = g_malloc(sizeof(*agent));
82   memset(agent, 0, sizeof(*agent));
83   return agent;
84 }
85 
jabby_event_free(jabby_event * event)86 void jabby_event_free(jabby_event *event)
87 {
88   switch(event->type)
89   {
90     case JABBY_EVENT_ROSTER_ITEM:
91       g_free(event->event.roster->jid);
92       g_free(event->event.roster->name);
93       g_free(event->event.roster->group);
94       g_free(event->event.roster->subscription);
95       g_free(event->event.roster);
96       break;
97     case JABBY_EVENT_ERROR:
98       g_free(event->event.error->message);
99       break;
100     case JABBY_EVENT_MESSAGE:
101       g_free(event->event.message->from);
102       g_free(event->event.message->id);
103       g_free(event->event.message->body);
104       g_free(event->event.message->subject);
105       g_free(event->event.message->thread);
106       g_free(event->event.message->error);
107       g_free(event->event.message->delay);
108       break;
109     case JABBY_EVENT_PRESENCE:
110       g_free(event->event.presence->from);
111       g_free(event->event.presence->message);
112       break;
113     case JABBY_EVENT_SUBSCRIBE:
114       g_free(event->event.subscribe->from);
115       g_free(event->event.subscribe->status);
116       break;
117     case JABBY_EVENT_SUBSCRIBED:
118       g_free(event->event.subscribed->from);
119       break;
120     case JABBY_EVENT_UNSUBSCRIBE:
121       g_free(event->event.unsubscribe->from);
122       g_free(event->event.unsubscribe->status);
123       break;
124     case JABBY_EVENT_UNSUBSCRIBED:
125       g_free(event->event.unsubscribed->from);
126       g_free(event->event.unsubscribed->status);
127       break;
128     case JABBY_EVENT_SEARCH_ITEM:
129        jabby_search_res_free(event->event.search);
130       break;
131     case JABBY_EVENT_AGENT:
132       g_free(event->event.agent->jid);
133       g_free(event->event.agent->name);
134       g_free(event->event.agent->service);
135       g_free(event->event.agent->transport);
136       g_free(event->event.agent);
137       break;
138     case JABBY_EVENT_REGISTERED:
139       g_free(event->event.registered->to);
140       g_free(event->event.registered);
141       break;
142     default:
143       break;
144   }
145   g_free(event);
146 }
147 
jabby_event_add(jabby_event * event)148 void jabby_event_add(jabby_event *event)
149 {
150   events_list = g_list_append(events_list, event);
151 }
152 
jabby_event_get()153 jabby_event *jabby_event_get()
154 {
155   jabby_event *event = NULL;
156   GList *first;
157 
158   first = g_list_first(events_list);
159   if(first)
160   {
161     event = (jabby_event*) first->data;
162     events_list = g_list_remove(events_list, first->data);
163   }
164   return event;
165 }
166 
167