mirror of
https://github.com/containers/podman.git
synced 2025-05-22 17:46:52 +08:00
Bump github.com/coreos/go-systemd/v22 from 22.3.0 to 22.3.1
Bumps [github.com/coreos/go-systemd/v22](https://github.com/coreos/go-systemd) from 22.3.0 to 22.3.1. - [Release notes](https://github.com/coreos/go-systemd/releases) - [Commits](https://github.com/coreos/go-systemd/compare/v22.3.0...v22.3.1) Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
4
go.mod
4
go.mod
@ -17,7 +17,7 @@ require (
|
|||||||
github.com/containers/ocicrypt v1.1.0
|
github.com/containers/ocicrypt v1.1.0
|
||||||
github.com/containers/psgo v1.5.2
|
github.com/containers/psgo v1.5.2
|
||||||
github.com/containers/storage v1.28.1
|
github.com/containers/storage v1.28.1
|
||||||
github.com/coreos/go-systemd/v22 v22.3.0
|
github.com/coreos/go-systemd/v22 v22.3.1
|
||||||
github.com/coreos/stream-metadata-go v0.0.0-20210225230131-70edb9eb47b3
|
github.com/coreos/stream-metadata-go v0.0.0-20210225230131-70edb9eb47b3
|
||||||
github.com/cri-o/ocicni v0.2.1-0.20210301205850-541cf7c703cf
|
github.com/cri-o/ocicni v0.2.1-0.20210301205850-541cf7c703cf
|
||||||
github.com/cyphar/filepath-securejoin v0.2.2
|
github.com/cyphar/filepath-securejoin v0.2.2
|
||||||
@ -30,7 +30,7 @@ require (
|
|||||||
github.com/docker/go-units v0.4.0
|
github.com/docker/go-units v0.4.0
|
||||||
github.com/fsnotify/fsnotify v1.4.9
|
github.com/fsnotify/fsnotify v1.4.9
|
||||||
github.com/ghodss/yaml v1.0.0
|
github.com/ghodss/yaml v1.0.0
|
||||||
github.com/godbus/dbus/v5 v5.0.3
|
github.com/godbus/dbus/v5 v5.0.4
|
||||||
github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf
|
github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf
|
||||||
github.com/google/uuid v1.2.0
|
github.com/google/uuid v1.2.0
|
||||||
github.com/gorilla/mux v1.8.0
|
github.com/gorilla/mux v1.8.0
|
||||||
|
7
go.sum
7
go.sum
@ -210,8 +210,8 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9
|
|||||||
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
||||||
github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
|
github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
|
||||||
github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
|
github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
|
||||||
github.com/coreos/go-systemd/v22 v22.3.0 h1:C8u/Ljj8G8O6rqWJh2J8cDyeEFBMWvXlvJ/ccMyzcqw=
|
github.com/coreos/go-systemd/v22 v22.3.1 h1:7OO2CXWMYNDdaAzP51t4lCCZWwpQHmvPbm9sxWjm3So=
|
||||||
github.com/coreos/go-systemd/v22 v22.3.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
|
github.com/coreos/go-systemd/v22 v22.3.1/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||||
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||||
github.com/coreos/stream-metadata-go v0.0.0-20210225230131-70edb9eb47b3 h1:0JspqV66RwYqYfvi8lCUoL5zUZMh9uN4hx/J5+NRXIE=
|
github.com/coreos/stream-metadata-go v0.0.0-20210225230131-70edb9eb47b3 h1:0JspqV66RwYqYfvi8lCUoL5zUZMh9uN4hx/J5+NRXIE=
|
||||||
@ -317,8 +317,9 @@ github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblf
|
|||||||
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
|
github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
|
||||||
github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8=
|
github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8=
|
||||||
github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
|
github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
|
||||||
github.com/godbus/dbus/v5 v5.0.3 h1:ZqHaoEF7TBzh4jzPmqVhE/5A1z9of6orkAe5uHoAeME=
|
|
||||||
github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||||
|
github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA=
|
||||||
|
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||||
github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
||||||
github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU=
|
github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU=
|
||||||
github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c=
|
github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c=
|
||||||
|
2
vendor/github.com/coreos/go-systemd/v22/sdjournal/journal.go
generated
vendored
2
vendor/github.com/coreos/go-systemd/v22/sdjournal/journal.go
generated
vendored
@ -1155,7 +1155,7 @@ func (j *Journal) GetBootID() (string, error) {
|
|||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
id128StringMax := C.ulong(C.SD_ID128_STRING_MAX)
|
id128StringMax := C.size_t(C.SD_ID128_STRING_MAX)
|
||||||
c := (*C.char)(C.malloc(id128StringMax))
|
c := (*C.char)(C.malloc(id128StringMax))
|
||||||
defer C.free(unsafe.Pointer(c))
|
defer C.free(unsafe.Pointer(c))
|
||||||
C.my_sd_id128_to_string(sd_id128_to_string, boot_id, c)
|
C.my_sd_id128_to_string(sd_id128_to_string, boot_id, c)
|
||||||
|
50
vendor/github.com/godbus/dbus/v5/.travis.yml
generated
vendored
50
vendor/github.com/godbus/dbus/v5/.travis.yml
generated
vendored
@ -1,50 +0,0 @@
|
|||||||
dist: bionic
|
|
||||||
language: go
|
|
||||||
go_import_path: github.com/godbus/dbus
|
|
||||||
|
|
||||||
go:
|
|
||||||
- 1.11.x
|
|
||||||
- 1.12.x
|
|
||||||
- 1.13.x
|
|
||||||
- tip
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
fast_finish: true
|
|
||||||
allow_failures:
|
|
||||||
- go: tip
|
|
||||||
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- dbus
|
|
||||||
- dbus-x11
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- export GO111MODULE=on
|
|
||||||
|
|
||||||
script:
|
|
||||||
- go test -v -race -mod=readonly ./... # Run all the tests with the race detector enabled
|
|
||||||
- go vet ./... # go vet is the official Go static analyzer
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
include:
|
|
||||||
# The build matrix doesn't cover build stages, so manually expand
|
|
||||||
# the jobs with anchors
|
|
||||||
- &multiarch
|
|
||||||
stage: "Multiarch Test"
|
|
||||||
go: 1.11.x
|
|
||||||
env: TARGETS="386 arm arm64 ppc64le"
|
|
||||||
before_install:
|
|
||||||
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
|
||||||
script:
|
|
||||||
- |
|
|
||||||
set -e
|
|
||||||
for target in $TARGETS; do
|
|
||||||
printf "\e[1mRunning test suite under ${target}.\e[0m\n"
|
|
||||||
GOARCH="$target" go test -v ./...
|
|
||||||
printf "\n\n"
|
|
||||||
done
|
|
||||||
- <<: *multiarch
|
|
||||||
go: 1.12.x
|
|
||||||
- <<: *multiarch
|
|
||||||
go: 1.13.x
|
|
4
vendor/github.com/godbus/dbus/v5/README.markdown
generated
vendored
4
vendor/github.com/godbus/dbus/v5/README.markdown
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
[](https://travis-ci.org/godbus/dbus)
|

|
||||||
|
|
||||||
dbus
|
dbus
|
||||||
----
|
----
|
||||||
@ -32,6 +32,8 @@ gives a short overview over the basic usage.
|
|||||||
#### Projects using godbus
|
#### Projects using godbus
|
||||||
- [notify](https://github.com/esiqveland/notify) provides desktop notifications over dbus into a library.
|
- [notify](https://github.com/esiqveland/notify) provides desktop notifications over dbus into a library.
|
||||||
- [go-bluetooth](https://github.com/muka/go-bluetooth) provides a bluetooth client over bluez dbus API.
|
- [go-bluetooth](https://github.com/muka/go-bluetooth) provides a bluetooth client over bluez dbus API.
|
||||||
|
- [playerbm](https://github.com/altdesktop/playerbm) a bookmark utility for media players.
|
||||||
|
- [iwd](https://github.com/shibumi/iwd) go bindings for the internet wireless daemon "iwd".
|
||||||
|
|
||||||
Please note that the API is considered unstable for now and may change without
|
Please note that the API is considered unstable for now and may change without
|
||||||
further notice.
|
further notice.
|
||||||
|
2
vendor/github.com/godbus/dbus/v5/auth.go
generated
vendored
2
vendor/github.com/godbus/dbus/v5/auth.go
generated
vendored
@ -37,7 +37,7 @@ const (
|
|||||||
|
|
||||||
// Auth defines the behaviour of an authentication mechanism.
|
// Auth defines the behaviour of an authentication mechanism.
|
||||||
type Auth interface {
|
type Auth interface {
|
||||||
// Return the name of the mechnism, the argument to the first AUTH command
|
// Return the name of the mechanism, the argument to the first AUTH command
|
||||||
// and the next status.
|
// and the next status.
|
||||||
FirstData() (name, resp []byte, status AuthStatus)
|
FirstData() (name, resp []byte, status AuthStatus)
|
||||||
|
|
||||||
|
9
vendor/github.com/godbus/dbus/v5/call.go
generated
vendored
9
vendor/github.com/godbus/dbus/v5/call.go
generated
vendored
@ -24,6 +24,15 @@ type Call struct {
|
|||||||
// Holds the response once the call is done.
|
// Holds the response once the call is done.
|
||||||
Body []interface{}
|
Body []interface{}
|
||||||
|
|
||||||
|
// ResponseSequence stores the sequence number of the DBus message containing
|
||||||
|
// the call response (or error). This can be compared to the sequence number
|
||||||
|
// of other call responses and signals on this connection to determine their
|
||||||
|
// relative ordering on the underlying DBus connection.
|
||||||
|
// For errors, ResponseSequence is populated only if the error came from a
|
||||||
|
// DBusMessage that was received or if there was an error receiving. In case of
|
||||||
|
// failure to make the call, ResponseSequence will be NoSequence.
|
||||||
|
ResponseSequence Sequence
|
||||||
|
|
||||||
// tracks context and canceler
|
// tracks context and canceler
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
ctxCanceler context.CancelFunc
|
ctxCanceler context.CancelFunc
|
||||||
|
143
vendor/github.com/godbus/dbus/v5/conn.go
generated
vendored
143
vendor/github.com/godbus/dbus/v5/conn.go
generated
vendored
@ -45,6 +45,7 @@ type Conn struct {
|
|||||||
serialGen SerialGenerator
|
serialGen SerialGenerator
|
||||||
inInt Interceptor
|
inInt Interceptor
|
||||||
outInt Interceptor
|
outInt Interceptor
|
||||||
|
auth []Auth
|
||||||
|
|
||||||
names *nameTracker
|
names *nameTracker
|
||||||
calls *callTracker
|
calls *callTracker
|
||||||
@ -59,7 +60,8 @@ type Conn struct {
|
|||||||
func SessionBus() (conn *Conn, err error) {
|
func SessionBus() (conn *Conn, err error) {
|
||||||
sessionBusLck.Lock()
|
sessionBusLck.Lock()
|
||||||
defer sessionBusLck.Unlock()
|
defer sessionBusLck.Unlock()
|
||||||
if sessionBus != nil {
|
if sessionBus != nil &&
|
||||||
|
sessionBus.Connected() {
|
||||||
return sessionBus, nil
|
return sessionBus, nil
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
@ -67,19 +69,7 @@ func SessionBus() (conn *Conn, err error) {
|
|||||||
sessionBus = conn
|
sessionBus = conn
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
conn, err = SessionBusPrivate()
|
conn, err = ConnectSessionBus()
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if err = conn.Auth(nil); err != nil {
|
|
||||||
conn.Close()
|
|
||||||
conn = nil
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if err = conn.Hello(); err != nil {
|
|
||||||
conn.Close()
|
|
||||||
conn = nil
|
|
||||||
}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,7 +106,8 @@ func SessionBusPrivateHandler(handler Handler, signalHandler SignalHandler) (*Co
|
|||||||
func SystemBus() (conn *Conn, err error) {
|
func SystemBus() (conn *Conn, err error) {
|
||||||
systemBusLck.Lock()
|
systemBusLck.Lock()
|
||||||
defer systemBusLck.Unlock()
|
defer systemBusLck.Unlock()
|
||||||
if systemBus != nil {
|
if systemBus != nil &&
|
||||||
|
systemBus.Connected() {
|
||||||
return systemBus, nil
|
return systemBus, nil
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
@ -124,20 +115,42 @@ func SystemBus() (conn *Conn, err error) {
|
|||||||
systemBus = conn
|
systemBus = conn
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
conn, err = SystemBusPrivate()
|
conn, err = ConnectSystemBus()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ConnectSessionBus connects to the session bus.
|
||||||
|
func ConnectSessionBus(opts ...ConnOption) (*Conn, error) {
|
||||||
|
address, err := getSessionBusAddress()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return nil, err
|
||||||
}
|
}
|
||||||
if err = conn.Auth(nil); err != nil {
|
return Connect(address, opts...)
|
||||||
conn.Close()
|
}
|
||||||
conn = nil
|
|
||||||
return
|
// ConnectSystemBus connects to the system bus.
|
||||||
|
func ConnectSystemBus(opts ...ConnOption) (*Conn, error) {
|
||||||
|
return Connect(getSystemBusPlatformAddress(), opts...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Connect connects to the given address.
|
||||||
|
//
|
||||||
|
// Returned connection is ready to use and doesn't require calling
|
||||||
|
// Auth and Hello methods to make it usable.
|
||||||
|
func Connect(address string, opts ...ConnOption) (*Conn, error) {
|
||||||
|
conn, err := Dial(address, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if err = conn.Auth(conn.auth); err != nil {
|
||||||
|
_ = conn.Close()
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
if err = conn.Hello(); err != nil {
|
if err = conn.Hello(); err != nil {
|
||||||
conn.Close()
|
_ = conn.Close()
|
||||||
conn = nil
|
return nil, err
|
||||||
}
|
}
|
||||||
return
|
return conn, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SystemBusPrivate returns a new private connection to the system bus.
|
// SystemBusPrivate returns a new private connection to the system bus.
|
||||||
@ -197,6 +210,14 @@ func WithSerialGenerator(gen SerialGenerator) ConnOption {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithAuth sets authentication methods for the auth conversation.
|
||||||
|
func WithAuth(methods ...Auth) ConnOption {
|
||||||
|
return func(conn *Conn) error {
|
||||||
|
conn.auth = methods
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Interceptor intercepts incoming and outgoing messages.
|
// Interceptor intercepts incoming and outgoing messages.
|
||||||
type Interceptor func(msg *Message)
|
type Interceptor func(msg *Message)
|
||||||
|
|
||||||
@ -309,6 +330,11 @@ func (conn *Conn) Context() context.Context {
|
|||||||
return conn.ctx
|
return conn.ctx
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Connected returns whether conn is connected
|
||||||
|
func (conn *Conn) Connected() bool {
|
||||||
|
return conn.ctx.Err() == nil
|
||||||
|
}
|
||||||
|
|
||||||
// Eavesdrop causes conn to send all incoming messages to the given channel
|
// Eavesdrop causes conn to send all incoming messages to the given channel
|
||||||
// without further processing. Method replies, errors and signals will not be
|
// without further processing. Method replies, errors and signals will not be
|
||||||
// sent to the appropriate channels and method calls will not be handled. If nil
|
// sent to the appropriate channels and method calls will not be handled. If nil
|
||||||
@ -342,8 +368,9 @@ func (conn *Conn) Hello() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// inWorker runs in an own goroutine, reading incoming messages from the
|
// inWorker runs in an own goroutine, reading incoming messages from the
|
||||||
// transport and dispatching them appropiately.
|
// transport and dispatching them appropriately.
|
||||||
func (conn *Conn) inWorker() {
|
func (conn *Conn) inWorker() {
|
||||||
|
sequenceGen := newSequenceGenerator()
|
||||||
for {
|
for {
|
||||||
msg, err := conn.ReadMessage()
|
msg, err := conn.ReadMessage()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -352,7 +379,7 @@ func (conn *Conn) inWorker() {
|
|||||||
// anything but to shut down all stuff and returns errors to all
|
// anything but to shut down all stuff and returns errors to all
|
||||||
// pending replies.
|
// pending replies.
|
||||||
conn.Close()
|
conn.Close()
|
||||||
conn.calls.finalizeAllWithError(err)
|
conn.calls.finalizeAllWithError(sequenceGen, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// invalid messages are ignored
|
// invalid messages are ignored
|
||||||
@ -381,13 +408,14 @@ func (conn *Conn) inWorker() {
|
|||||||
if conn.inInt != nil {
|
if conn.inInt != nil {
|
||||||
conn.inInt(msg)
|
conn.inInt(msg)
|
||||||
}
|
}
|
||||||
|
sequence := sequenceGen.next()
|
||||||
switch msg.Type {
|
switch msg.Type {
|
||||||
case TypeError:
|
case TypeError:
|
||||||
conn.serialGen.RetireSerial(conn.calls.handleDBusError(msg))
|
conn.serialGen.RetireSerial(conn.calls.handleDBusError(sequence, msg))
|
||||||
case TypeMethodReply:
|
case TypeMethodReply:
|
||||||
conn.serialGen.RetireSerial(conn.calls.handleReply(msg))
|
conn.serialGen.RetireSerial(conn.calls.handleReply(sequence, msg))
|
||||||
case TypeSignal:
|
case TypeSignal:
|
||||||
conn.handleSignal(msg)
|
conn.handleSignal(sequence, msg)
|
||||||
case TypeMethodCall:
|
case TypeMethodCall:
|
||||||
go conn.handleCall(msg)
|
go conn.handleCall(msg)
|
||||||
}
|
}
|
||||||
@ -395,7 +423,7 @@ func (conn *Conn) inWorker() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (conn *Conn) handleSignal(msg *Message) {
|
func (conn *Conn) handleSignal(sequence Sequence, msg *Message) {
|
||||||
iface := msg.Headers[FieldInterface].value.(string)
|
iface := msg.Headers[FieldInterface].value.(string)
|
||||||
member := msg.Headers[FieldMember].value.(string)
|
member := msg.Headers[FieldMember].value.(string)
|
||||||
// as per http://dbus.freedesktop.org/doc/dbus-specification.html ,
|
// as per http://dbus.freedesktop.org/doc/dbus-specification.html ,
|
||||||
@ -425,6 +453,7 @@ func (conn *Conn) handleSignal(msg *Message) {
|
|||||||
Path: msg.Headers[FieldPath].value.(ObjectPath),
|
Path: msg.Headers[FieldPath].value.(ObjectPath),
|
||||||
Name: iface + "." + member,
|
Name: iface + "." + member,
|
||||||
Body: msg.Body,
|
Body: msg.Body,
|
||||||
|
Sequence: sequence,
|
||||||
}
|
}
|
||||||
conn.signalHandler.DeliverSignal(iface, member, signal)
|
conn.signalHandler.DeliverSignal(iface, member, signal)
|
||||||
}
|
}
|
||||||
@ -442,6 +471,9 @@ func (conn *Conn) Object(dest string, path ObjectPath) BusObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (conn *Conn) sendMessageAndIfClosed(msg *Message, ifClosed func()) {
|
func (conn *Conn) sendMessageAndIfClosed(msg *Message, ifClosed func()) {
|
||||||
|
if msg.serial == 0 {
|
||||||
|
msg.serial = conn.getSerial()
|
||||||
|
}
|
||||||
if conn.outInt != nil {
|
if conn.outInt != nil {
|
||||||
conn.outInt(msg)
|
conn.outInt(msg)
|
||||||
}
|
}
|
||||||
@ -473,16 +505,16 @@ func (conn *Conn) send(ctx context.Context, msg *Message, ch chan *Call) *Call {
|
|||||||
if ctx == nil {
|
if ctx == nil {
|
||||||
panic("nil context")
|
panic("nil context")
|
||||||
}
|
}
|
||||||
|
if ch == nil {
|
||||||
|
ch = make(chan *Call, 1)
|
||||||
|
} else if cap(ch) == 0 {
|
||||||
|
panic("dbus: unbuffered channel passed to (*Conn).Send")
|
||||||
|
}
|
||||||
|
|
||||||
var call *Call
|
var call *Call
|
||||||
ctx, canceler := context.WithCancel(ctx)
|
ctx, canceler := context.WithCancel(ctx)
|
||||||
msg.serial = conn.getSerial()
|
msg.serial = conn.getSerial()
|
||||||
if msg.Type == TypeMethodCall && msg.Flags&FlagNoReplyExpected == 0 {
|
if msg.Type == TypeMethodCall && msg.Flags&FlagNoReplyExpected == 0 {
|
||||||
if ch == nil {
|
|
||||||
ch = make(chan *Call, 5)
|
|
||||||
} else if cap(ch) == 0 {
|
|
||||||
panic("dbus: unbuffered channel passed to (*Conn).Send")
|
|
||||||
}
|
|
||||||
call = new(Call)
|
call = new(Call)
|
||||||
call.Destination, _ = msg.Headers[FieldDestination].value.(string)
|
call.Destination, _ = msg.Headers[FieldDestination].value.(string)
|
||||||
call.Path, _ = msg.Headers[FieldPath].value.(ObjectPath)
|
call.Path, _ = msg.Headers[FieldPath].value.(ObjectPath)
|
||||||
@ -504,7 +536,8 @@ func (conn *Conn) send(ctx context.Context, msg *Message, ch chan *Call) *Call {
|
|||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
canceler()
|
canceler()
|
||||||
call = &Call{Err: nil}
|
call = &Call{Err: nil, Done: ch}
|
||||||
|
ch <- call
|
||||||
conn.sendMessageAndIfClosed(msg, func() {
|
conn.sendMessageAndIfClosed(msg, func() {
|
||||||
call = &Call{Err: ErrClosed}
|
call = &Call{Err: ErrClosed}
|
||||||
})
|
})
|
||||||
@ -529,7 +562,6 @@ func (conn *Conn) sendError(err error, dest string, serial uint32) {
|
|||||||
}
|
}
|
||||||
msg := new(Message)
|
msg := new(Message)
|
||||||
msg.Type = TypeError
|
msg.Type = TypeError
|
||||||
msg.serial = conn.getSerial()
|
|
||||||
msg.Headers = make(map[HeaderField]Variant)
|
msg.Headers = make(map[HeaderField]Variant)
|
||||||
if dest != "" {
|
if dest != "" {
|
||||||
msg.Headers[FieldDestination] = MakeVariant(dest)
|
msg.Headers[FieldDestination] = MakeVariant(dest)
|
||||||
@ -548,7 +580,6 @@ func (conn *Conn) sendError(err error, dest string, serial uint32) {
|
|||||||
func (conn *Conn) sendReply(dest string, serial uint32, values ...interface{}) {
|
func (conn *Conn) sendReply(dest string, serial uint32, values ...interface{}) {
|
||||||
msg := new(Message)
|
msg := new(Message)
|
||||||
msg.Type = TypeMethodReply
|
msg.Type = TypeMethodReply
|
||||||
msg.serial = conn.getSerial()
|
|
||||||
msg.Headers = make(map[HeaderField]Variant)
|
msg.Headers = make(map[HeaderField]Variant)
|
||||||
if dest != "" {
|
if dest != "" {
|
||||||
msg.Headers[FieldDestination] = MakeVariant(dest)
|
msg.Headers[FieldDestination] = MakeVariant(dest)
|
||||||
@ -564,8 +595,14 @@ func (conn *Conn) sendReply(dest string, serial uint32, values ...interface{}) {
|
|||||||
// AddMatchSignal registers the given match rule to receive broadcast
|
// AddMatchSignal registers the given match rule to receive broadcast
|
||||||
// signals based on their contents.
|
// signals based on their contents.
|
||||||
func (conn *Conn) AddMatchSignal(options ...MatchOption) error {
|
func (conn *Conn) AddMatchSignal(options ...MatchOption) error {
|
||||||
|
return conn.AddMatchSignalContext(context.Background(), options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddMatchSignalContext acts like AddMatchSignal but takes a context.
|
||||||
|
func (conn *Conn) AddMatchSignalContext(ctx context.Context, options ...MatchOption) error {
|
||||||
options = append([]MatchOption{withMatchType("signal")}, options...)
|
options = append([]MatchOption{withMatchType("signal")}, options...)
|
||||||
return conn.busObj.Call(
|
return conn.busObj.CallWithContext(
|
||||||
|
ctx,
|
||||||
"org.freedesktop.DBus.AddMatch", 0,
|
"org.freedesktop.DBus.AddMatch", 0,
|
||||||
formatMatchOptions(options),
|
formatMatchOptions(options),
|
||||||
).Store()
|
).Store()
|
||||||
@ -573,8 +610,14 @@ func (conn *Conn) AddMatchSignal(options ...MatchOption) error {
|
|||||||
|
|
||||||
// RemoveMatchSignal removes the first rule that matches previously registered with AddMatchSignal.
|
// RemoveMatchSignal removes the first rule that matches previously registered with AddMatchSignal.
|
||||||
func (conn *Conn) RemoveMatchSignal(options ...MatchOption) error {
|
func (conn *Conn) RemoveMatchSignal(options ...MatchOption) error {
|
||||||
|
return conn.RemoveMatchSignalContext(context.Background(), options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveMatchSignalContext acts like RemoveMatchSignal but takes a context.
|
||||||
|
func (conn *Conn) RemoveMatchSignalContext(ctx context.Context, options ...MatchOption) error {
|
||||||
options = append([]MatchOption{withMatchType("signal")}, options...)
|
options = append([]MatchOption{withMatchType("signal")}, options...)
|
||||||
return conn.busObj.Call(
|
return conn.busObj.CallWithContext(
|
||||||
|
ctx,
|
||||||
"org.freedesktop.DBus.RemoveMatch", 0,
|
"org.freedesktop.DBus.RemoveMatch", 0,
|
||||||
formatMatchOptions(options),
|
formatMatchOptions(options),
|
||||||
).Store()
|
).Store()
|
||||||
@ -643,6 +686,7 @@ type Signal struct {
|
|||||||
Path ObjectPath
|
Path ObjectPath
|
||||||
Name string
|
Name string
|
||||||
Body []interface{}
|
Body []interface{}
|
||||||
|
Sequence Sequence
|
||||||
}
|
}
|
||||||
|
|
||||||
// transport is a D-Bus transport.
|
// transport is a D-Bus transport.
|
||||||
@ -825,25 +869,25 @@ func (tracker *callTracker) track(sn uint32, call *Call) {
|
|||||||
tracker.lck.Unlock()
|
tracker.lck.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tracker *callTracker) handleReply(msg *Message) uint32 {
|
func (tracker *callTracker) handleReply(sequence Sequence, msg *Message) uint32 {
|
||||||
serial := msg.Headers[FieldReplySerial].value.(uint32)
|
serial := msg.Headers[FieldReplySerial].value.(uint32)
|
||||||
tracker.lck.RLock()
|
tracker.lck.RLock()
|
||||||
_, ok := tracker.calls[serial]
|
_, ok := tracker.calls[serial]
|
||||||
tracker.lck.RUnlock()
|
tracker.lck.RUnlock()
|
||||||
if ok {
|
if ok {
|
||||||
tracker.finalizeWithBody(serial, msg.Body)
|
tracker.finalizeWithBody(serial, sequence, msg.Body)
|
||||||
}
|
}
|
||||||
return serial
|
return serial
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tracker *callTracker) handleDBusError(msg *Message) uint32 {
|
func (tracker *callTracker) handleDBusError(sequence Sequence, msg *Message) uint32 {
|
||||||
serial := msg.Headers[FieldReplySerial].value.(uint32)
|
serial := msg.Headers[FieldReplySerial].value.(uint32)
|
||||||
tracker.lck.RLock()
|
tracker.lck.RLock()
|
||||||
_, ok := tracker.calls[serial]
|
_, ok := tracker.calls[serial]
|
||||||
tracker.lck.RUnlock()
|
tracker.lck.RUnlock()
|
||||||
if ok {
|
if ok {
|
||||||
name, _ := msg.Headers[FieldErrorName].value.(string)
|
name, _ := msg.Headers[FieldErrorName].value.(string)
|
||||||
tracker.finalizeWithError(serial, Error{name, msg.Body})
|
tracker.finalizeWithError(serial, sequence, Error{name, msg.Body})
|
||||||
}
|
}
|
||||||
return serial
|
return serial
|
||||||
}
|
}
|
||||||
@ -856,7 +900,7 @@ func (tracker *callTracker) handleSendError(msg *Message, err error) {
|
|||||||
_, ok := tracker.calls[msg.serial]
|
_, ok := tracker.calls[msg.serial]
|
||||||
tracker.lck.RUnlock()
|
tracker.lck.RUnlock()
|
||||||
if ok {
|
if ok {
|
||||||
tracker.finalizeWithError(msg.serial, err)
|
tracker.finalizeWithError(msg.serial, NoSequence, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -871,7 +915,7 @@ func (tracker *callTracker) finalize(sn uint32) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tracker *callTracker) finalizeWithBody(sn uint32, body []interface{}) {
|
func (tracker *callTracker) finalizeWithBody(sn uint32, sequence Sequence, body []interface{}) {
|
||||||
tracker.lck.Lock()
|
tracker.lck.Lock()
|
||||||
c, ok := tracker.calls[sn]
|
c, ok := tracker.calls[sn]
|
||||||
if ok {
|
if ok {
|
||||||
@ -880,11 +924,12 @@ func (tracker *callTracker) finalizeWithBody(sn uint32, body []interface{}) {
|
|||||||
tracker.lck.Unlock()
|
tracker.lck.Unlock()
|
||||||
if ok {
|
if ok {
|
||||||
c.Body = body
|
c.Body = body
|
||||||
|
c.ResponseSequence = sequence
|
||||||
c.done()
|
c.done()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tracker *callTracker) finalizeWithError(sn uint32, err error) {
|
func (tracker *callTracker) finalizeWithError(sn uint32, sequence Sequence, err error) {
|
||||||
tracker.lck.Lock()
|
tracker.lck.Lock()
|
||||||
c, ok := tracker.calls[sn]
|
c, ok := tracker.calls[sn]
|
||||||
if ok {
|
if ok {
|
||||||
@ -893,11 +938,12 @@ func (tracker *callTracker) finalizeWithError(sn uint32, err error) {
|
|||||||
tracker.lck.Unlock()
|
tracker.lck.Unlock()
|
||||||
if ok {
|
if ok {
|
||||||
c.Err = err
|
c.Err = err
|
||||||
|
c.ResponseSequence = sequence
|
||||||
c.done()
|
c.done()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tracker *callTracker) finalizeAllWithError(err error) {
|
func (tracker *callTracker) finalizeAllWithError(sequenceGen *sequenceGenerator, err error) {
|
||||||
tracker.lck.Lock()
|
tracker.lck.Lock()
|
||||||
closedCalls := make([]*Call, 0, len(tracker.calls))
|
closedCalls := make([]*Call, 0, len(tracker.calls))
|
||||||
for sn := range tracker.calls {
|
for sn := range tracker.calls {
|
||||||
@ -907,6 +953,7 @@ func (tracker *callTracker) finalizeAllWithError(err error) {
|
|||||||
tracker.lck.Unlock()
|
tracker.lck.Unlock()
|
||||||
for _, call := range closedCalls {
|
for _, call := range closedCalls {
|
||||||
call.Err = err
|
call.Err = err
|
||||||
|
call.ResponseSequence = sequenceGen.next()
|
||||||
call.done()
|
call.done()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
4
vendor/github.com/godbus/dbus/v5/dbus.go
generated
vendored
4
vendor/github.com/godbus/dbus/v5/dbus.go
generated
vendored
@ -28,6 +28,7 @@ var (
|
|||||||
interfaceType = reflect.TypeOf((*interface{})(nil)).Elem()
|
interfaceType = reflect.TypeOf((*interface{})(nil)).Elem()
|
||||||
unixFDType = reflect.TypeOf(UnixFD(0))
|
unixFDType = reflect.TypeOf(UnixFD(0))
|
||||||
unixFDIndexType = reflect.TypeOf(UnixFDIndex(0))
|
unixFDIndexType = reflect.TypeOf(UnixFDIndex(0))
|
||||||
|
errType = reflect.TypeOf((*error)(nil)).Elem()
|
||||||
)
|
)
|
||||||
|
|
||||||
// An InvalidTypeError signals that a value which cannot be represented in the
|
// An InvalidTypeError signals that a value which cannot be represented in the
|
||||||
@ -63,6 +64,9 @@ func storeInterfaces(src, dest interface{}) error {
|
|||||||
|
|
||||||
func store(dest, src reflect.Value) error {
|
func store(dest, src reflect.Value) error {
|
||||||
if dest.Kind() == reflect.Ptr {
|
if dest.Kind() == reflect.Ptr {
|
||||||
|
if dest.IsNil() {
|
||||||
|
dest.Set(reflect.New(dest.Type().Elem()))
|
||||||
|
}
|
||||||
return store(dest.Elem(), src)
|
return store(dest.Elem(), src)
|
||||||
}
|
}
|
||||||
switch src.Kind() {
|
switch src.Kind() {
|
||||||
|
20
vendor/github.com/godbus/dbus/v5/default_handler.go
generated
vendored
20
vendor/github.com/godbus/dbus/v5/default_handler.go
generated
vendored
@ -126,14 +126,28 @@ func (m exportedMethod) Call(args ...interface{}) ([]interface{}, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret := m.Value.Call(params)
|
ret := m.Value.Call(params)
|
||||||
|
var err error
|
||||||
err := ret[t.NumOut()-1].Interface().(*Error)
|
nilErr := false // The reflection will find almost-nils, let's only pass back clean ones!
|
||||||
|
if t.NumOut() > 0 {
|
||||||
|
if e, ok := ret[t.NumOut()-1].Interface().(*Error); ok { // godbus *Error
|
||||||
|
nilErr = ret[t.NumOut()-1].IsNil()
|
||||||
ret = ret[:t.NumOut()-1]
|
ret = ret[:t.NumOut()-1]
|
||||||
|
err = e
|
||||||
|
} else if ret[t.NumOut()-1].Type().Implements(errType) { // Go error
|
||||||
|
i := ret[t.NumOut()-1].Interface()
|
||||||
|
if i == nil {
|
||||||
|
nilErr = ret[t.NumOut()-1].IsNil()
|
||||||
|
} else {
|
||||||
|
err = i.(error)
|
||||||
|
}
|
||||||
|
ret = ret[:t.NumOut()-1]
|
||||||
|
}
|
||||||
|
}
|
||||||
out := make([]interface{}, len(ret))
|
out := make([]interface{}, len(ret))
|
||||||
for i, val := range ret {
|
for i, val := range ret {
|
||||||
out[i] = val.Interface()
|
out[i] = val.Interface()
|
||||||
}
|
}
|
||||||
if err == nil {
|
if nilErr || err == nil {
|
||||||
//concrete type to interface nil is a special case
|
//concrete type to interface nil is a special case
|
||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
39
vendor/github.com/godbus/dbus/v5/export.go
generated
vendored
39
vendor/github.com/godbus/dbus/v5/export.go
generated
vendored
@ -69,6 +69,22 @@ func getMethods(in interface{}, mapping map[string]string) map[string]reflect.Va
|
|||||||
return methods
|
return methods
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getAllMethods(in interface{}, mapping map[string]string) map[string]reflect.Value {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
methods := make(map[string]reflect.Value)
|
||||||
|
val := reflect.ValueOf(in)
|
||||||
|
typ := val.Type()
|
||||||
|
for i := 0; i < typ.NumMethod(); i++ {
|
||||||
|
methtype := typ.Method(i)
|
||||||
|
method := val.Method(i)
|
||||||
|
// map names while building table
|
||||||
|
methods[computeMethodName(methtype.Name, mapping)] = method
|
||||||
|
}
|
||||||
|
return methods
|
||||||
|
}
|
||||||
|
|
||||||
func standardMethodArgumentDecode(m Method, sender string, msg *Message, body []interface{}) ([]interface{}, error) {
|
func standardMethodArgumentDecode(m Method, sender string, msg *Message, body []interface{}) ([]interface{}, error) {
|
||||||
pointers := make([]interface{}, m.NumArguments())
|
pointers := make([]interface{}, m.NumArguments())
|
||||||
decode := make([]interface{}, 0, len(body))
|
decode := make([]interface{}, 0, len(body))
|
||||||
@ -159,7 +175,6 @@ func (conn *Conn) handleCall(msg *Message) {
|
|||||||
if msg.Flags&FlagNoReplyExpected == 0 {
|
if msg.Flags&FlagNoReplyExpected == 0 {
|
||||||
reply := new(Message)
|
reply := new(Message)
|
||||||
reply.Type = TypeMethodReply
|
reply.Type = TypeMethodReply
|
||||||
reply.serial = conn.getSerial()
|
|
||||||
reply.Headers = make(map[HeaderField]Variant)
|
reply.Headers = make(map[HeaderField]Variant)
|
||||||
if hasSender {
|
if hasSender {
|
||||||
reply.Headers[FieldDestination] = msg.Headers[FieldSender]
|
reply.Headers[FieldDestination] = msg.Headers[FieldSender]
|
||||||
@ -195,7 +210,6 @@ func (conn *Conn) Emit(path ObjectPath, name string, values ...interface{}) erro
|
|||||||
}
|
}
|
||||||
msg := new(Message)
|
msg := new(Message)
|
||||||
msg.Type = TypeSignal
|
msg.Type = TypeSignal
|
||||||
msg.serial = conn.getSerial()
|
|
||||||
msg.Headers = make(map[HeaderField]Variant)
|
msg.Headers = make(map[HeaderField]Variant)
|
||||||
msg.Headers[FieldInterface] = MakeVariant(iface)
|
msg.Headers[FieldInterface] = MakeVariant(iface)
|
||||||
msg.Headers[FieldMember] = MakeVariant(member)
|
msg.Headers[FieldMember] = MakeVariant(member)
|
||||||
@ -247,6 +261,18 @@ func (conn *Conn) Export(v interface{}, path ObjectPath, iface string) error {
|
|||||||
return conn.ExportWithMap(v, nil, path, iface)
|
return conn.ExportWithMap(v, nil, path, iface)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ExportAll registers all exported methods defined by the given object on
|
||||||
|
// the message bus.
|
||||||
|
//
|
||||||
|
// Unlike Export there is no requirement to have the last parameter as type
|
||||||
|
// *Error. If you want to be able to return error then you can append an error
|
||||||
|
// type parameter to your method signature. If the error returned is not nil,
|
||||||
|
// it is sent back to the caller as an error. Otherwise, a method reply is
|
||||||
|
// sent with the other return values as its body.
|
||||||
|
func (conn *Conn) ExportAll(v interface{}, path ObjectPath, iface string) error {
|
||||||
|
return conn.export(getAllMethods(v, nil), path, iface, false)
|
||||||
|
}
|
||||||
|
|
||||||
// ExportWithMap works exactly like Export but provides the ability to remap
|
// ExportWithMap works exactly like Export but provides the ability to remap
|
||||||
// method names (e.g. export a lower-case method).
|
// method names (e.g. export a lower-case method).
|
||||||
//
|
//
|
||||||
@ -299,7 +325,9 @@ func (conn *Conn) ExportSubtreeMethodTable(methods map[string]interface{}, path
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (conn *Conn) exportMethodTable(methods map[string]interface{}, path ObjectPath, iface string, includeSubtree bool) error {
|
func (conn *Conn) exportMethodTable(methods map[string]interface{}, path ObjectPath, iface string, includeSubtree bool) error {
|
||||||
out := make(map[string]reflect.Value)
|
var out map[string]reflect.Value
|
||||||
|
if methods != nil {
|
||||||
|
out = make(map[string]reflect.Value)
|
||||||
for name, method := range methods {
|
for name, method := range methods {
|
||||||
rval := reflect.ValueOf(method)
|
rval := reflect.ValueOf(method)
|
||||||
if rval.Kind() != reflect.Func {
|
if rval.Kind() != reflect.Func {
|
||||||
@ -313,6 +341,7 @@ func (conn *Conn) exportMethodTable(methods map[string]interface{}, path ObjectP
|
|||||||
}
|
}
|
||||||
out[name] = rval
|
out[name] = rval
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return conn.export(out, path, iface, includeSubtree)
|
return conn.export(out, path, iface, includeSubtree)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -327,12 +356,12 @@ func (conn *Conn) unexport(h *defaultHandler, path ObjectPath, iface string) err
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// exportWithMap is the worker function for all exports/registrations.
|
// export is the worker function for all exports/registrations.
|
||||||
func (conn *Conn) export(methods map[string]reflect.Value, path ObjectPath, iface string, includeSubtree bool) error {
|
func (conn *Conn) export(methods map[string]reflect.Value, path ObjectPath, iface string, includeSubtree bool) error {
|
||||||
h, ok := conn.handler.(*defaultHandler)
|
h, ok := conn.handler.(*defaultHandler)
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf(
|
return fmt.Errorf(
|
||||||
`dbus: export only allowed on the default hander handler have %T"`,
|
`dbus: export only allowed on the default handler. Received: %T"`,
|
||||||
conn.handler)
|
conn.handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
27
vendor/github.com/godbus/dbus/v5/match.go
generated
vendored
27
vendor/github.com/godbus/dbus/v5/match.go
generated
vendored
@ -1,6 +1,7 @@
|
|||||||
package dbus
|
package dbus
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -60,3 +61,29 @@ func WithMatchPathNamespace(namespace ObjectPath) MatchOption {
|
|||||||
func WithMatchDestination(destination string) MatchOption {
|
func WithMatchDestination(destination string) MatchOption {
|
||||||
return WithMatchOption("destination", destination)
|
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))
|
||||||
|
}
|
||||||
|
65
vendor/github.com/godbus/dbus/v5/object.go
generated
vendored
65
vendor/github.com/godbus/dbus/v5/object.go
generated
vendored
@ -16,6 +16,7 @@ type BusObject interface {
|
|||||||
AddMatchSignal(iface, member string, options ...MatchOption) *Call
|
AddMatchSignal(iface, member string, options ...MatchOption) *Call
|
||||||
RemoveMatchSignal(iface, member string, options ...MatchOption) *Call
|
RemoveMatchSignal(iface, member string, options ...MatchOption) *Call
|
||||||
GetProperty(p string) (Variant, error)
|
GetProperty(p string) (Variant, error)
|
||||||
|
StoreProperty(p string, value interface{}) error
|
||||||
SetProperty(p string, v interface{}) error
|
SetProperty(p string, v interface{}) error
|
||||||
Destination() string
|
Destination() string
|
||||||
Path() ObjectPath
|
Path() ObjectPath
|
||||||
@ -109,7 +110,6 @@ func (o *Object) createCall(ctx context.Context, method string, flags Flags, ch
|
|||||||
method = method[i+1:]
|
method = method[i+1:]
|
||||||
msg := new(Message)
|
msg := new(Message)
|
||||||
msg.Type = TypeMethodCall
|
msg.Type = TypeMethodCall
|
||||||
msg.serial = o.conn.getSerial()
|
|
||||||
msg.Flags = flags & (FlagNoAutoStart | FlagNoReplyExpected)
|
msg.Flags = flags & (FlagNoAutoStart | FlagNoReplyExpected)
|
||||||
msg.Headers = make(map[HeaderField]Variant)
|
msg.Headers = make(map[HeaderField]Variant)
|
||||||
msg.Headers[FieldPath] = MakeVariant(o.path)
|
msg.Headers[FieldPath] = MakeVariant(o.path)
|
||||||
@ -122,68 +122,31 @@ func (o *Object) createCall(ctx context.Context, method string, flags Flags, ch
|
|||||||
if len(args) > 0 {
|
if len(args) > 0 {
|
||||||
msg.Headers[FieldSignature] = MakeVariant(SignatureOf(args...))
|
msg.Headers[FieldSignature] = MakeVariant(SignatureOf(args...))
|
||||||
}
|
}
|
||||||
if msg.Flags&FlagNoReplyExpected == 0 {
|
return o.conn.SendWithContext(ctx, msg, ch)
|
||||||
if ch == nil {
|
|
||||||
ch = make(chan *Call, 1)
|
|
||||||
} else if cap(ch) == 0 {
|
|
||||||
panic("dbus: unbuffered channel passed to (*Object).Go")
|
|
||||||
}
|
|
||||||
ctx, cancel := context.WithCancel(ctx)
|
|
||||||
call := &Call{
|
|
||||||
Destination: o.dest,
|
|
||||||
Path: o.path,
|
|
||||||
Method: method,
|
|
||||||
Args: args,
|
|
||||||
Done: ch,
|
|
||||||
ctxCanceler: cancel,
|
|
||||||
ctx: ctx,
|
|
||||||
}
|
|
||||||
o.conn.calls.track(msg.serial, call)
|
|
||||||
o.conn.sendMessageAndIfClosed(msg, func() {
|
|
||||||
o.conn.calls.handleSendError(msg, ErrClosed)
|
|
||||||
cancel()
|
|
||||||
})
|
|
||||||
go func() {
|
|
||||||
<-ctx.Done()
|
|
||||||
o.conn.calls.handleSendError(msg, ctx.Err())
|
|
||||||
}()
|
|
||||||
|
|
||||||
return call
|
|
||||||
}
|
|
||||||
done := make(chan *Call, 1)
|
|
||||||
call := &Call{
|
|
||||||
Err: nil,
|
|
||||||
Done: done,
|
|
||||||
}
|
|
||||||
defer func() {
|
|
||||||
call.Done <- call
|
|
||||||
close(done)
|
|
||||||
}()
|
|
||||||
o.conn.sendMessageAndIfClosed(msg, func() {
|
|
||||||
call.Err = ErrClosed
|
|
||||||
})
|
|
||||||
return call
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetProperty calls org.freedesktop.DBus.Properties.Get on the given
|
// GetProperty calls org.freedesktop.DBus.Properties.Get on the given
|
||||||
// object. The property name must be given in interface.member notation.
|
// object. The property name must be given in interface.member notation.
|
||||||
func (o *Object) GetProperty(p string) (Variant, error) {
|
func (o *Object) GetProperty(p string) (Variant, error) {
|
||||||
|
var result Variant
|
||||||
|
err := o.StoreProperty(p, &result)
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// StoreProperty calls org.freedesktop.DBus.Properties.Get on the given
|
||||||
|
// object. The property name must be given in interface.member notation.
|
||||||
|
// It stores the returned property into the provided value.
|
||||||
|
func (o *Object) StoreProperty(p string, value interface{}) error {
|
||||||
idx := strings.LastIndex(p, ".")
|
idx := strings.LastIndex(p, ".")
|
||||||
if idx == -1 || idx+1 == len(p) {
|
if idx == -1 || idx+1 == len(p) {
|
||||||
return Variant{}, errors.New("dbus: invalid property " + p)
|
return errors.New("dbus: invalid property " + p)
|
||||||
}
|
}
|
||||||
|
|
||||||
iface := p[:idx]
|
iface := p[:idx]
|
||||||
prop := p[idx+1:]
|
prop := p[idx+1:]
|
||||||
|
|
||||||
result := Variant{}
|
return o.Call("org.freedesktop.DBus.Properties.Get", 0, iface, prop).
|
||||||
err := o.Call("org.freedesktop.DBus.Properties.Get", 0, iface, prop).Store(&result)
|
Store(value)
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return Variant{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return result, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetProperty calls org.freedesktop.DBus.Properties.Set on the given
|
// SetProperty calls org.freedesktop.DBus.Properties.Set on the given
|
||||||
|
24
vendor/github.com/godbus/dbus/v5/sequence.go
generated
vendored
Normal file
24
vendor/github.com/godbus/dbus/v5/sequence.go
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package dbus
|
||||||
|
|
||||||
|
// Sequence represents the value of a monotonically increasing counter.
|
||||||
|
type Sequence uint64
|
||||||
|
|
||||||
|
const (
|
||||||
|
// NoSequence indicates the absence of a sequence value.
|
||||||
|
NoSequence Sequence = 0
|
||||||
|
)
|
||||||
|
|
||||||
|
// sequenceGenerator represents a monotonically increasing counter.
|
||||||
|
type sequenceGenerator struct {
|
||||||
|
nextSequence Sequence
|
||||||
|
}
|
||||||
|
|
||||||
|
func (generator *sequenceGenerator) next() Sequence {
|
||||||
|
result := generator.nextSequence
|
||||||
|
generator.nextSequence++
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
func newSequenceGenerator() *sequenceGenerator {
|
||||||
|
return &sequenceGenerator{nextSequence: 1}
|
||||||
|
}
|
125
vendor/github.com/godbus/dbus/v5/sequential_handler.go
generated
vendored
Normal file
125
vendor/github.com/godbus/dbus/v5/sequential_handler.go
generated
vendored
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
package dbus
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewSequentialSignalHandler returns an instance of a new
|
||||||
|
// signal handler that guarantees sequential processing of signals. It is a
|
||||||
|
// guarantee of this signal handler that signals will be written to
|
||||||
|
// channels in the order they are received on the DBus connection.
|
||||||
|
func NewSequentialSignalHandler() SignalHandler {
|
||||||
|
return &sequentialSignalHandler{}
|
||||||
|
}
|
||||||
|
|
||||||
|
type sequentialSignalHandler struct {
|
||||||
|
mu sync.RWMutex
|
||||||
|
closed bool
|
||||||
|
signals []*sequentialSignalChannelData
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sh *sequentialSignalHandler) DeliverSignal(intf, name string, signal *Signal) {
|
||||||
|
sh.mu.RLock()
|
||||||
|
defer sh.mu.RUnlock()
|
||||||
|
if sh.closed {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, scd := range sh.signals {
|
||||||
|
scd.deliver(signal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sh *sequentialSignalHandler) Terminate() {
|
||||||
|
sh.mu.Lock()
|
||||||
|
defer sh.mu.Unlock()
|
||||||
|
if sh.closed {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, scd := range sh.signals {
|
||||||
|
scd.close()
|
||||||
|
close(scd.ch)
|
||||||
|
}
|
||||||
|
sh.closed = true
|
||||||
|
sh.signals = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sh *sequentialSignalHandler) AddSignal(ch chan<- *Signal) {
|
||||||
|
sh.mu.Lock()
|
||||||
|
defer sh.mu.Unlock()
|
||||||
|
if sh.closed {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sh.signals = append(sh.signals, newSequentialSignalChannelData(ch))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sh *sequentialSignalHandler) RemoveSignal(ch chan<- *Signal) {
|
||||||
|
sh.mu.Lock()
|
||||||
|
defer sh.mu.Unlock()
|
||||||
|
if sh.closed {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for i := len(sh.signals) - 1; i >= 0; i-- {
|
||||||
|
if ch == sh.signals[i].ch {
|
||||||
|
sh.signals[i].close()
|
||||||
|
copy(sh.signals[i:], sh.signals[i+1:])
|
||||||
|
sh.signals[len(sh.signals)-1] = nil
|
||||||
|
sh.signals = sh.signals[:len(sh.signals)-1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type sequentialSignalChannelData struct {
|
||||||
|
ch chan<- *Signal
|
||||||
|
in chan *Signal
|
||||||
|
done chan struct{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func newSequentialSignalChannelData(ch chan<- *Signal) *sequentialSignalChannelData {
|
||||||
|
scd := &sequentialSignalChannelData{
|
||||||
|
ch: ch,
|
||||||
|
in: make(chan *Signal),
|
||||||
|
done: make(chan struct{}),
|
||||||
|
}
|
||||||
|
go scd.bufferSignals()
|
||||||
|
return scd
|
||||||
|
}
|
||||||
|
|
||||||
|
func (scd *sequentialSignalChannelData) bufferSignals() {
|
||||||
|
defer close(scd.done)
|
||||||
|
|
||||||
|
// Ensure that signals are delivered to scd.ch in the same
|
||||||
|
// order they are received from scd.in.
|
||||||
|
var queue []*Signal
|
||||||
|
for {
|
||||||
|
if len(queue) == 0 {
|
||||||
|
signal, ok := <- scd.in
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
queue = append(queue, signal)
|
||||||
|
}
|
||||||
|
select {
|
||||||
|
case scd.ch <- queue[0]:
|
||||||
|
copy(queue, queue[1:])
|
||||||
|
queue[len(queue)-1] = nil
|
||||||
|
queue = queue[:len(queue)-1]
|
||||||
|
case signal, ok := <-scd.in:
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
queue = append(queue, signal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (scd *sequentialSignalChannelData) deliver(signal *Signal) {
|
||||||
|
scd.in <- signal
|
||||||
|
}
|
||||||
|
|
||||||
|
func (scd *sequentialSignalChannelData) close() {
|
||||||
|
close(scd.in)
|
||||||
|
// Ensure that bufferSignals() has exited and won't attempt
|
||||||
|
// any future sends on scd.ch
|
||||||
|
<-scd.done
|
||||||
|
}
|
2
vendor/github.com/godbus/dbus/v5/sig.go
generated
vendored
2
vendor/github.com/godbus/dbus/v5/sig.go
generated
vendored
@ -137,7 +137,7 @@ func ParseSignatureMust(s string) Signature {
|
|||||||
return sig
|
return sig
|
||||||
}
|
}
|
||||||
|
|
||||||
// Empty retruns whether the signature is the empty signature.
|
// Empty returns whether the signature is the empty signature.
|
||||||
func (s Signature) Empty() bool {
|
func (s Signature) Empty() bool {
|
||||||
return s.str == ""
|
return s.str == ""
|
||||||
}
|
}
|
||||||
|
1
vendor/github.com/godbus/dbus/v5/transport_unixcred_freebsd.go
generated
vendored
1
vendor/github.com/godbus/dbus/v5/transport_unixcred_freebsd.go
generated
vendored
@ -10,6 +10,7 @@ package dbus
|
|||||||
/*
|
/*
|
||||||
const int sizeofPtr = sizeof(void*);
|
const int sizeofPtr = sizeof(void*);
|
||||||
#define _WANT_UCRED
|
#define _WANT_UCRED
|
||||||
|
#include <sys/types.h>
|
||||||
#include <sys/ucred.h>
|
#include <sys/ucred.h>
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
6
vendor/github.com/godbus/dbus/v5/variant.go
generated
vendored
6
vendor/github.com/godbus/dbus/v5/variant.go
generated
vendored
@ -142,3 +142,9 @@ func (v Variant) String() string {
|
|||||||
func (v Variant) Value() interface{} {
|
func (v Variant) Value() interface{} {
|
||||||
return v.value
|
return v.value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Store converts the variant into a native go type using the same
|
||||||
|
// mechanism as the "Store" function.
|
||||||
|
func (v Variant) Store(value interface{}) error {
|
||||||
|
return storeInterfaces(v.value, value)
|
||||||
|
}
|
||||||
|
4
vendor/modules.txt
vendored
4
vendor/modules.txt
vendored
@ -233,7 +233,7 @@ github.com/containers/storage/types
|
|||||||
github.com/coreos/go-iptables/iptables
|
github.com/coreos/go-iptables/iptables
|
||||||
# github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e
|
# github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e
|
||||||
github.com/coreos/go-systemd/activation
|
github.com/coreos/go-systemd/activation
|
||||||
# github.com/coreos/go-systemd/v22 v22.3.0
|
# github.com/coreos/go-systemd/v22 v22.3.1
|
||||||
github.com/coreos/go-systemd/v22/activation
|
github.com/coreos/go-systemd/v22/activation
|
||||||
github.com/coreos/go-systemd/v22/daemon
|
github.com/coreos/go-systemd/v22/daemon
|
||||||
github.com/coreos/go-systemd/v22/dbus
|
github.com/coreos/go-systemd/v22/dbus
|
||||||
@ -327,7 +327,7 @@ github.com/fsouza/go-dockerclient
|
|||||||
github.com/ghodss/yaml
|
github.com/ghodss/yaml
|
||||||
# github.com/go-logr/logr v0.2.0
|
# github.com/go-logr/logr v0.2.0
|
||||||
github.com/go-logr/logr
|
github.com/go-logr/logr
|
||||||
# github.com/godbus/dbus/v5 v5.0.3
|
# github.com/godbus/dbus/v5 v5.0.4
|
||||||
github.com/godbus/dbus/v5
|
github.com/godbus/dbus/v5
|
||||||
# github.com/gogo/protobuf v1.3.2
|
# github.com/gogo/protobuf v1.3.2
|
||||||
github.com/gogo/protobuf/gogoproto
|
github.com/gogo/protobuf/gogoproto
|
||||||
|
Reference in New Issue
Block a user