static void text_send (TpSvcChannelTypeText *iface, guint type, const gchar *text, DBusGMethodInvocation *context) { /* silently swallow the message */ tp_svc_channel_type_text_return_from_send (context); }
static void text_send (TpSvcChannelTypeText *iface, guint type, const gchar *text, DBusGMethodInvocation *context) { ExampleEchoChannel *self = EXAMPLE_ECHO_CHANNEL (iface); time_t timestamp = time (NULL); gchar *echo; guint echo_type = type; /* Send should return just before Sent is emitted. */ tp_svc_channel_type_text_return_from_send (context); /* Tell the client that the message was submitted for sending */ tp_svc_channel_type_text_emit_sent ((GObject *) self, timestamp, type, text); /* Pretend that the remote contact has replied. Normally, you'd * call tp_text_mixin_receive or tp_text_mixin_receive_with_flags * in response to network events */ switch (type) { case TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL: echo = g_strdup_printf ("You said: %s", text); break; case TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION: echo = g_strdup_printf ("notices that the user %s", text); break; case TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE: echo = g_strdup_printf ("You sent a notice: %s", text); break; default: echo = g_strdup_printf ("You sent some weird message type, %u: \"%s\"", type, text); echo_type = TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL; } tp_text_mixin_receive ((GObject *) self, echo_type, self->priv->handle, timestamp, echo); g_free (echo); }