forked from sarim/goibus
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathbus.go
More file actions
47 lines (36 loc) · 1.09 KB
/
bus.go
File metadata and controls
47 lines (36 loc) · 1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package goibus
import "github.com/godbus/dbus/v5"
type Bus struct {
dbusConn *dbus.Conn
dbusObject dbus.BusObject
ibusObject dbus.BusObject
}
func NewBus() *Bus {
doPanic := func(err error) {
if err != nil {
panic(err)
}
}
addr := GetAddress()
conn, err := dbus.Dial(addr)
doPanic(err)
err = conn.Auth(GetUserAuth())
doPanic(err)
err = conn.Hello()
doPanic(err)
dbusObject := conn.Object(BUS_DAEMON_NAME, dbus.ObjectPath(BUS_DAEMON_PATH))
ibusObject := conn.Object(IBUS_SERVICE_IBUS, dbus.ObjectPath(IBUS_PATH_IBUS))
return &Bus{conn, dbusObject, ibusObject}
}
func (bus *Bus) CallMethod(name string, flags dbus.Flags, args ...interface{}) *dbus.Call {
return bus.ibusObject.Call(bus.ibusObject.Destination()+"."+name, flags, args...)
}
func (bus *Bus) RequestName(name string, flags dbus.RequestNameFlags) (dbus.RequestNameReply, error) {
return bus.dbusConn.RequestName(name, flags)
}
func (bus *Bus) RegisterComponent(component *Component) {
bus.CallMethod("RegisterComponent", 0, dbus.MakeVariant(component))
}
func (bus *Bus) GetDbusConn() *dbus.Conn {
return bus.dbusConn
}