| package dbus |
| |
| import ( |
| "strings" |
| ) |
| |
| // MatchOption specifies option for dbus routing match rule. Options can be constructed with WithMatch* helpers. |
| // For full list of available options consult |
| // https://dbus.freedesktop.org/doc/dbus-specification.html#message-bus-routing-match-rules |
| type MatchOption struct { |
| key string |
| value string |
| } |
| |
| func formatMatchOptions(options []MatchOption) string { |
| items := make([]string, 0, len(options)) |
| for _, option := range options { |
| items = append(items, option.key+"='"+option.value+"'") |
| } |
| return strings.Join(items, ",") |
| } |
| |
| // WithMatchOption creates match option with given key and value |
| func WithMatchOption(key, value string) MatchOption { |
| return MatchOption{key, value} |
| } |
| |
| // doesn't make sense to export this option because clients can only |
| // subscribe to messages with signal type. |
| func withMatchType(typ string) MatchOption { |
| return WithMatchOption("type", typ) |
| } |
| |
| // WithMatchSender sets sender match option. |
| func WithMatchSender(sender string) MatchOption { |
| return WithMatchOption("sender", sender) |
| } |
| |
| // WithMatchSender sets interface match option. |
| func WithMatchInterface(iface string) MatchOption { |
| return WithMatchOption("interface", iface) |
| } |
| |
| // WithMatchMember sets member match option. |
| func WithMatchMember(member string) MatchOption { |
| return WithMatchOption("member", member) |
| } |
| |
| // WithMatchObjectPath creates match option that filters events based on given path |
| func WithMatchObjectPath(path ObjectPath) MatchOption { |
| return WithMatchOption("path", string(path)) |
| } |
| |
| // WithMatchPathNamespace sets path_namespace match option. |
| func WithMatchPathNamespace(namespace ObjectPath) MatchOption { |
| return WithMatchOption("path_namespace", string(namespace)) |
| } |
| |
| // WithMatchDestination sets destination match option. |
| func WithMatchDestination(destination string) MatchOption { |
| return WithMatchOption("destination", destination) |
| } |