static void
gibber_file_transfer_set_property (GObject *object,
                                   guint property_id,
                                   const GValue *value,
                                   GParamSpec *pspec)
{
  GibberFileTransfer *self = GIBBER_FILE_TRANSFER (object);

  switch (property_id)
    {
      case PROP_ID:
        self->id = g_value_dup_string (value);
        if (self->id == NULL)
          self->id = generate_id ();
        break;
      case PROP_SELF_ID:
        self->self_id = g_value_dup_string (value);
        if (self->self_id == NULL)
          g_critical ("'self-id' cannot be NULL");
        break;
      case PROP_PEER_ID:
        self->peer_id = g_value_dup_string (value);
        if (self->peer_id == NULL)
          g_critical ("'peer-id' cannot be NULL");
        break;
      case PROP_FILENAME:
        self->filename = g_value_dup_string (value);
        break;
      case PROP_DIRECTION:
        self->direction = g_value_get_uint (value);
        break;
      case PROP_PORTER:
        {
          self->priv->porter = g_value_dup_object (value);

          self->priv->stanza_id =
            wocky_porter_register_handler_from_anyone (self->priv->porter,
                WOCKY_STANZA_TYPE_IQ, WOCKY_STANZA_SUB_TYPE_NONE,
                WOCKY_PORTER_HANDLER_PRIORITY_NORMAL, received_stanza_cb,
                self, NULL);
        }
        break;
      case PROP_CONTACT:
        self->priv->contact = g_value_dup_object (value);
        break;
      case PROP_DESCRIPTION:
        self->description = g_value_dup_string (value);
        break;
      case PROP_CONTENT_TYPE:
        self->content_type = g_value_dup_string (value);
        break;
      default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
        break;
    }
}
Пример #2
0
static void
porter_available_cb (
    GabbleConnection *conn,
    WockyPorter *porter,
    gpointer user_data)
{
  GabbleImFactory *self = GABBLE_IM_FACTORY (user_data);
  gchar *stream_server;

  DEBUG ("adding callbacks");
  self->priv->message_cb_id = wocky_porter_register_handler_from_anyone (porter,
      WOCKY_STANZA_TYPE_MESSAGE, WOCKY_STANZA_SUB_TYPE_NONE,
      WOCKY_PORTER_HANDLER_PRIORITY_MIN, im_factory_message_cb, self,
      NULL);
  self->priv->delivery_report_cb_id = wocky_porter_register_handler_from_anyone (porter,
      WOCKY_STANZA_TYPE_MESSAGE, WOCKY_STANZA_SUB_TYPE_NONE,
      WOCKY_PORTER_HANDLER_PRIORITY_MIN, im_factory_receipt_cb, self,
      '(',
        "received", ':', NS_RECEIPTS,
      ')', NULL);

  g_object_get (conn, "stream-server", &stream_server, NULL);

  if (!tp_strdiff (stream_server, "chat.facebook.com"))
    {
      wocky_porter_register_handler_from (
          porter, WOCKY_STANZA_TYPE_IQ, WOCKY_STANZA_SUB_TYPE_SET,
          /* We could use _from_server() if that accepted messages from our
           * JID's domain, not just from bare JID, full JID, or no sender
           * specified—which would allow the extension to work on other servers
           * too—but it doesn't.
           */
          stream_server,
          WOCKY_PORTER_HANDLER_PRIORITY_NORMAL,
          im_factory_own_message_cb, self,
          '(',
            "own-message", ':', NS_FACEBOOK_MESSAGES,
            '(', "body", ')',
          ')', NULL);
    }

  g_free (stream_server);
}
Пример #3
0
static void
attach_to_wocky_session (GabbleJingleFactory *self)
{
  GabbleJingleFactoryPrivate *priv = self->priv;

  g_assert (priv->session != NULL);

  g_assert (priv->porter == NULL);
  priv->porter = g_object_ref (wocky_session_get_porter (priv->session));

  /* TODO: we could match different dialects here maybe? */
  priv->jingle_handler_id = wocky_porter_register_handler_from_anyone (
      priv->porter,
      WOCKY_STANZA_TYPE_IQ, WOCKY_STANZA_SUB_TYPE_SET,
      WOCKY_PORTER_HANDLER_PRIORITY_NORMAL, jingle_cb, self,
      NULL);

  priv->jingle_info = gabble_jingle_info_new (priv->porter);
}