4 // Copyright (C) 2004 Novell, Inc.
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
28 using System
.Runtime
.InteropServices
;
33 public class DBusisms
{
35 static public readonly string ServiceName
= "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";
39 static public readonly string FileSystemIndexerPath
= "/com/novell/Beagle/FileSystemIndexer";
41 public delegate void Callback ();
42 static public event Callback BeagleUpAgain
;
43 static public event Callback BeagleDown
;
46 static Connection connection
= null;
47 static Service service
= null;
48 static BusDriver driver
= null;
50 [DllImport ("dbus-glib-1")]
51 private extern static void dbus_g_thread_init ();
53 internal static Connection Connection
{
55 if (connection
== null) {
56 dbus_g_thread_init ();
57 connection
= Bus
.GetSessionBus ();
63 internal static Service Service
{
65 if (service
== null) {
66 Driver
.ServiceOwnerChanged
+= OnServiceOwnerChanged
;
67 service
= DBus
.Service
.Get (Connection
, ServiceName
);
73 internal static BusDriver Driver
{
76 driver
= BusDriver
.New (Connection
);
82 internal static void OnServiceOwnerChanged (string serviceName
,
86 if (serviceName
== ServiceName
) {
88 if (oldOwner
== "") { // New service added
89 //System.Console.WriteLine ("BeagleDaemon up");
91 if (BeagleUpAgain
!= null)
94 } else if (newOwner
== "") { // Existing service deleted
95 //System.Console.WriteLine ("BeagleDaemon down");
99 if (BeagleDown
!= null)