summaryrefslogtreecommitdiff
path: root/vendor/github.com/godbus/dbus/v5/call.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-03-10 19:31:14 +0100
committerGitHub <noreply@github.com>2020-03-10 19:31:14 +0100
commita83a94b095b298c1e8cbcaf20f0744a5807df1de (patch)
tree132e6491ef4e15caa7d7296d2492dbc1f2cb41d8 /vendor/github.com/godbus/dbus/v5/call.go
parent173f430852e52a1acf69b4d9d18da20893031a79 (diff)
parent450361fc640751c2a33210a02ceff0874c9f449b (diff)
downloadpodman-a83a94b095b298c1e8cbcaf20f0744a5807df1de.tar.gz
podman-a83a94b095b298c1e8cbcaf20f0744a5807df1de.tar.bz2
podman-a83a94b095b298c1e8cbcaf20f0744a5807df1de.zip
Merge pull request #5448 from vrothberg/update-systemd
update systemd & dbus dependencies
Diffstat (limited to 'vendor/github.com/godbus/dbus/v5/call.go')
-rw-r--r--vendor/github.com/godbus/dbus/v5/call.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/vendor/github.com/godbus/dbus/v5/call.go b/vendor/github.com/godbus/dbus/v5/call.go
new file mode 100644
index 000000000..2cb189012
--- /dev/null
+++ b/vendor/github.com/godbus/dbus/v5/call.go
@@ -0,0 +1,60 @@
+package dbus
+
+import (
+ "context"
+ "errors"
+)
+
+var errSignature = errors.New("dbus: mismatched signature")
+
+// Call represents a pending or completed method call.
+type Call struct {
+ Destination string
+ Path ObjectPath
+ Method string
+ Args []interface{}
+
+ // Strobes when the call is complete.
+ Done chan *Call
+
+ // After completion, the error status. If this is non-nil, it may be an
+ // error message from the peer (with Error as its type) or some other error.
+ Err error
+
+ // Holds the response once the call is done.
+ Body []interface{}
+
+ // tracks context and canceler
+ ctx context.Context
+ ctxCanceler context.CancelFunc
+}
+
+func (c *Call) Context() context.Context {
+ if c.ctx == nil {
+ return context.Background()
+ }
+
+ return c.ctx
+}
+
+func (c *Call) ContextCancel() {
+ if c.ctxCanceler != nil {
+ c.ctxCanceler()
+ }
+}
+
+// Store stores the body of the reply into the provided pointers. It returns
+// an error if the signatures of the body and retvalues don't match, or if
+// the error status is not nil.
+func (c *Call) Store(retvalues ...interface{}) error {
+ if c.Err != nil {
+ return c.Err
+ }
+
+ return Store(c.Body, retvalues...)
+}
+
+func (c *Call) done() {
+ c.Done <- c
+ c.ContextCancel()
+}