<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.28.3">
</HEAD>
<BODY>
<FONT SIZE="4">well, it seems that all relevant fd's are there. However, I still get the dbus timeout...</FONT><BR>
<FONT SIZE="4">Any clue appreciated.</FONT><BR>
<BR>
<FONT SIZE="4">Thanks</FONT><BR>
<BR>
<FONT SIZE="4">I attached the strace log, maybe someone can see it on the first glance</FONT><BR>
<BR>
<PRE>
write(1, "tube state changed to : open\n", 30) = 30
write(1, "Tube OPENED\n", 12) = 12
fcntl64(8, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(8, F_SETFL, O_RDWR|O_NONBLOCK) = 0
fcntl64(8, F_GETFD) = 0
fcntl64(8, F_SETFD, FD_CLOEXEC) = 0
fstat64(8, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
fcntl64(8, F_GETFL) = 0x802 (flags O_RDWR|O_NONBLOCK)
write(1, "TUBE <dbus.connection.Connection"..., 54) = 54
poll([{fd=8, events=POLLOUT}], 1, 0) = 1 ([{fd=8, revents=POLLOUT}])
write(8, "\0", 1) = 1
write(8, "AUTH EXTERNAL 31303030\r\n", 24) = 24
fstat64(8, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
fcntl64(8, F_GETFL) = 0x802 (flags O_RDWR|O_NONBLOCK)
write(1, "<ProxyObject wrapping <dbus.conn"..., 105) = 105
poll([{fd=8, events=POLLIN}], 1, 0) = 1 ([{fd=8, revents=POLLIN}])
read(8, "OK 60da741365a226f57f3031414c6e9"..., 2048) = 37
fstat64(8, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
fcntl64(8, F_GETFL) = 0x802 (flags O_RDWR|O_NONBLOCK)
poll([{fd=4, events=POLLIN}, {fd=6, events=POLLIN}, {fd=3, events=POLLIN}, {fd=8, events=POLLOUT}], 4, 24998) = 1 ([{fd=8, revents=POLLOUT}])
write(8, "BEGIN\r\n", 7) = 7
fstat64(8, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
fcntl64(8, F_GETFL) = 0x802 (flags O_RDWR|O_NONBLOCK)
writev(8, [{"l\1\0\1\0\0\0\0\1\0\0\0[\0\0\0\1\1o\0\16\0\0\0/tv/vfre"..., 112}, {"", 0}], 2) = 112
writev(8, [{"l\4\1\1\20\0\0\0\2\0\0\0G\0\0\0\1\1o\0\16\0\0\0/tv/vfre"..., 88}, {"\v\0\0\0Local hello\0", 16}], 2) = 104
poll([{fd=4, events=POLLIN}, {fd=6, events=POLLIN}, {fd=3, events=POLLIN}, {fd=8, events=POLLIN}], 4, 24997) = 1 ([{fd=8, revents=POLLIN}])
read(8, "l\1\0\1\0\0\0\0\1\0\0\0s\0\0\0\1\1o\0\16\0\0\0/tv/vfre"..., 2048) = 136
read(8, 0x8f80310, 2048) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN}, {fd=6, events=POLLIN}, {fd=3, events=POLLIN}, {fd=8, events=POLLIN}], 4, 0) = 0 (Timeout)
writev(8, [{"l\2\1\1$\2\0\0\3\0\0\0\17\0\0\0\5\1u\0\1\0\0\0\10\1g\0\1s\0\0", 32}, {"\37\2\0\0<!DOCTYPE node PUBLIC \"-//fr"..., 548}], 2) = 580
poll([{fd=4, events=POLLIN}, {fd=6, events=POLLIN}, {fd=3, events=POLLIN}, {fd=8, events=POLLIN}], 4, 24865) = 1 ([{fd=8, revents=POLLIN}])
read(8, "l\2\1\1\243\0\0\0\2\0\0\0\17\0\0\0\5\1u\0\1\0\0\0\10\1g\0\1s\0\0"..., 2048) = 195
read(8, 0x8f80310, 2048) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN}, {fd=6, events=POLLIN}, {fd=3, events=POLLIN}, {fd=8, events=POLLIN}], 4, 0) = 0 (Timeout)
writev(8, [{"l\1\0\1\0\0\0\0\4\0\0\0B\0\0\0\1\1o\0\16\0\0\0/tv/vfre"..., 88}, {"", 0}], 2) = 88
poll([{fd=4, events=POLLIN}, {fd=6, events=POLLIN}, {fd=3, events=POLLIN}, {fd=8, events=POLLIN}], 4, 25000) = 0 (Timeout)
poll([{fd=4, events=POLLIN}, {fd=6, events=POLLIN}, {fd=3, events=POLLIN}, {fd=8, events=POLLIN}], 4, 0) = 0 (Timeout)
write(1, "Error: (DBusException(dbus.Strin"..., 253) = 253
poll([{fd=4, events=POLLIN}, {fd=6, events=POLLIN}, {fd=3, events=POLLIN}, {fd=8, events=POLLIN}], 4, -1
</PRE>
<BR>
<BR>
On Thu, 2010-08-19 at 16:01 +0100, Alban Crequy wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
connect(8, {sa_family=AF_FILE, path="/tmp/dbus-gabble-eJmvd0ho"}, 27) =0
So it connects fine to the D-Bus tube and use the file descriptor 8.
When your process is waiting in poll() or select(), is the file
descriptor 8 included in the list of fd to watch? If not, dbus-python
is not using the mainloop correctly... I don't remember the syntax, but
something like that:
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
tube = dbus.connection.Connection(self.tube_addr,
mainloop=DBusGMainLoop())
BR,
Alban
Le Thu, 19 Aug 2010 14:23:23 +0200,
tomw <<A HREF="mailto:tomw@ubilix.com">tomw@ubilix.com</A>> a écrit :
> Alban,
>
> thanks for your quick reply,
>
> the "SERVICE" is the service the tube was created for, e.g.
> "org.example.Service" and I'm using a 1-1 DBus tube.
>
> I was tracing the remote app with strace but it does not seem to
> receive any communication on the socket. I guess I need to digg
> deeper...
>
> br, tomw
>
> On Thu, 2010-08-19 at 12:37 +0100, Alban Crequy wrote:
> > Le Thu, 19 Aug 2010 08:34:35 +0200,
> > tomw <<A HREF="mailto:tomw@ubilix.com">tomw@ubilix.com</A>> a écrit :
> >
> > > Hi folks,
> > >
> > > I'm trying to use a remote Object over a DBus tube. So far
> > > everything works fine. The tube is open and upon the
> > > tube_channel_state_change I get a dbus.connection.Connection
> > > object with the related address like
> > > unix:path=/tmp/dbus-gabble-6k8gfh-V. If I proceed then with:
> > >
> > > if state == TUBE_CHANNEL_STATE_OPEN:
> > > tube = dbus.connection.Connection(self.tube_addr)
> > > tube.add_signal_receiver(self.signal_cb)
> > > remote = tube.get_object(SERVICE, PATH)
> >
> > What is "SERVICE" here? Are you using a 1-1 D-Bus tube or MUC D-Bus
> > tubes?
> >
> > In D-Bus tubes (both 1-1 and MUC), there is no bus driver
> > implementing org.freedesktop.DBus, so there is no well-known names.
> >
> > In the case of MUC D-Bus tubes, you can find the D-Bus unique name
> > (to use instead of "SERVICE") of a contact with the "DBusNames"
> > property on your tube channel:
> > <A HREF="http://telepathy.freedesktop.org/spec/Channel_Type_DBus_Tube.html#org.freedesktop.Telepathy.Channel.Type.DBusTube.DBusNames">http://telepathy.freedesktop.org/spec/Channel_Type_DBus_Tube.html#org.freedesktop.Telepathy.Channel.Type.DBusTube.DBusNames</A>
> >
> > > remote.Method(reply_handler=self.tube_reply_cb,
> > > error_handler=self.tube_error_cb)
> > >
> > > Calling Method on the remote object always creates a DBus timeout:
> > > "DBusException(dbus.String(u'Did not receive a reply..."
> > > The remote object is running on the DBUs and locally works like it
> > > should. So, what am I missing here?
> >
> > You can use strace on your application to see if it receives a D-Bus
> > message on the tube socket.
> >
> > > BTW, the telepathy framework is really a great piece of work
> > > (once you grasp it :-)
> >
> > BR,
> > Alban
> > _______________________________________________
> > telepathy mailing list
> > <A HREF="mailto:telepathy@lists.freedesktop.org">telepathy@lists.freedesktop.org</A>
> > <A HREF="http://lists.freedesktop.org/mailman/listinfo/telepathy">http://lists.freedesktop.org/mailman/listinfo/telepathy</A>
>
>
_______________________________________________
telepathy mailing list
<A HREF="mailto:telepathy@lists.freedesktop.org">telepathy@lists.freedesktop.org</A>
<A HREF="http://lists.freedesktop.org/mailman/listinfo/telepathy">http://lists.freedesktop.org/mailman/listinfo/telepathy</A>
</PRE>
</BLOCKQUOTE>
<BR>
</BODY>
</HTML>