2005-04-19 Gabor Kelemen <kelemeng@gnome.hu>
[beagle.git] / BeagleClient / DBusisms.cs
blob2d45e18507f0b88b9f433533cdbe3d5fbd9adc01
1 //
2 // SearchWindow.cs
3 //
4 // Copyright (C) 2004 Novell, Inc.
5 //
7 //
8 // Permission is hereby granted, free of charge, to any person obtaining a copy
9 // of this software and associated documentation files (the "Software"), to deal
10 // in the Software without restriction, including without limitation the rights
11 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 // copies of the Software, and to permit persons to whom the Software is
13 // furnished to do so, subject to the following conditions:
15 // The above copyright notice and this permission notice shall be included in all
16 // copies or substantial portions of the Software.
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 // SOFTWARE.
27 using System;
28 using System.Runtime.InteropServices;
29 using DBus;
31 namespace Beagle
33 public class DBusisms {
35 static public readonly string Name = "com.novell.Beagle";
36 static public readonly string FactoryPath = "/com/novell/Beagle/Factory";
37 static public readonly string RemoteControlPath = "/com/novell/Beagle/RemoteControl";
38 static public readonly string WebHistoryIndexerPath = "/com/novell/Beagle/WebHistoryIndexer";
40 public delegate void Callback ();
41 static public event Callback BeagleUpAgain;
42 static public event Callback BeagleDown;
44 static Connection connection = null;
45 static Service service = null;
46 static BusDriver driver = null;
48 [DllImport ("dbus-glib-1")]
49 private extern static void dbus_g_thread_init ();
51 internal static Connection Connection {
52 get {
53 if (connection == null) {
54 dbus_g_thread_init ();
55 connection = Bus.GetSessionBus ();
57 return connection;
61 internal static Service Service {
62 get {
63 if (service == null) {
64 #if HAVE_OLD_DBUS
65 Driver.ServiceOwnerChanged += OnNameOwnerChanged;
66 #else
67 Driver.NameOwnerChanged += OnNameOwnerChanged;
68 #endif
69 service = DBus.Service.Get (Connection, Name);
71 return service;
75 internal static BusDriver Driver {
76 get {
77 if (driver == null) {
78 driver = BusDriver.New (Connection);
80 return driver;
84 internal static void OnNameOwnerChanged (string name,
85 string oldOwner,
86 string newOwner)
88 if (name == Name) {
90 if (oldOwner == "") { // New service added
91 //System.Console.WriteLine ("BeagleDaemon up");
93 if (BeagleUpAgain != null)
94 BeagleUpAgain ();
96 } else if (newOwner == "") { // Existing service deleted
97 //System.Console.WriteLine ("BeagleDaemon down");
99 service = null;
101 if (BeagleDown != null)
102 BeagleDown ();