summaryrefslogtreecommitdiffstats
path: root/mono/Message.cs
blob: 84bd12ecc477b8df35dc6ba6baffd0b218a3af81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
namespace DBus {
  
  using System;
  using System.Runtime.InteropServices;
  
  public class Message {

    public Message (string name,
                    string dest_service) {
      raw = dbus_message_new (name, dest_service);
    }

    public string Name {
      get {
        return dbus_message_get_name (raw);
      }
    }
    
    IntPtr raw;

    ~Message () {
      dbus_message_unref (raw);
    }
    
    Message (IntPtr r) {
      raw = r;
      dbus_message_ref (r);
    }
    
    // static constructor runs before any methods 
    static Message () {
      
    }
      
    const string libname = "libdbus-1.so.0";
    
    [DllImport (libname, EntryPoint="dbus_message_new")]
      private extern static IntPtr dbus_message_new (string name,
                                                     string dest_service);

    [DllImport (libname, EntryPoint="dbus_message_unref")]
      private extern static void dbus_message_unref (IntPtr ptr);

    [DllImport (libname, EntryPoint="dbus_message_ref")]
      private extern static void dbus_message_ref (IntPtr ptr);

    [DllImport (libname, EntryPoint="dbus_message_get_name")]
      private extern static string dbus_message_get_name (IntPtr ptr);
  }
}