//InitSession method is the first callable. It permits to init a session (Session or System) over the bus and request a name on it. //Parameters : // s -> dbus.SessionType : equal to SESSION or SYSTEM // n -> string : name you want to request over the bus (or "") func (d *Abstraction) InitSession(s SessionType, n string) error { var err error var conn *dbus.Conn if d.Conn != nil { return errors.New("[DBUS ABSTRACTION ERROR - initSession - Session already initialized]") } if s == SESSION { conn, err = dbus.SessionBus() } else { conn, err = dbus.SystemBus() } if err != nil { return err } if n != "" { reply, err := conn.RequestName(n, dbus.NameFlagDoNotQueue) if err != nil { return err } if reply != dbus.RequestNameReplyPrimaryOwner { return errors.New("[DBUS ABSTRACTION ERROR - initSession - name already taken]") } } d.Conn = conn d.Sigmap = make(map[string]chan *AbsSignal) d.Recv = make(chan *dbus.Signal, 1024) go d.signalsHandler() return nil }
// New returns a new Properties structure that manages the given properties. // The key for the first-level map of props is the name of the interface; the // second-level key is the name of the property. The returned structure will be // exported as org.freedesktop.DBus.Properties on path. func New(conn *dbus.Conn, path dbus.ObjectPath, props map[string]map[string]*Prop) *Properties { p := &Properties{m: props, conn: conn, path: path} conn.Export(p, path, "org.freedesktop.DBus.Properties") return p }