formatting is changed according to last astyle settings
[qtrapids] / src / include / qtrapids / dbus.hpp
1 #ifndef _QTRAPIDS_DBUS_HPP_
2 #define _QTRAPIDS_DBUS_HPP_
3
4 #include <QtDBus/QtDBus>
5 #include <QtCore/QString>
6 #include <QtCore/QHash>
7
8 // TMP TODO
9 #include <iostream>
10
11 namespace qtrapids
12 {
13
14 struct TorrentState {
15
16         enum torrent_action {
17                 action_add,
18                 action_remove,
19                 action_update
20         };
21
22         TorrentState()
23                         : hash("")
24                         , name("")
25                         , state(0)
26                         , progress(0)
27                         , down_rate(0)
28                         , up_rate(0)
29                         , seeds(0)
30                         , leeches(0)
31                         , ratio(0)
32                         , total_size(0) { }
33
34         QString hash;
35         QString name;
36         torrent_action action;
37         uint state;
38         uint progress;
39         uint down_rate;
40         uint up_rate;
41         uint seeds;
42         uint leeches;
43         uint ratio;
44         qulonglong total_size;
45 };
46
47 typedef QHash<QString, QString> ParamsMap_t;
48 typedef QHash<QString, QString> const ParamsMapConst_t;
49 typedef QHash<QString, QString>::iterator ParamsMapIterator_t;
50 typedef QHash<QString, QString>::const_iterator ParamsMapConstIterator_t;
51
52 static inline QDBusArgument& operator << (QDBusArgument& argument
53         , TorrentState const& state)
54 {
55         std::cout << "serialize" << std::endl;
56         argument.beginStructure();
57         argument << state.hash << state.name << (uint)(state.action) << state.state << state.progress
58         << state.down_rate << state.up_rate << state.seeds
59         << state.leeches << state.ratio << state.total_size;
60         argument.endStructure();
61         return argument;
62 }
63
64 static inline QDBusArgument const& operator >> (QDBusArgument const& argument
65         , TorrentState& state)
66 {
67         std::cout << "deserialize" << std::endl;
68         argument.beginStructure();
69         uint action;
70         argument >> state.hash >> state.name >> action >> state.state >> state.progress
71         >> state.down_rate >> state.up_rate >> state.seeds
72         >> state.leeches >> state.ratio >> state.total_size;
73         state.action = (TorrentState::torrent_action)action;
74         argument.endStructure();
75         return argument;
76 }
77
78 static inline QDBusArgument& operator << (QDBusArgument& argument
79         , ParamsMapConst_t& params)
80 {
81         ParamsMapConstIterator_t p;
82         std::cout << "serialize params" << std::endl;
83         argument.beginMap();
84         for (p = params.constBegin(); p != params.constEnd(); ++p) {
85                 argument.beginMapEntry();
86                 argument << p.key() << p.value();
87                 argument.endMapEntry();
88         }
89         argument.endMap();
90         return argument;
91 }
92
93 static inline QDBusArgument const& operator >> (QDBusArgument const& argument
94         , ParamsMap_t& params)
95 {
96         ParamsMapConstIterator_t p;
97         QString key, value;
98         std::cout << "deserialize params" << std::endl;
99         argument.beginMap();
100         for (p = params.constBegin(); p != params.constEnd(); ++p) {
101                 argument.beginMapEntry();
102                 argument >> key >> value;
103                 params[key] = value;
104                 argument.endMapEntry();
105         }
106         argument.endMap();
107         return argument;
108 }
109
110
111 // class DBusConnector
112 // {
113 // public:
114 //     DBusConnector()
115 //         : connection_()
116 //     {
117 //     }
118 // private:
119 //     QDBusConnection connection_;
120 // };
121
122 }
123
124 Q_DECLARE_METATYPE(qtrapids::TorrentState);
125 Q_DECLARE_METATYPE(qtrapids::ParamsMap_t);
126
127 #endif // _QTRAPIDS_DBUS_HPP_
128