本文整理汇总了Golang中github.com/godbus/dbus.Conn.Signal方法的典型用法代码示例。如果您正苦于以下问题:Golang Conn.Signal方法的具体用法?Golang Conn.Signal怎么用?Golang Conn.Signal使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/godbus/dbus.Conn
的用法示例。
在下文中一共展示了Conn.Signal方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: dbusSignalHandler
func (fw *Interface) dbusSignalHandler(bus *dbus.Conn) {
rule := fmt.Sprintf("type='signal',sender='%s',path='%s',interface='%s',member='Reloaded'", firewalldName, firewalldPath, firewalldInterface)
bus.BusObject().Call("org.freedesktop.DBus.AddMatch", 0, rule)
rule = fmt.Sprintf("type='signal',interface='org.freedesktop.DBus',member='NameOwnerChanged',path='/org/freedesktop/DBus',sender='org.freedesktop.DBus',arg0='%s'", firewalldName)
bus.BusObject().Call("org.freedesktop.DBus.AddMatch", 0, rule)
signal := make(chan *dbus.Signal, 10)
bus.Signal(signal)
for s := range signal {
if s.Name == "org.freedesktop.DBus.NameOwnerChanged" {
name := s.Body[0].(string)
new_owner := s.Body[2].(string)
if name != firewalldName || len(new_owner) == 0 {
continue
}
// FirewallD startup (specifically the part where it deletes
// all existing iptables rules) may not yet be complete when
// we get this signal, so make a dummy request to it to
// synchronize.
fw.obj.Call(firewalldInterface+".getDefaultZone", 0)
fw.reload()
} else if s.Name == firewalldInterface+".Reloaded" {
fw.reload()
}
}
}
示例2: NewAllJoynBridge
func NewAllJoynBridge(bus *dbus.Conn) *AllJoynBridge {
bridge := new(AllJoynBridge)
bridge.bus = bus
bridge.signals = make(chan *dbus.Signal, 100)
bridge.services = make(map[string]*AllJoynServiceInfo)
bridge.sessions = []uint32{}
sbuffer := make(chan *dbus.Signal, 100)
go bridge.signalsPump(sbuffer)
bus.Signal(sbuffer)
return bridge
}