34 #include <dbus/dbus.h>
43 : _conn(conn), _path(path), _service(service ? service :
""), _default_timeout(-1)
53 debug_log(
"%s: %d millies", __PRETTY_FUNCTION__, new_timeout);
54 if (new_timeout < 0 && new_timeout != -1)
69 NULL, NULL, NULL, NULL
83 Message msg(
new Message::Private(dmsg));
86 debug_log(
" got message #%d from %s to %s",
93 ? DBUS_HANDLER_RESULT_HANDLED
94 : DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
98 return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
121 size_t plen = prefix.length();
125 if (!strncmp(ati->second->path().c_str(), prefix.c_str(), plen))
126 ali.push_back(ati->second);
140 size_t plen = prefix.length();
144 if (!strncmp(ati->second->path().c_str(), prefix.c_str(), plen))
146 std::string p = ati->second->path().substr(plen);
147 p = p.substr(0, p.find(
'/'));
160 :
Object(conn, path, conn.unique_name())
174 if (!dbus_connection_register_object_path(
conn()._pvt->
conn,
path().c_str(), &
_vtable,
this))
188 dbus_connection_unregister_object_path(
conn()._pvt->
conn,
path().c_str());
207 case DBUS_MESSAGE_TYPE_METHOD_CALL:
210 const char *member = cmsg.
member();
211 const char *
interface = cmsg.interface();
213 debug_log(
" invoking method %s.%s", interface, member);
282 : _conn(conn), _call(call), _return(_call), _tag(tag)
291 :
Object(conn, path, service)
309 InterfaceProxyTable::const_iterator ii =
_interfaces.begin();
312 std::string im =
"type='signal',interface='" + ii->first +
"',path='" +
path() +
"'";
322 InterfaceProxyTable::const_iterator ii =
_interfaces.begin();
325 std::string im =
"type='signal',interface='" + ii->first +
"',path='" +
path() +
"'";
334 if (call.
path() == NULL)
345 if (call.
path() == NULL)
358 case DBUS_MESSAGE_TYPE_SIGNAL:
361 const char *
interface = smsg.interface();
362 const char *member = smsg.
member();
363 const char *objpath = smsg.
path();
365 if (objpath !=
path())
return false;
367 debug_log(
"filtered signal %s(in %s) from %s to object %s",
368 member, interface, msg.
sender(), objpath);
373 return ii->dispatch_signal(smsg);