22 #include "dbusclient.h"
24 #include <libqopensync/environment.h>
25 #include <libqopensync/group.h>
27 #include <dbus/qdbuserror.h>
28 #include <dbus/qdbusconnection.h>
29 #include <dbus/qdbusmessage.h>
30 #include <dbus/qdbusproxy.h>
32 #include <tqapplication.h>
37 OpenSyncService::OpenSyncService()
42 void OpenSyncService::setConnection( TQDBusConnection *connection )
44 mConnection = connection;
45 mConnection->registerObject(
"/ABC",
this );
48 bool OpenSyncService::handleMethodCall(
const TQDBusMessage &message )
50 tqDebug(
"OpenSyncService::handleMethodCall()" );
52 tqDebug(
" Interface: %s", message.interface().latin1() );
53 tqDebug(
" Path: %s", message.path().latin1() );
54 tqDebug(
" Member: %s", message.member().latin1() );
55 tqDebug(
" Sender: %s", message.sender().latin1() );
57 if ( message.interface() !=
"org.opensync.SyncEngine" )
return false;
61 TQString
function = message.member();
62 if (
function ==
"hello" ) {
63 reply = hello( message );
64 }
else if (
function ==
"randomNumber" ) {
65 reply = randomNumber( message );
66 }
else if (
function ==
"listGroups" ) {
67 reply = listGroups( message );
68 }
else if (
function ==
"listPlugins" ) {
69 reply = listPlugins( message );
70 }
else if (
function ==
"showGroup" ) {
71 reply = showGroup( message );
72 }
else if (
function ==
"showMember" ) {
73 reply = showMember( message );
78 mConnection->send( reply );
83 TQDBusMessage OpenSyncService::showMember(
const TQDBusMessage &message )
85 if ( message.count() != 2 ) {
86 return error( message,
"arg_count",
87 TQString(
"Wrong number of arguments. Expected 2, got %1.")
88 .arg( message.count() ) );
91 TQString groupName = message[ 0 ].toString();
92 if ( groupName.isEmpty() ) {
93 return error( message,
"missing_arg",
"Missing argument: group name." );
97 int memberId = message[ 1 ].toInt( &ok );
99 return error( message,
"missing_arg",
"Missing argument: member id." );
104 QSync::Environment env;
105 QSync::Result result = env.initialize();
106 if ( result.isError() ) {
107 return error( message, result.name(), result.message() );
109 reply = TQDBusMessage::methodReply( message );
111 QSync::Group group = env.groupByName( groupName );
112 if ( !group.isValid() ) {
113 return error( message,
"group_name", TQString(
"Unknown group '%1'.")
117 QSync::Member member = group.memberById( memberId );
118 if ( !member.isValid() ) {
119 return error( message,
"member_id",
120 TQString(
"Unknown member id '%1' in group '%2'.").arg( groupName )
124 reply.append( memberId );
125 reply.append( member.pluginName() );
134 TQDBusMessage OpenSyncService::showGroup(
const TQDBusMessage &message )
136 if ( message.count() != 1 ) {
137 return error( message,
"arg_count",
138 TQString(
"Wrong number of arguments. Expected 1, got %1")
139 .arg( message.count() ) );
142 TQString groupName = message[ 0 ].toString();
143 if ( groupName.isEmpty() ) {
144 return error( message,
"missing_arg",
"Missing argument group name." );
149 QSync::Environment env;
150 QSync::Result result = env.initialize();
151 if ( result.isError() ) {
152 return error( message, result.name(), result.message() );
154 reply = TQDBusMessage::methodReply( message );
156 QSync::Group group = env.groupByName( groupName );
157 if ( !group.isValid() ) {
158 return error( message,
"group_name", TQString(
"Unknown group '%1'")
162 QSync::Group::Iterator it( &group );
163 for( it = group.begin(); it != group.end(); ++it ) {
164 QSync::Member member = *it;
165 reply.append( TQVariant( member.id() ) );
174 TQDBusMessage OpenSyncService::error(
const TQDBusMessage &message,
175 const TQString &errorCode,
176 const TQString &errorMessage )
178 TQDBusError error(
"org.opensync." + errorCode, errorMessage );
179 return TQDBusMessage::methodError( message, error );
182 TQDBusMessage OpenSyncService::listPlugins(
const TQDBusMessage &message )
186 QSync::Environment env;
187 QSync::Result result = env.initialize();
188 if ( result.isError() ) {
189 TQDBusError error( result.name(), result.message() );
190 reply = TQDBusMessage::methodError( message, error );
192 reply = TQDBusMessage::methodReply( message );
194 QSync::Environment::PluginIterator it( env.pluginBegin() );
195 for ( ; it != env.pluginEnd(); ++it ) {
196 reply.append( TQVariant( (*it).name() ) );
205 TQDBusMessage OpenSyncService::listGroups(
const TQDBusMessage &message )
209 QSync::Environment env;
210 QSync::Result result = env.initialize();
211 if ( result.isError() ) {
212 TQDBusError error( result.name(), result.message() );
213 reply = TQDBusMessage::methodError( message, error );
215 reply = TQDBusMessage::methodReply( message );
217 QSync::Environment::GroupIterator it( env.groupBegin() );
218 for ( ; it != env.groupEnd(); ++it ) {
219 reply.append( TQVariant( (*it).name() ) );
228 TQDBusMessage OpenSyncService::hello(
const TQDBusMessage &message )
230 TQDBusMessage reply = TQDBusMessage::methodReply( message );
235 reply.append( TQVariant( TQString(
"Hello!" ) ) );
240 TQDBusMessage OpenSyncService::randomNumber(
const TQDBusMessage &message )
242 TQDBusMessage reply = TQDBusMessage::methodReply( message );
246 reply.append( TQVariant( number ) );
251 int main(
int argc,
char *argv[] )
253 TQApplication app(argc, argv);
255 std::cout <<
"Hello" << std::endl;
257 TQDBusConnection connection = TQDBusConnection::addConnection(
258 TQDBusConnection::SessionBus );
260 if ( !connection.isConnected() ) {
261 tqFatal(
"Cannot connect to session bus");
264 connection.requestName(
"org.opensync.SyncEngine",
265 TQDBusConnection::NoReplace );
267 OpenSyncService service;
268 service.setConnection( &connection );