예제 #1
0
static void
sig_recv_message(XMPP_SERVER_REC *server, LmMessage *lmsg, const int type,
    const char *id, const char *from, const char *to)
{
	LmMessageNode *node;

	if ((type != LM_MESSAGE_SUB_TYPE_NOT_SET
	    && type != LM_MESSAGE_SUB_TYPE_HEADLINE
	    && type != LM_MESSAGE_SUB_TYPE_NORMAL
	    && type != LM_MESSAGE_SUB_TYPE_CHAT)
	    || server->ischannel(SERVER(server), from))
		return;
	node = lm_find_node(lmsg->node, "x", XMLNS, XMLNS_EVENT);
	if (node == NULL) {
		signal_emit("xmpp composing hide", 2, server, from);
		return;
	}
	if (lm_message_node_get_child(lmsg->node, "body") != NULL
	    || lm_message_node_get_child(lmsg->node, "subject") != NULL) {
		if (lm_message_node_get_child(node, "composing") != NULL)
			datalist_add(composings, server, from, g_strdup(id));
		else
			datalist_remove(composings, server, from);
		signal_emit("xmpp composing hide", 2, server, from);
	} else {
		if (lm_message_node_get_child(node, "composing") != NULL)
			signal_emit("xmpp composing show", 2, server, from);
		else
			signal_emit("xmpp composing hide", 2, server, from);
	}
}
예제 #2
0
static void
sig_offline(XMPP_SERVER_REC *server, const char *jid)
{
	g_return_if_fail(IS_XMPP_SERVER(server));
	datalist_remove(composings, server, jid);
}
예제 #3
0
  ck_assert_str_eq(data_tostring(data_uncopy(datalist_get(list_null, 0))), "push");
END_TEST

START_TEST(test_datalist_pop)
  data_t *pop;

  pop = datalist_pop(list_valist);
  check_list(list_valist, 1);
  ck_assert_int_eq(_data_intval(pop), 42);
  data_free(pop);
END_TEST

START_TEST(test_datalist_remove)
  data_t *removed;

  removed = datalist_remove(list_array, 1);
  check_list(list_array, 3);
  ck_assert_ptr_eq(removed, data_true());
  data_free(removed);
END_TEST

START_TEST(test_datalist_set)
  datalist_set(list_array, 2, str_wrap("at2"));
  check_list(list_array, 4);
  ck_assert_str_eq(data_tostring(data_uncopy(datalist_get(list_array, 2))), "at2");

  datalist_set(list_array, 6, str_wrap("at6"));
  check_list(list_array, 7);
  ck_assert_str_eq(data_tostring(data_uncopy(datalist_get(list_array, 6))), "at6");
END_TEST