Code formatting/indentation unified in trunk
[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
17     enum torrent_action
18     {
19         action_add,
20         action_remove,
21         action_update
22     };
23
24     TorrentState()
25             : hash("")
26             , name("")
27             , state(0)
28             , progress(0)
29             , down_rate(0)
30             , up_rate(0)
31             , seeds(0)
32             , leeches(0)
33             , ratio(0)
34             , total_size(0)
35     { }
36
37     QString hash;
38     QString name;
39     torrent_action action;
40     uint state;
41     uint progress;
42     uint down_rate;
43     uint up_rate;
44     uint seeds;
45     uint leeches;
46     uint ratio;
47     qulonglong total_size;
48 };
49
50 typedef QHash<QString, QString> ParamsMap_t;
51 typedef QHash<QString, QString> const ParamsMapConst_t;
52 typedef QHash<QString, QString>::iterator ParamsMapIterator_t;
53 typedef QHash<QString, QString>::const_iterator ParamsMapConstIterator_t;
54
55 static inline QDBusArgument& operator << (QDBusArgument& argument
56         , TorrentState const& state)
57 {
58     std::cout << "serialize" << std::endl;
59     argument.beginStructure();
60     argument << state.hash << state.name << (uint)(state.action) << state.state << state.progress
61     << state.down_rate << state.up_rate << state.seeds
62     << state.leeches << state.ratio << state.total_size;
63     argument.endStructure();
64     return argument;
65 }
66
67 static inline QDBusArgument const& operator >> (QDBusArgument const& argument
68         , TorrentState& state)
69 {
70     std::cout << "deserialize" << std::endl;
71     argument.beginStructure();
72     uint action;
73     argument >> state.hash >> state.name >> action >> state.state >> state.progress
74     >> state.down_rate >> state.up_rate >> state.seeds
75     >> state.leeches >> state.ratio >> state.total_size;
76     state.action = (TorrentState::torrent_action)action;
77     argument.endStructure();
78     return argument;
79 }
80
81 static inline QDBusArgument& operator << (QDBusArgument& argument
82         , ParamsMapConst_t& params)
83 {
84     ParamsMapConstIterator_t p;
85     std::cout << "serialize params" << std::endl;
86     argument.beginMap();
87     for (p = params.constBegin(); p != params.constEnd(); ++p)
88     {
89         argument.beginMapEntry();
90         argument << p.key() << p.value();
91         argument.endMapEntry();
92     }
93     argument.endMap();
94     return argument;
95 }
96
97 static inline QDBusArgument const& operator >> (QDBusArgument const& argument
98         , ParamsMap_t& params)
99 {
100     ParamsMapConstIterator_t p;
101     QString key, value;
102     std::cout << "deserialize params" << std::endl;
103     argument.beginMap();
104     for (p = params.constBegin(); p != params.constEnd(); ++p)
105     {
106         argument.beginMapEntry();
107         argument >> key >> value;
108         params[key] = value;
109         argument.endMapEntry();
110     }
111     argument.endMap();
112     return argument;
113 }
114
115
116 // class DBusConnector
117 // {
118 // public:
119 //     DBusConnector()
120 //         : connection_()
121 //     {
122 //     }
123 // private:
124 //     QDBusConnection connection_;
125 // };
126
127 }
128
129 Q_DECLARE_METATYPE(qtrapids::TorrentState);
130 Q_DECLARE_METATYPE(qtrapids::ParamsMap_t);
131
132 #endif // _QTRAPIDS_DBUS_HPP_
133