1
// Permission is hereby granted, free of charge, to any person obtaining
2
// a copy of this software and associated documentation files (the
3
// "Software"), to deal in the Software without restriction, including
4
// without limitation the rights to use, copy, modify, merge, publish,
5
// distribute, sublicense, and/or sell copies of the Software, and to
6
// permit persons to whom the Software is furnished to do so, subject to
7
// the following conditions:
9
// The above copyright notice and this permission notice shall be
10
// included in all copies or substantial portions of the Software.
12
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
// Copyright (c) 2007-2008 Novell, Inc.
23
// Jackson Harper (jackson@ximian.com)
30
using System.Threading;
31
using System.Diagnostics;
32
using System.Collections.Generic;
35
using org.freedesktop.DBus;
38
namespace MoonlightTests {
40
public static class DbusServices {
42
private static Thread worker_thread;
43
private static readonly string BusName = "mono.moonlight.tests";
45
private static List<IDbusService> services = new List<IDbusService> ();
47
public static void Register (IDbusService service)
49
services.Add (service);
52
public static void Start ()
54
Bus bus = Bus.Session;
55
RequestNameReply reply;
57
reply = bus.RequestName (BusName, NameFlag.ReplaceExisting | NameFlag.AllowReplacement);
58
if (!(reply == RequestNameReply.PrimaryOwner)) {
59
Console.Error.WriteLine ("Unable to request dbus bus name while registering object ({0})", reply);
63
foreach (IDbusService service in services) {
64
bus.Register (BusName, service.GetObjectPath (), service);
67
worker_thread = new Thread (DbusWorker);
68
worker_thread.IsBackground = true;
69
worker_thread.Start ();
72
public static void Stop ()
74
if (worker_thread != null)
75
worker_thread.Abort ();
78
private static void DbusWorker ()
80
Bus bus = Bus.Session;