[Telepathy] Connecting a remote DBus Object over a DBus Tube

tomw tomw at ubilix.com
Fri Aug 20 08:38:22 PDT 2010


well, it seems that all relevant fd's are there. However, I still get
the dbus timeout...
Any clue appreciated.

Thanks

I attached the strace log, maybe someone can see it on the first glance


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 



On Thu, 2010-08-19 at 16:01 +0100, Alban Crequy wrote:

> 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 <tomw at ubilix.com> 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 <tomw at ubilix.com> 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:
> > > http://telepathy.freedesktop.org/spec/Channel_Type_DBus_Tube.html#org.freedesktop.Telepathy.Channel.Type.DBusTube.DBusNames
> > > 
> > > >             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
> > > telepathy at lists.freedesktop.org
> > > http://lists.freedesktop.org/mailman/listinfo/telepathy
> > 
> > 
> _______________________________________________
> telepathy mailing list
> telepathy at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/telepathy


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/telepathy/attachments/20100820/9337f133/attachment.html>


More information about the telepathy mailing list