Skip to content

Commit

Permalink
- work on dbus interface
Browse files Browse the repository at this point in the history
  • Loading branch information
aschnell committed May 22, 2012
1 parent 9701e86 commit edd7552
Show file tree
Hide file tree
Showing 9 changed files with 34 additions and 26 deletions.
6 changes: 3 additions & 3 deletions client/cleanup.cc
Expand Up @@ -117,7 +117,7 @@ do_cleanup_number(DBus::Connection& conn, const string& config_name)
filter2(snapshots, tmp);

for (list<XSnapshots::const_iterator>::const_iterator it = tmp.begin(); it != tmp.end(); ++it)
command_delete_xsnapshot(conn, config_name, (*it)->getNum());
command_delete_xsnapshots(conn, config_name, { (*it)->getNum() });
}

return true;
Expand Down Expand Up @@ -286,7 +286,7 @@ do_cleanup_timeline(DBus::Connection& conn, const string& config_name)
filter2(snapshots, tmp);

for (list<XSnapshots::const_iterator>::const_iterator it = tmp.begin(); it != tmp.end(); ++it)
command_delete_xsnapshot(conn, config_name, (*it)->getNum());
command_delete_xsnapshots(conn, config_name, { (*it)->getNum() });

return true;
}
Expand Down Expand Up @@ -333,7 +333,7 @@ do_cleanup_empty_pre_post(DBus::Connection& conn, const string& config_name)
filter2(snapshots, tmp);

for (list<XSnapshots::const_iterator>::const_iterator it = tmp.begin(); it != tmp.end(); ++it)
command_delete_xsnapshot(conn, config_name, (*it)->getNum());
command_delete_xsnapshots(conn, config_name, { (*it)->getNum() });

return true;
}
7 changes: 4 additions & 3 deletions client/commands.cc
Expand Up @@ -179,12 +179,13 @@ command_create_post_xsnapshot(DBus::Connection& conn, const string& config_name,


void
command_delete_xsnapshot(DBus::Connection& conn, const string& config_name, unsigned int num)
command_delete_xsnapshots(DBus::Connection& conn, const string& config_name,
list<unsigned int> nums)
{
DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "DeleteSnapshot");
DBus::MessageMethodCall call(SERVICE, OBJECT, INTERFACE, "DeleteSnapshots");

DBus::Hoho hoho(call);
hoho << config_name << num;
hoho << config_name << nums;

DBus::Message reply = conn.send_and_reply_and_block(call);
}
Expand Down
3 changes: 2 additions & 1 deletion client/commands.h
Expand Up @@ -69,7 +69,8 @@ command_create_post_xsnapshot(DBus::Connection& conn, const string& config_name,
const string& cleanup, const map<string, string>& userdata);

void
command_delete_xsnapshot(DBus::Connection& conn, const string& config_name, unsigned int num);
command_delete_xsnapshots(DBus::Connection& conn, const string& config_name,
list<unsigned int> nums);

void
command_create_xcomparison(DBus::Connection& conn, const string& config_name, unsigned int number1,
Expand Down
2 changes: 1 addition & 1 deletion client/snapper.cc
Expand Up @@ -690,7 +690,7 @@ command_delete(DBus::Connection& conn)
{
unsigned int num = read_num(getopts.popArg());

command_delete_xsnapshot(conn, config_name, num);
command_delete_xsnapshots(conn, config_name, { num });
}
}
catch (const IllegalSnapshotException& e)
Expand Down
1 change: 1 addition & 0 deletions dbus/DBusMessage.cc
Expand Up @@ -62,6 +62,7 @@ namespace DBus
}


const char* TypeInfo<dbus_uint32_t>::signature = "u";
const char* TypeInfo<string>::signature = "s";


Expand Down
1 change: 1 addition & 0 deletions dbus/DBusMessage.h
Expand Up @@ -152,6 +152,7 @@ namespace DBus

template <typename Type> struct TypeInfo {};

template <> struct TypeInfo<dbus_uint32_t> { static const char* signature; };
template <> struct TypeInfo<string> { static const char* signature; };


Expand Down
4 changes: 2 additions & 2 deletions doc/dbus-protocol.txt
Expand Up @@ -23,11 +23,11 @@ method CreateSingleSnapshot config-name description cleanup userdata -> number
method CreatePreSnapshot config-name pre-number description cleanup userdata -> number
method CreatePostSnapshot config-name description cleanup userdata -> number
method ModifySnapshot config-name number description cleanup userdata
method DeleteSnapshot config-name number
method DeleteSnapshots config-name list(numbers)

