mirror of https://github.com/containers/podman.git
				
				
				
			
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
package dbus
 | 
						|
 | 
						|
import (
 | 
						|
	"strconv"
 | 
						|
	"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)
 | 
						|
}
 | 
						|
 | 
						|
// WithMatchArg sets argN match option, range of N is 0 to 63.
 | 
						|
func WithMatchArg(argIdx int, value string) MatchOption {
 | 
						|
	if argIdx < 0 || argIdx > 63 {
 | 
						|
		panic("range of argument index is 0 to 63")
 | 
						|
	}
 | 
						|
	return WithMatchOption("arg"+strconv.Itoa(argIdx), value)
 | 
						|
}
 | 
						|
 | 
						|
// WithMatchArgPath sets argN path match option, range of N is 0 to 63.
 | 
						|
func WithMatchArgPath(argIdx int, path string) MatchOption {
 | 
						|
	if argIdx < 0 || argIdx > 63 {
 | 
						|
		panic("range of argument index is 0 to 63")
 | 
						|
	}
 | 
						|
	return WithMatchOption("arg"+strconv.Itoa(argIdx)+"path", path)
 | 
						|
}
 | 
						|
 | 
						|
// WithMatchArg0Namespace sets arg0namespace match option.
 | 
						|
func WithMatchArg0Namespace(arg0Namespace string) MatchOption {
 | 
						|
	return WithMatchOption("arg0namespace", arg0Namespace)
 | 
						|
}
 | 
						|
 | 
						|
// WithMatchEavesdrop sets eavesdrop match option.
 | 
						|
func WithMatchEavesdrop(eavesdrop bool) MatchOption {
 | 
						|
	return WithMatchOption("eavesdrop", strconv.FormatBool(eavesdrop))
 | 
						|
}
 |