Diff between cd879f3671290da655e270bfce9e7d67808e6a76 and 7adfcd34089667a41c5469ab8dbaa719024d6493

Changed Files

File Additions Deletions Status
obexd/client/session.c +83 -0 modified

Full Patch

diff --git a/obexd/client/session.c b/obexd/client/session.c
index 9e463d8..e73ab25 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
@@ -49,6 +49,8 @@
 #define SESSION_INTERFACE  "org.openobex.Session"
 #define SESSION_BASEPATH   "/org/openobex"
 
+#define FTP_INTERFACE  "org.openobex.FileTransfer"
+
 #define FOLDER_BROWSING_UUID	"\xF9\xEC\x7B\xC4\x95\x3C\x11\xD2\x98\x4E\x52\x54\x00\xDC\x9E\x09"
 
 static guint64 counter = 0;
@@ -578,6 +580,66 @@ static GDBusMethodTable session_methods[] = {
 	{ }
 };
 
+static DBusMessage *change_folder(DBusConnection *connection,
+				DBusMessage *message, void *user_data)
+{
+	return dbus_message_new_method_return(message);
+}
+
+static DBusMessage *create_folder(DBusConnection *connection,
+				DBusMessage *message, void *user_data)
+{
+	return dbus_message_new_method_return(message);
+}
+
+static DBusMessage *list_folder(DBusConnection *connection,
+				DBusMessage *message, void *user_data)
+{
+	return dbus_message_new_method_return(message);
+}
+
+static DBusMessage *get_file(DBusConnection *connection,
+				DBusMessage *message, void *user_data)
+{
+	return dbus_message_new_method_return(message);
+}
+
+static DBusMessage *put_file(DBusConnection *connection,
+				DBusMessage *message, void *user_data)
+{
+	return dbus_message_new_method_return(message);
+}
+
+static DBusMessage *copy_file(DBusConnection *connection,
+				DBusMessage *message, void *user_data)
+{
+	return dbus_message_new_method_return(message);
+}
+
+static DBusMessage *move_file(DBusConnection *connection,
+				DBusMessage *message, void *user_data)
+{
+	return dbus_message_new_method_return(message);
+}
+
+static DBusMessage *delete(DBusConnection *connection,
+				DBusMessage *message, void *user_data)
+{
+	return dbus_message_new_method_return(message);
+}
+
+static GDBusMethodTable ftp_methods[] = {
+	{ "ChangeFolder",	"s", "",	change_folder	},
+	{ "CreateFolder",	"s", "",	create_folder	},
+	{ "ListFolder",		"s", "aa{sv}",	list_folder	},
+	{ "GetFile",		"ss", "",	get_file	},
+	{ "PutFile",		"ss", "",	put_file	},
+	{ "CopyFile",		"ss", "",	copy_file	},
+	{ "MoveFile",		"ss", "",	move_file	},
+	{ "Delete",		"s", "",	delete		},
+	{ }
+};
+
 static void xfer_progress(GwObexXfer *xfer, gpointer user_data)
 {
 	struct session_data *session = user_data;
@@ -729,6 +791,18 @@ int session_send(struct session_data *session, const char *filename)
 
 int session_register(struct session_data *session)
 {
+	GDBusMethodTable *methods;
+	const char *iface;
+
+	switch (session->uuid) {
+	case OBEX_FILETRANS_SVCLASS_ID:
+		iface = FTP_INTERFACE;
+		methods = ftp_methods;
+		break;
+	default:
+		return -EINVAL;
+	}
+
 	session->path = g_strdup_printf("%s/session%ju",
 					SESSION_BASEPATH, counter++);
 
@@ -738,6 +812,15 @@ int session_register(struct session_data *session)
 				session, NULL) == FALSE)
 		return -EIO;
 
+	if (g_dbus_register_interface(session->conn, session->path,
+				iface,
+				methods, NULL, NULL,
+				session, NULL) == FALSE) {
+		g_dbus_unregister_interface(session->conn,
+				session->path, SESSION_INTERFACE);
+		return -EIO;
+	}
+
 	session_ref(session);
 
 	return 0;