summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/mattermost/logr/v2/timeout.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/mattermost/logr/v2/timeout.go')
-rw-r--r--vendor/github.com/mattermost/logr/v2/timeout.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/vendor/github.com/mattermost/logr/v2/timeout.go b/vendor/github.com/mattermost/logr/v2/timeout.go
new file mode 100644
index 00000000..37737bcf
--- /dev/null
+++ b/vendor/github.com/mattermost/logr/v2/timeout.go
@@ -0,0 +1,34 @@
+package logr
+
+import "github.com/wiggin77/merror"
+
+// timeoutError is returned from functions that can timeout.
+type timeoutError struct {
+ text string
+}
+
+// newTimeoutError returns a TimeoutError.
+func newTimeoutError(text string) timeoutError {
+ return timeoutError{text: text}
+}
+
+// IsTimeoutError returns true if err is a TimeoutError.
+func IsTimeoutError(err error) bool {
+ if _, ok := err.(timeoutError); ok {
+ return true
+ }
+ // if a multi-error, return true if any of the errors
+ // are TimeoutError
+ if merr, ok := err.(*merror.MError); ok {
+ for _, e := range merr.Errors() {
+ if IsTimeoutError(e) {
+ return true
+ }
+ }
+ }
+ return false
+}
+
+func (err timeoutError) Error() string {
+ return err.text
+}