00001 # Copyright (c) 2011, Dirk Thomas, Dorian Scholz, TU Darmstadt 00002 # All rights reserved. 00003 # 00004 # Redistribution and use in source and binary forms, with or without 00005 # modification, are permitted provided that the following conditions 00006 # are met: 00007 # 00008 # * Redistributions of source code must retain the above copyright 00009 # notice, this list of conditions and the following disclaimer. 00010 # * Redistributions in binary form must reproduce the above 00011 # copyright notice, this list of conditions and the following 00012 # disclaimer in the documentation and/or other materials provided 00013 # with the distribution. 00014 # * Neither the name of the TU Darmstadt nor the names of its 00015 # contributors may be used to endorse or promote products derived 00016 # from this software without specific prior written permission. 00017 # 00018 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00019 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00020 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 00021 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 00022 # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 00023 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 00024 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00025 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00026 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00027 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 00028 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00029 # POSSIBILITY OF SUCH DAMAGE. 00030 00031 import os 00032 00033 from dbus.service import BusName, Object 00034 import dbus 00035 00036 00037 class ApplicationDBusInterface(Object): 00038 00039 """ 00040 Application DBus service available on the named bus name. 00041 The PID of the application instance is used to identify the unique bus name where further services are provided 00042 i.e. `PerspectiveManagerDBusInterface`, `PluginManagerDBusInterface`. 00043 """ 00044 00045 def __init__(self, named_bus_name): 00046 bus_name = BusName(named_bus_name, dbus.SessionBus()) 00047 super(ApplicationDBusInterface, self).__init__(bus_name, '/Application') 00048 00049 @dbus.service.method('org.ros.qt_gui.Application', in_signature='', out_signature='i') 00050 def get_pid(self): 00051 return os.getpid()