signal SnapshotCreated config-name number
signal SnapshotModified config-name number
signal SnapshotDeleted config-name number
signal SnapshotsDeleted config-name list(numbers)

method MountSnapshot config-name number
method UmountSnapshot config-name number
Expand Down
2 changes: 1 addition & 1 deletion examples/python/delete.py
Expand Up @@ -8,5 +8,5 @@
dbus_interface='org.opensuse.snapper')


snapper.DeleteSnapshot("root", 1450)
snapper.DeleteSnapshots("root", [ 510 ])

34 changes: 19 additions & 15 deletions server/snapperd.cc
Expand Up @@ -33,6 +33,7 @@
#include <snapper/Snapshot.h>
#include <snapper/Comparison.h>
#include <snapper/Log.h>
#include <snapper/SnapperTmpl.h>

#include "dbus/DBusConnection.h"
#include "dbus/DBusMessage.h"
Expand Down Expand Up @@ -123,9 +124,9 @@ reply_to_introspect(DBus::Connection& conn, DBus::Message& msg)
" <arg name='number' type='u' direction='out'/>\n"
" </method>\n"

" <method name='DeleteSnapshot'>\n"
" <method name='DeleteSnapshots'>\n"
" <arg name='config-name' type='s' direction='in'/>\n"
" <arg name='number' type='u' direction='in'/>\n"
" <arg name='numbers' type='au' direction='in'/>\n"
" </method>\n"

" <method name='CreateComparison'>\n"
Expand Down Expand Up @@ -289,13 +290,13 @@ send_signal_snapshot_created(DBus::Connection& conn, const string& config_name,


void
send_signal_snapshot_deleted(DBus::Connection& conn, const string& config_name,
unsigned int num)
send_signal_snapshots_deleted(DBus::Connection& conn, const string& config_name,
list<dbus_uint32_t> nums)
{
DBus::MessageSignal msg(PATH, INTERFACE, "SnapshotDeleted");
DBus::MessageSignal msg(PATH, INTERFACE, "SnapshotsDeleted");

DBus::Hoho hoho(msg);
hoho << config_name << num;
hoho << config_name << nums;

conn.send(msg);
}
Expand Down Expand Up @@ -540,15 +541,15 @@ reply_to_command_create_post_snapshot(DBus::Connection& conn, DBus::Message& msg


void
reply_to_command_delete_snapshot(DBus::Connection& conn, DBus::Message& msg)
reply_to_command_delete_snapshots(DBus::Connection& conn, DBus::Message& msg)
{
string config_name;
unsigned int num;
list<dbus_uint32_t> nums;

DBus::Hihi hihi(msg);
hihi >> config_name >> num;
hihi >> config_name >> nums;

y2mil("DeleteSnapshot config_name:" << config_name << " num:" << num);
y2mil("DeleteSnapshots config_name:" << config_name << " nums:" << nums);

check_permission(conn, msg, config_name);
check_lock(conn, msg, config_name);
Expand All @@ -557,15 +558,18 @@ reply_to_command_delete_snapshot(DBus::Connection& conn, DBus::Message& msg)

Snapshots& snapshots = snapper->getSnapshots();

Snapshots::iterator snap = snapshots.find(num);
for (list<unsigned int>::const_iterator it = nums.begin(); it != nums.end(); ++it)
{
Snapshots::iterator snap = snapshots.find(*it);

snapper->deleteSnapshot(snap);
snapper->deleteSnapshot(snap);
}

DBus::MessageMethodReturn reply(msg);

conn.send(reply);

send_signal_snapshot_deleted(conn, config_name, num);
send_signal_snapshots_deleted(conn, config_name, nums);
}


Expand Down Expand Up @@ -901,8 +905,8 @@ dispatch(DBus::Connection& conn, DBus::Message& msg)
reply_to_command_create_pre_snapshot(conn, msg);
else if (msg.is_method_call(INTERFACE, "CreatePostSnapshot"))
reply_to_command_create_post_snapshot(conn, msg);
else if (msg.is_method_call(INTERFACE, "DeleteSnapshot"))
reply_to_command_delete_snapshot(conn, msg);
else if (msg.is_method_call(INTERFACE, "DeleteSnapshots"))
reply_to_command_delete_snapshots(conn, msg);
else if (msg.is_method_call(INTERFACE, "CreateComparison"))
reply_to_command_create_comparison(conn, msg);
else if (msg.is_method_call(INTERFACE, "GetFiles"))
Expand Down

0 comments on commit edd7552

Please sign in to comment.