1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package mediaconnect
4
5import (
6	"time"
7
8	"github.com/aws/aws-sdk-go/aws"
9	"github.com/aws/aws-sdk-go/aws/request"
10)
11
12// WaitUntilFlowActive uses the AWS MediaConnect API operation
13// DescribeFlow to wait for a condition to be met before returning.
14// If the condition is not met within the max attempt window, an error will
15// be returned.
16func (c *MediaConnect) WaitUntilFlowActive(input *DescribeFlowInput) error {
17	return c.WaitUntilFlowActiveWithContext(aws.BackgroundContext(), input)
18}
19
20// WaitUntilFlowActiveWithContext is an extended version of WaitUntilFlowActive.
21// With the support for passing in a context and options to configure the
22// Waiter and the underlying request options.
23//
24// The context must be non-nil and will be used for request cancellation. If
25// the context is nil a panic will occur. In the future the SDK may create
26// sub-contexts for http.Requests. See https://golang.org/pkg/context/
27// for more information on using Contexts.
28func (c *MediaConnect) WaitUntilFlowActiveWithContext(ctx aws.Context, input *DescribeFlowInput, opts ...request.WaiterOption) error {
29	w := request.Waiter{
30		Name:        "WaitUntilFlowActive",
31		MaxAttempts: 40,
32		Delay:       request.ConstantWaiterDelay(3 * time.Second),
33		Acceptors: []request.WaiterAcceptor{
34			{
35				State:   request.SuccessWaiterState,
36				Matcher: request.PathWaiterMatch, Argument: "Flow.Status",
37				Expected: "ACTIVE",
38			},
39			{
40				State:   request.RetryWaiterState,
41				Matcher: request.PathWaiterMatch, Argument: "Flow.Status",
42				Expected: "STARTING",
43			},
44			{
45				State:   request.RetryWaiterState,
46				Matcher: request.PathWaiterMatch, Argument: "Flow.Status",
47				Expected: "UPDATING",
48			},
49			{
50				State:    request.RetryWaiterState,
51				Matcher:  request.StatusWaiterMatch,
52				Expected: 500,
53			},
54			{
55				State:    request.RetryWaiterState,
56				Matcher:  request.StatusWaiterMatch,
57				Expected: 503,
58			},
59			{
60				State:   request.FailureWaiterState,
61				Matcher: request.PathWaiterMatch, Argument: "Flow.Status",
62				Expected: "ERROR",
63			},
64		},
65		Logger: c.Config.Logger,
66		NewRequest: func(opts []request.Option) (*request.Request, error) {
67			var inCpy *DescribeFlowInput
68			if input != nil {
69				tmp := *input
70				inCpy = &tmp
71			}
72			req, _ := c.DescribeFlowRequest(inCpy)
73			req.SetContext(ctx)
74			req.ApplyOptions(opts...)
75			return req, nil
76		},
77	}
78	w.ApplyOptions(opts...)
79
80	return w.WaitWithContext(ctx)
81}
82
83// WaitUntilFlowDeleted uses the AWS MediaConnect API operation
84// DescribeFlow to wait for a condition to be met before returning.
85// If the condition is not met within the max attempt window, an error will
86// be returned.
87func (c *MediaConnect) WaitUntilFlowDeleted(input *DescribeFlowInput) error {
88	return c.WaitUntilFlowDeletedWithContext(aws.BackgroundContext(), input)
89}
90
91// WaitUntilFlowDeletedWithContext is an extended version of WaitUntilFlowDeleted.
92// With the support for passing in a context and options to configure the
93// Waiter and the underlying request options.
94//
95// The context must be non-nil and will be used for request cancellation. If
96// the context is nil a panic will occur. In the future the SDK may create
97// sub-contexts for http.Requests. See https://golang.org/pkg/context/
98// for more information on using Contexts.
99func (c *MediaConnect) WaitUntilFlowDeletedWithContext(ctx aws.Context, input *DescribeFlowInput, opts ...request.WaiterOption) error {
100	w := request.Waiter{
101		Name:        "WaitUntilFlowDeleted",
102		MaxAttempts: 40,
103		Delay:       request.ConstantWaiterDelay(3 * time.Second),
104		Acceptors: []request.WaiterAcceptor{
105			{
106				State:    request.SuccessWaiterState,
107				Matcher:  request.StatusWaiterMatch,
108				Expected: 404,
109			},
110			{
111				State:   request.RetryWaiterState,
112				Matcher: request.PathWaiterMatch, Argument: "Flow.Status",
113				Expected: "DELETING",
114			},
115			{
116				State:    request.RetryWaiterState,
117				Matcher:  request.StatusWaiterMatch,
118				Expected: 500,
119			},
120			{
121				State:    request.RetryWaiterState,
122				Matcher:  request.StatusWaiterMatch,
123				Expected: 503,
124			},
125			{
126				State:   request.FailureWaiterState,
127				Matcher: request.PathWaiterMatch, Argument: "Flow.Status",
128				Expected: "ERROR",
129			},
130		},
131		Logger: c.Config.Logger,
132		NewRequest: func(opts []request.Option) (*request.Request, error) {
133			var inCpy *DescribeFlowInput
134			if input != nil {
135				tmp := *input
136				inCpy = &tmp
137			}
138			req, _ := c.DescribeFlowRequest(inCpy)
139			req.SetContext(ctx)
140			req.ApplyOptions(opts...)
141			return req, nil
142		},
143	}
144	w.ApplyOptions(opts...)
145
146	return w.WaitWithContext(ctx)
147}
148
149// WaitUntilFlowStandby uses the AWS MediaConnect API operation
150// DescribeFlow to wait for a condition to be met before returning.
151// If the condition is not met within the max attempt window, an error will
152// be returned.
153func (c *MediaConnect) WaitUntilFlowStandby(input *DescribeFlowInput) error {
154	return c.WaitUntilFlowStandbyWithContext(aws.BackgroundContext(), input)
155}
156
157// WaitUntilFlowStandbyWithContext is an extended version of WaitUntilFlowStandby.
158// With the support for passing in a context and options to configure the
159// Waiter and the underlying request options.
160//
161// The context must be non-nil and will be used for request cancellation. If
162// the context is nil a panic will occur. In the future the SDK may create
163// sub-contexts for http.Requests. See https://golang.org/pkg/context/
164// for more information on using Contexts.
165func (c *MediaConnect) WaitUntilFlowStandbyWithContext(ctx aws.Context, input *DescribeFlowInput, opts ...request.WaiterOption) error {
166	w := request.Waiter{
167		Name:        "WaitUntilFlowStandby",
168		MaxAttempts: 40,
169		Delay:       request.ConstantWaiterDelay(3 * time.Second),
170		Acceptors: []request.WaiterAcceptor{
171			{
172				State:   request.SuccessWaiterState,
173				Matcher: request.PathWaiterMatch, Argument: "Flow.Status",
174				Expected: "STANDBY",
175			},
176			{
177				State:   request.RetryWaiterState,
178				Matcher: request.PathWaiterMatch, Argument: "Flow.Status",
179				Expected: "STOPPING",
180			},
181			{
182				State:    request.RetryWaiterState,
183				Matcher:  request.StatusWaiterMatch,
184				Expected: 500,
185			},
186			{
187				State:    request.RetryWaiterState,
188				Matcher:  request.StatusWaiterMatch,
189				Expected: 503,
190			},
191			{
192				State:   request.FailureWaiterState,
193				Matcher: request.PathWaiterMatch, Argument: "Flow.Status",
194				Expected: "ERROR",
195			},
196		},
197		Logger: c.Config.Logger,
198		NewRequest: func(opts []request.Option) (*request.Request, error) {
199			var inCpy *DescribeFlowInput
200			if input != nil {
201				tmp := *input
202				inCpy = &tmp
203			}
204			req, _ := c.DescribeFlowRequest(inCpy)
205			req.SetContext(ctx)
206			req.ApplyOptions(opts...)
207			return req, nil
208		},
209	}
210	w.ApplyOptions(opts...)
211
212	return w.WaitWithContext(ctx)
213}
214