mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-03-08 16:39:29 +00:00
Several packages are only used while running the e2e suite. These packages are less important to update, as the they can not influence the final executable that is part of the Ceph-CSI container-image. By moving these dependencies out of the main Ceph-CSI go.mod, it is easier to identify if a reported CVE affects Ceph-CSI, or only the testing (like most of the Kubernetes CVEs). Signed-off-by: Niels de Vos <ndevos@ibm.com>
70 lines
1.7 KiB
Go
70 lines
1.7 KiB
Go
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{}
|
|
|
|
// 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
|
|
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()
|
|
}
|