index.html
Main Page
|
modules.html
Modules
|
namespaces.html
Namespace List
|
hierarchy.html
Class Hierarchy
|
annotated.html
Data Structures
|
dirs.html
Directories
|
files.html
File List
|
namespacemembers.html
Namespace Members
|
functions.html
Data Fields
|
pages.html
Related Pages
dir_000000.html
mono
Server.cs
00001
namespace
DBus
00002 {
00003
using
System;
00004
using
System.Runtime.InteropServices;
00005
using
System.Diagnostics;
00006
classDBus_1_1Server.html
00007
public
class
classDBus_1_1Server.html
Server
00008   {
00009
private
IntPtr rawServer;
00010
00014
private
static
int
slot = -1;
00015
00016
private
string address = null;
00017
00018
private
classDBus_1_1Server.html
Server
(IntPtr rawServer)
00019     {
00020       RawServer = rawServer;
00021     }
00022
classDBus_1_1Server.html#a0
00023
public
classDBus_1_1Server.html
Server
(string address)
00024     {
00025
structDBus_1_1Error.html
Error
error =
new
structDBus_1_1Error.html
Error
();
00026       error.
structDBus_1_1Error.html#a0
Init
();
00027       RawServer = dbus_server_listen(address, ref error);
00028
if
(RawServer != IntPtr.Zero){
00029         dbus_server_unref(RawServer);
00030       }
else
{
00031
throw
new
classDBus_1_1DBusException.html
DBusException
(error);
00032       }
00033     }
00034
00035     ~
classDBus_1_1Server.html
Server
()
00036     {
00037
if
(RawServer != IntPtr.Zero) {
00038         dbus_server_unref(rawServer);
00039       }
00040
00041       RawServer = IntPtr.Zero;
00042     }
00043
00044
public
string
classDBus_1_1Server.html#00
Address
classDBus_1_1Server.html#00
00045
{
00046       get
00047         {
00048
if
(address == null) {
00049             address = dbus_server_get_address(rawServer);
00050           }
00051
00052
return
address;
00053         }
00054     }
00055
00056
private
int
Slot
00057     {
00058       get
00059         {
00060
if
(slot == -1)
00061             {
00062
// We need to initialize the slot
00063
if
(!dbus_server_allocate_data_slot (ref slot))
00064
throw
new
OutOfMemoryException ();
00065
00066               Debug.Assert (slot >= 0);
00067             }
00068
00069
return
slot;
00070         }
00071     }
00072
00073     internal IntPtr RawServer
00074     {
00075       get
00076         {
00077
return
rawServer;
00078         }
00079       set
00080         {
00081
if
(value == rawServer)
00082
return
;
00083
00084
if
(rawServer != IntPtr.Zero)
00085             {
00086
// Get the reference to this
00087               IntPtr rawThis = dbus_server_get_data (rawServer, Slot);
00088               Debug.Assert (rawThis != IntPtr.Zero);
00089
00090
// Blank over the reference
00091               dbus_server_set_data (rawServer, Slot, IntPtr.Zero, IntPtr.Zero);
00092
00093
// Free the reference
00094               ((GCHandle) rawThis).Free();
00095
00096
// Unref the connection
00097               dbus_server_unref(rawServer);
00098             }
00099
00100
this
.rawServer = value;
00101
00102
if
(rawServer != IntPtr.Zero)
00103             {
00104               GCHandle rawThis;
00105
00106               dbus_server_ref (rawServer);
00107
00108
// We store a weak reference to the C# object on the C object
00109               rawThis = GCHandle.Alloc (
this
, GCHandleType.WeakTrackResurrection);
00110
00111               dbus_server_set_data(rawServer, Slot, (IntPtr) rawThis, IntPtr.Zero);
00112             }
00113         }
00114     }
00115
00116     [DllImport (
"dbus-1"
, EntryPoint=
"dbus_server_listen"
)]
00117
private
extern
static
IntPtr dbus_server_listen(string address, ref Error error);
00118
00119     [DllImport (
"dbus-1"
, EntryPoint=
"dbus_server_unref"
)]
00120
private
extern
static
IntPtr dbus_server_unref(IntPtr rawServer);
00121
00122     [DllImport (
"dbus-1"
, EntryPoint=
"dbus_server_ref"
)]
00123
private
extern
static
void
dbus_server_ref(IntPtr rawServer);
00124
00125     [DllImport (
"dbus-1"
, EntryPoint=
"dbus_server_disconnect"
)]
00126
private
extern
static
void
dbus_server_disconnect(IntPtr rawServer);
00127
00128     [DllImport (
"dbus-1"
, EntryPoint=
"dbus_server_get_address"
)]
00129
private
extern
static
string dbus_server_get_address(IntPtr rawServer);
00130
00131     [DllImport (
"dbus-1"
, EntryPoint=
"dbus_server_set_data"
)]
00132
private
extern
static
bool
dbus_server_set_data(IntPtr rawServer,
00133
int
slot,
00134                                                     IntPtr data,
00135                                                     IntPtr freeDataFunc);
00136
00137     [DllImport (
"dbus-1"
, EntryPoint=
"dbus_server_get_data"
)]
00138
private
extern
static
IntPtr dbus_server_get_data(IntPtr rawServer,
00139
int
slot);
00140
00141     [DllImport (
"dbus-1"
, EntryPoint=
"dbus_server_allocate_data_slot"
)]
00142
private
extern
static
bool
dbus_server_allocate_data_slot (ref
int
slot);
00143
00144     [DllImport (
"dbus-1"
, EntryPoint=
"dbus_server_free_data_slot"
)]
00145
private
extern
static
void
dbus_server_free_data_slot (ref
int
slot);
00146
00147   }
00148 }
Generated on Tue Sep 13 01:28:08 2005 for D-BUS by
http://www.doxygen.org/index.html
doxygen
1.4.4
