Пример #1
0
        void Initialize()
        {
            try {
                if (upower == null && Bus.System.NameHasOwner(UPowerName))
                {
                    upower          = Bus.System.GetObject <IUPower> (UPowerName, new ObjectPath(UPowerPath));
                    upower.Changed += HandleCapabilitiesChanged;
                    Log <SystemManager> .Debug("Using UPower dbus service");
                }
                else if (devicekit == null && Bus.System.NameHasOwner(DeviceKitPowerName))
                {
                    devicekit          = Bus.System.GetObject <IDeviceKitPower> (DeviceKitPowerName, new ObjectPath(DeviceKitPowerPath));
                    devicekit.Changed += HandleCapabilitiesChanged;
                    Log <SystemManager> .Debug("Using DeviceKit.Power dbus service");
                }

                if (systemd == null && Bus.System.NameHasOwner(SystemdName))
                {
                    systemd = Bus.System.GetObject <ISystemd> (SystemdName, new ObjectPath(SystemdPath));
                    Log <SystemManager> .Debug("Using login1.Manager dbus service");
                }
                else if (consolekit == null && Bus.System.NameHasOwner(ConsoleKitName))
                {
                    consolekit = Bus.System.GetObject <IConsoleKit> (ConsoleKitName, new ObjectPath(ConsoleKitPath));
                    Log <SystemManager> .Debug("Using ConsoleKit.Manager dbus service");
                }
            } catch (Exception e) {
                Log <SystemService> .Error("Could not initialize needed dbus service: '{0}'", e.Message);

                Log <SystemService> .Info(e.StackTrace);
            }
        }
Пример #2
0
        public void Initialize()
        {
            // Set a sane default value for on_battery.  Thus, if we don't find a working power manager
            // we assume we're not on battery.
            on_battery = false;
            try {
                BusG.Init();
                if (Bus.System.NameHasOwner(DeviceKitPowerName))
                {
                    devicekit            = Bus.System.GetObject <IDeviceKitPower> (DeviceKitPowerName, new ObjectPath(DeviceKitPowerPath));
                    devicekit.OnChanged += DeviceKitOnChanged;
                    on_battery           = (bool)devicekit.Get(DeviceKitPowerName, "on-battery");
                    Log <SystemService> .Debug("Using org.freedesktop.DeviceKit.Power for battery information");
                }
                else if (Bus.Session.NameHasOwner(PowerManagementName))
                {
                    power = Bus.Session.GetObject <IPowerManagement> (PowerManagementName, new ObjectPath(PowerManagementPath));
                    power.OnBatteryChanged += PowerOnBatteryChanged;
                    on_battery              = power.GetOnBattery();
                    Log <SystemService> .Debug("Using org.freedesktop.PowerManager for battery information");
                }
            } catch (Exception e) {
                Log <SystemService> .Error("Could not initialize dbus: {0}", e.Message);

                Log <SystemService> .Debug(e.StackTrace);
            }
        }
Пример #3
0
        void InitializeBattery()
        {
            // Set a sane default value for on_battery.  Thus, if we don't find a working power manager
            // we assume we're not on battery.
            on_battery = false;
            try {
                if (Bus.System.NameHasOwner(UPowerName))
                {
                    upower          = Bus.System.GetObject <IUPower> (UPowerName, new ObjectPath(UPowerPath));
                    upower.Changed += HandleUPowerChanged;
                    HandleUPowerChanged();
                    Log <SystemService> .Debug("Using org.freedesktop.UPower for battery information");
                }
                else if (Bus.System.NameHasOwner(DeviceKitPowerName))
                {
                    devicekit          = Bus.System.GetObject <IDeviceKitPower> (DeviceKitPowerName, new ObjectPath(DeviceKitPowerPath));
                    devicekit.Changed += HandleDeviceKitChanged;
                    HandleDeviceKitChanged();
                    Log <SystemService> .Debug("Using org.freedesktop.DeviceKit.Power for battery information");
                }
                else if (Bus.Session.NameHasOwner(PowerManagementName))
                {
                    power = Bus.Session.GetObject <IPowerManagement> (PowerManagementName, new ObjectPath(PowerManagementPath));
                    power.OnBatteryChanged += PowerOnBatteryChanged;
                    on_battery              = power.GetOnBattery();
                    Log <SystemService> .Debug("Using org.freedesktop.PowerManager for battery information");
                }
            } catch (Exception e) {
                Log <SystemService> .Error("Could not initialize power manager dbus: '{0}'", e.Message);

                Log <SystemService> .Info(e.StackTrace);
            }
        }
Пример #4
0
        private SystemManager()
        {
            try {
                SystemBus = Bus.System.GetObject <IBus> ("org.freedesktop.DBus", new ObjectPath("/org/freedesktop/DBus"));

                SystemBus.NameOwnerChanged += delegate(string name, string old_owner, string new_owner) {
                    if (name != UPowerName && name != DeviceKitPowerName && name != SystemdName && name != ConsoleKitName)
                    {
                        return;
                    }

                    Log <SystemManager> .Debug("DBus services changed, reconnecting now");

                    if (upower != null)
                    {
                        upower = null;
                    }

                    if (devicekit != null)
                    {
                        devicekit = null;
                    }

                    if (systemd != null)
                    {
                        systemd = null;
                    }

                    if (consolekit != null)
                    {
                        consolekit = null;
                    }

                    Initialize();
                    HandlePowerBusChanged();
                    HandleCapabilitiesChanged();
                };

                Initialize();

                // Set up file monitor to watch for reboot_required file
                GLib.File reboot_required_file = FileFactory.NewForPath("/var/run/reboot-required");
                reboot_required_monitor           = reboot_required_file.Monitor(FileMonitorFlags.None, null);
                reboot_required_monitor.RateLimit = 10000;
                reboot_required_monitor.Changed  += HandleRebootRequired;
            } catch (Exception e) {
                Log <SessionManagerItem> .Error(e.Message);
            }
        }