예제 #1
0
        private void RegisterDBus ()
        {
            try {
                Monitor.Enter (this);
                DBusManager.Bus.TrapSignals ();
                
                if (entry_group != null) {
                    entry_group.Reset ();
                    return;
                }
                
                if (DBusManager.Server.GetState () != AvahiServerState.Running) {
                    throw new ApplicationException ("Avahi Server is not in the Running state");
                }

                ObjectPath path = DBusManager.Server.EntryGroupNew ();
                entry_group = DBusManager.GetObject<IAvahiEntryGroup> (path);
                
                Monitor.Exit (this);
                
                entry_group.StateChanged += OnEntryGroupStateChanged;
            } finally {
                Monitor.Exit (this);
                DBusManager.Bus.UntrapSignals ();
            }
        }
예제 #2
0
        private void RegisterDBus()
        {
            try {
                Monitor.Enter(this);
                DBusManager.Bus.TrapSignals();

                if (entry_group != null)
                {
                    entry_group.Reset();
                    return;
                }

                if (DBusManager.Server.GetState() != AvahiServerState.Running)
                {
                    throw new ApplicationException("Avahi Server is not in the Running state");
                }

                ObjectPath path = DBusManager.Server.EntryGroupNew();
                entry_group = DBusManager.GetObject <IAvahiEntryGroup> (path);

                //Monitor.Exit (this);

                entry_group.StateChanged += OnEntryGroupStateChanged;
            } finally {
                Monitor.Exit(this);
                DBusManager.Bus.UntrapSignals();
            }
        }
예제 #3
0
 public void Dispose()
 {
     lock (this) {
         if (entry_group != null)
         {
             entry_group.Reset();
             entry_group.Free();
             entry_group = null;
         }
     }
 }
예제 #4
0
 public void Dispose ()
 {
     lock (this) {
         if (entry_group != null) {
             entry_group.Reset ();
             entry_group.Free ();
             entry_group = null;
         }
     }
 }