static DBusMessage *get_capabilities(DBusConnection *connection, DBusMessage *message, void *user_data) { struct obc_session *session = user_data; struct obc_transfer *pull; DBusMessage *reply; GError *gerr = NULL; pull = obc_transfer_get("x-obex/capability", NULL, NULL, &gerr); if (pull == NULL) goto fail; if (!obc_session_queue(session, pull, capabilities_complete_callback, message, &gerr)) goto fail; dbus_message_ref(message); return NULL; fail: reply = g_dbus_create_error(message, "org.openobex.Error.Failed", "%s", gerr->message); g_error_free(gerr); return reply; }
static DBusMessage *get_folder_listing(struct map_data *map, DBusMessage *message, GObexApparam *apparam) { struct obc_transfer *transfer; GError *err = NULL; DBusMessage *reply; transfer = obc_transfer_get("x-obex/folder-listing", NULL, NULL, &err); if (transfer == NULL) { g_obex_apparam_free(apparam); goto fail; } obc_transfer_set_apparam(transfer, apparam); if (obc_session_queue(map->session, transfer, folder_listing_cb, map, &err)) { map->msg = dbus_message_ref(message); return NULL; } fail: reply = g_dbus_create_error(message, ERROR_INTERFACE ".Failed", "%s", err->message); g_error_free(err); return reply; }
static DBusMessage *map_get_message_listing(DBusConnection *connection, DBusMessage *message, void *user_data) { struct map_data *map = user_data; struct obc_transfer *transfer; const char *folder; DBusMessageIter msg_iter; GError *err = NULL; DBusMessage *reply; dbus_message_iter_init(message, &msg_iter); if (dbus_message_iter_get_arg_type(&msg_iter) != DBUS_TYPE_STRING) return g_dbus_create_error(message, "org.openobex.Error.InvalidArguments", NULL); dbus_message_iter_get_basic(&msg_iter, &folder); transfer = obc_transfer_get("x-bt/MAP-msg-listing", folder, NULL, &err); if (transfer == NULL) goto fail; if (obc_session_queue(map->session, transfer, buffer_cb, map, &err)) { map->msg = dbus_message_ref(message); return NULL; } fail: reply = g_dbus_create_error(message, "org.openobex.Error.Failed", "%s", err->message); g_error_free(err); return reply; }
static void session_prepare_get(struct obc_session *session, GError *err, void *data) { struct obc_transfer *transfer = data; int ret; ret = obc_transfer_get(transfer, transfer_progress, session); if (ret < 0) { GError *gerr = NULL; g_set_error(&gerr, OBEX_IO_ERROR, ret, "%s", strerror(-ret)); session_notify_error(session, transfer, gerr); g_clear_error(&gerr); return; } DBG("Transfer(%p) started", transfer); }
static DBusMessage *map_msg_get(DBusConnection *connection, DBusMessage *message, void *user_data) { struct map_msg *msg = user_data; struct obc_transfer *transfer; const char *target_file; gboolean attachment; GError *err = NULL; DBusMessage *reply; GObexApparam *apparam; if (dbus_message_get_args(message, NULL, DBUS_TYPE_STRING, &target_file, DBUS_TYPE_BOOLEAN, &attachment, DBUS_TYPE_INVALID) == FALSE) return g_dbus_create_error(message, ERROR_INTERFACE ".InvalidArguments", NULL); transfer = obc_transfer_get("x-bt/message", msg->handle, target_file, &err); if (transfer == NULL) goto fail; apparam = g_obex_apparam_set_uint8(NULL, MAP_AP_ATTACHMENT, attachment); apparam = g_obex_apparam_set_uint8(apparam, MAP_AP_CHARSET, CHARSET_UTF8); obc_transfer_set_apparam(transfer, apparam); if (!obc_session_queue(msg->data->session, transfer, NULL, NULL, &err)) goto fail; return obc_transfer_create_dbus_reply(transfer, message); fail: reply = g_dbus_create_error(message, ERROR_INTERFACE ".Failed", "%s", err->message); g_error_free(err); return reply; }
static DBusMessage *map_get_folder_listing(DBusConnection *connection, DBusMessage *message, void *user_data) { struct map_data *map = user_data; struct obc_transfer *transfer; GError *err = NULL; DBusMessage *reply; transfer = obc_transfer_get("x-obex/folder-listing", NULL, NULL, &err); if (transfer == NULL) goto fail; if (obc_session_queue(map->session, transfer, buffer_cb, map, &err)) { map->msg = dbus_message_ref(message); return NULL; } fail: reply = g_dbus_create_error(message, "org.openobex.Error.Failed", "%s", err->message); g_error_free(err); return reply; }