Esempio n. 1
0
// Properties retrieves a map[string]string of key/value device properties of the udev device.
func (d *Device) Properties() (r map[string]string) {
	d.lock()
	defer d.unlock()
	r = make(map[string]string)
	for l := C.udev_device_get_properties_list_entry(d.ptr); l != nil; l = C.udev_list_entry_get_next(l) {
		r[C.GoString(C.udev_list_entry_get_name(l))] = C.GoString(C.udev_list_entry_get_value(l))
	}
	return
}
Esempio n. 2
0
// PropertyIterator returns an Iterator over the key/value device properties of the udev device.
// The Iterator is using the github.com/jkeiser/iter package.
// Values are returned as an interface{} and should be cast to []string,
// which will have length 2 and represent a Key/Value pair.
func (d *Device) PropertyIterator() iter.Iterator {
	d.lock()
	defer d.unlock()
	l := C.udev_device_get_properties_list_entry(d.ptr)
	return iter.Iterator{
		Next: func() (item interface{}, err error) {
			d.lock()
			defer d.unlock()
			if l != nil {
				item = []string{
					C.GoString(C.udev_list_entry_get_name(l)),
					C.GoString(C.udev_list_entry_get_value(l)),
				}
				l = C.udev_list_entry_get_next(l)
			} else {
				err = iter.FINISHED
			}
			return
		},
		Close: func() {
		},
	}
}
Esempio n. 3
0
File: udev.go Progetto: jessta/udev
func (e Enumerate) FirstProperties() ListEntry {
	return ListEntry{C.udev_device_get_properties_list_entry(e.ptr)}
}