All pastes #255763 Raw Edit

hal_

public text v1 · immutable
#255763 ·published 2006-11-23 09:46 UTC
rendered paste body
##################################################################
Hal sends me the following still non-introspectable onMount Event:
##################################################################

signal sender=:1.0 -> dest=(null destination) path=/org/freedesktop/Hal/devices/volume_uuid_A070_C4A5; interface=org.freedesktop.Hal.Device; member=PropertyModified

   int32 2
   array [
      struct {
         string "volume.mount_point"
         boolean false
         boolean false
      }
      struct {
         string "volume.is_mounted"
         boolean false
         boolean false
      }
   ]

#######################################
I used this to hand-craft the following
#######################################

<node>
	<interface name="org.freedesktop.Hal.Device">

		<signal name="PropertyModified">
			<arg name="len" type="i"/>
			<arg name="properties" type="a(sbb)"/>
    		</signal>
	</interface>
</node>

########################################
and CreateInterface transformed it into:  (well, struct1 changed to Entry by me)
########################################

public interface Device extends DBusInterface
{
	
	public static class PropertyModified extends DBusSignal
	   {

			
		    public final int len;
		    public final List<Entry> properties;
		    public PropertyModified(String path, int len, List<Entry> properties) throws DBusException
		      {
		         super(path, len, properties);
		         this.len = len;
		         this.properties = properties;
		      }

	   }
}

public final class Entry extends Struct
{
   @Position(0)
   public final String a;
   @Position(1)
   public final boolean b;
   @Position(2)
   public final boolean c;
  public Entry(String a, boolean b, boolean c)
  {
   this.a = a;
   this.b = b;
   this.c = c;
  }
}

############################################################
with this in place, I successfully register a SignalHandler:
############################################################
// ... getting system bus first ...
conn.addSigHandler(Device.PropertyModified.class, StupidSigHandler );

############################################
and now, on every mount/umount event I get:
############################################

<= ERROR: (=> :1.0) org.freedesktop.dbus.DBusExecutionException {5,195}
=> ERROR: (org.freedesktop.DBus => :1.10) org.freedesktop.DBus.Error.AccessDenied {5,5}

(My Signal Handler is never called)