import os

import dbus
import dbus.service
import dbus.glib
import gobject

class ReadFDService(dbus.service.Object):

    def __init__(self):
        bus_name = dbus.service.BusName('test.readFDservice', bus = dbus.SessionBus())
        dbus.service.Object.__init__(self, bus_name, '/test/readFDservice')

    def listen(self):
        loop = gobject.MainLoop()
        loop.run()

    @dbus.service.method('test.readFDservice', in_signature="sa{uh}")
    def readFD(self, serviceName, fds):
        print ([type(param) for param in (serviceName, fds)]  )
        print ("serviceName: %s" % serviceName)
        print ("fd: %s" % fds)
        r = os.fdopen(fds[0].take()).read()
        return r


if __name__ == '__main__':

    myservice = ReadFDService()
    myservice.listen()
