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 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
{
53 if (connection
== null) {
54 dbus_g_thread_init ();
55 connection
= Bus
.GetSessionBus ();
61 internal static Service Service
{
63 if (service
== null) {
65 Driver
.ServiceOwnerChanged
+= OnNameOwnerChanged
;
67 Driver
.NameOwnerChanged
+= OnNameOwnerChanged
;
69 service
= DBus
.Service
.Get (Connection
, Name
);
75 internal static BusDriver Driver
{
78 driver
= BusDriver
.New (Connection
);
84 internal static void OnNameOwnerChanged (string name
,
90 if (oldOwner
== "") { // New service added
91 //System.Console.WriteLine ("BeagleDaemon up");
93 if (BeagleUpAgain
!= null)
96 } else if (newOwner
== "") { // Existing service deleted
97 //System.Console.WriteLine ("BeagleDaemon down");
101 if (BeagleDown
!= null)