1// Copyright 2019 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Code generated by gapic-generator. DO NOT EDIT.
16
17package datatransfer
18
19import (
20	"context"
21	"fmt"
22	"math"
23	"time"
24
25	"github.com/golang/protobuf/proto"
26	gax "github.com/googleapis/gax-go/v2"
27	"google.golang.org/api/iterator"
28	"google.golang.org/api/option"
29	"google.golang.org/api/transport"
30	datatransferpb "google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1"
31	"google.golang.org/grpc"
32	"google.golang.org/grpc/codes"
33	"google.golang.org/grpc/metadata"
34)
35
36// CallOptions contains the retry settings for each method of Client.
37type CallOptions struct {
38	GetDataSource        []gax.CallOption
39	ListDataSources      []gax.CallOption
40	CreateTransferConfig []gax.CallOption
41	UpdateTransferConfig []gax.CallOption
42	DeleteTransferConfig []gax.CallOption
43	GetTransferConfig    []gax.CallOption
44	ListTransferConfigs  []gax.CallOption
45	ScheduleTransferRuns []gax.CallOption
46	GetTransferRun       []gax.CallOption
47	DeleteTransferRun    []gax.CallOption
48	ListTransferRuns     []gax.CallOption
49	ListTransferLogs     []gax.CallOption
50	CheckValidCreds      []gax.CallOption
51}
52
53func defaultClientOptions() []option.ClientOption {
54	return []option.ClientOption{
55		option.WithEndpoint("bigquerydatatransfer.googleapis.com:443"),
56		option.WithScopes(DefaultAuthScopes()...),
57	}
58}
59
60func defaultCallOptions() *CallOptions {
61	retry := map[[2]string][]gax.CallOption{
62		{"default", "idempotent"}: {
63			gax.WithRetry(func() gax.Retryer {
64				return gax.OnCodes([]codes.Code{
65					codes.DeadlineExceeded,
66					codes.Unavailable,
67				}, gax.Backoff{
68					Initial:    100 * time.Millisecond,
69					Max:        60000 * time.Millisecond,
70					Multiplier: 1.3,
71				})
72			}),
73		},
74	}
75	return &CallOptions{
76		GetDataSource:        retry[[2]string{"default", "idempotent"}],
77		ListDataSources:      retry[[2]string{"default", "idempotent"}],
78		CreateTransferConfig: retry[[2]string{"default", "non_idempotent"}],
79		UpdateTransferConfig: retry[[2]string{"default", "non_idempotent"}],
80		DeleteTransferConfig: retry[[2]string{"default", "idempotent"}],
81		GetTransferConfig:    retry[[2]string{"default", "idempotent"}],
82		ListTransferConfigs:  retry[[2]string{"default", "idempotent"}],
83		ScheduleTransferRuns: retry[[2]string{"default", "non_idempotent"}],
84		GetTransferRun:       retry[[2]string{"default", "idempotent"}],
85		DeleteTransferRun:    retry[[2]string{"default", "idempotent"}],
86		ListTransferRuns:     retry[[2]string{"default", "idempotent"}],
87		ListTransferLogs:     retry[[2]string{"default", "idempotent"}],
88		CheckValidCreds:      retry[[2]string{"default", "idempotent"}],
89	}
90}
91
92// Client is a client for interacting with BigQuery Data Transfer API.
93//
94// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls.
95type Client struct {
96	// The connection to the service.
97	conn *grpc.ClientConn
98
99	// The gRPC API client.
100	client datatransferpb.DataTransferServiceClient
101
102	// The call options for this service.
103	CallOptions *CallOptions
104
105	// The x-goog-* metadata to be sent with each request.
106	xGoogMetadata metadata.MD
107}
108
109// NewClient creates a new data transfer service client.
110//
111// The Google BigQuery Data Transfer Service API enables BigQuery users to
112// configure the transfer of their data from other Google Products into
113// BigQuery. This service contains methods that are end user exposed. It backs
114// up the frontend.
115func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) {
116	conn, err := transport.DialGRPC(ctx, append(defaultClientOptions(), opts...)...)
117	if err != nil {
118		return nil, err
119	}
120	c := &Client{
121		conn:        conn,
122		CallOptions: defaultCallOptions(),
123
124		client: datatransferpb.NewDataTransferServiceClient(conn),
125	}
126	c.setGoogleClientInfo()
127	return c, nil
128}
129
130// Connection returns the client's connection to the API service.
131func (c *Client) Connection() *grpc.ClientConn {
132	return c.conn
133}
134
135// Close closes the connection to the API service. The user should invoke this when
136// the client is no longer required.
137func (c *Client) Close() error {
138	return c.conn.Close()
139}
140
141// setGoogleClientInfo sets the name and version of the application in
142// the `x-goog-api-client` header passed on each request. Intended for
143// use by Google-written clients.
144func (c *Client) setGoogleClientInfo(keyval ...string) {
145	kv := append([]string{"gl-go", versionGo()}, keyval...)
146	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
147	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
148}
149
150// GetDataSource retrieves a supported data source and returns its settings,
151// which can be used for UI rendering.
152func (c *Client) GetDataSource(ctx context.Context, req *datatransferpb.GetDataSourceRequest, opts ...gax.CallOption) (*datatransferpb.DataSource, error) {
153	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", req.GetName()))
154	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
155	opts = append(c.CallOptions.GetDataSource[0:len(c.CallOptions.GetDataSource):len(c.CallOptions.GetDataSource)], opts...)
156	var resp *datatransferpb.DataSource
157	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
158		var err error
159		resp, err = c.client.GetDataSource(ctx, req, settings.GRPC...)
160		return err
161	}, opts...)
162	if err != nil {
163		return nil, err
164	}
165	return resp, nil
166}
167
168// ListDataSources lists supported data sources and returns their settings,
169// which can be used for UI rendering.
170func (c *Client) ListDataSources(ctx context.Context, req *datatransferpb.ListDataSourcesRequest, opts ...gax.CallOption) *DataSourceIterator {
171	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", req.GetParent()))
172	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
173	opts = append(c.CallOptions.ListDataSources[0:len(c.CallOptions.ListDataSources):len(c.CallOptions.ListDataSources)], opts...)
174	it := &DataSourceIterator{}
175	req = proto.Clone(req).(*datatransferpb.ListDataSourcesRequest)
176	it.InternalFetch = func(pageSize int, pageToken string) ([]*datatransferpb.DataSource, string, error) {
177		var resp *datatransferpb.ListDataSourcesResponse
178		req.PageToken = pageToken
179		if pageSize > math.MaxInt32 {
180			req.PageSize = math.MaxInt32
181		} else {
182			req.PageSize = int32(pageSize)
183		}
184		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
185			var err error
186			resp, err = c.client.ListDataSources(ctx, req, settings.GRPC...)
187			return err
188		}, opts...)
189		if err != nil {
190			return nil, "", err
191		}
192		return resp.DataSources, resp.NextPageToken, nil
193	}
194	fetch := func(pageSize int, pageToken string) (string, error) {
195		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
196		if err != nil {
197			return "", err
198		}
199		it.items = append(it.items, items...)
200		return nextPageToken, nil
201	}
202	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
203	it.pageInfo.MaxSize = int(req.PageSize)
204	return it
205}
206
207// CreateTransferConfig creates a new data transfer configuration.
208func (c *Client) CreateTransferConfig(ctx context.Context, req *datatransferpb.CreateTransferConfigRequest, opts ...gax.CallOption) (*datatransferpb.TransferConfig, error) {
209	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", req.GetParent()))
210	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
211	opts = append(c.CallOptions.CreateTransferConfig[0:len(c.CallOptions.CreateTransferConfig):len(c.CallOptions.CreateTransferConfig)], opts...)
212	var resp *datatransferpb.TransferConfig
213	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
214		var err error
215		resp, err = c.client.CreateTransferConfig(ctx, req, settings.GRPC...)
216		return err
217	}, opts...)
218	if err != nil {
219		return nil, err
220	}
221	return resp, nil
222}
223
224// UpdateTransferConfig updates a data transfer configuration.
225// All fields must be set, even if they are not updated.
226func (c *Client) UpdateTransferConfig(ctx context.Context, req *datatransferpb.UpdateTransferConfigRequest, opts ...gax.CallOption) (*datatransferpb.TransferConfig, error) {
227	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "transfer_config.name", req.GetTransferConfig().GetName()))
228	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
229	opts = append(c.CallOptions.UpdateTransferConfig[0:len(c.CallOptions.UpdateTransferConfig):len(c.CallOptions.UpdateTransferConfig)], opts...)
230	var resp *datatransferpb.TransferConfig
231	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
232		var err error
233		resp, err = c.client.UpdateTransferConfig(ctx, req, settings.GRPC...)
234		return err
235	}, opts...)
236	if err != nil {
237		return nil, err
238	}
239	return resp, nil
240}
241
242// DeleteTransferConfig deletes a data transfer configuration,
243// including any associated transfer runs and logs.
244func (c *Client) DeleteTransferConfig(ctx context.Context, req *datatransferpb.DeleteTransferConfigRequest, opts ...gax.CallOption) error {
245	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", req.GetName()))
246	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
247	opts = append(c.CallOptions.DeleteTransferConfig[0:len(c.CallOptions.DeleteTransferConfig):len(c.CallOptions.DeleteTransferConfig)], opts...)
248	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
249		var err error
250		_, err = c.client.DeleteTransferConfig(ctx, req, settings.GRPC...)
251		return err
252	}, opts...)
253	return err
254}
255
256// GetTransferConfig returns information about a data transfer config.
257func (c *Client) GetTransferConfig(ctx context.Context, req *datatransferpb.GetTransferConfigRequest, opts ...gax.CallOption) (*datatransferpb.TransferConfig, error) {
258	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", req.GetName()))
259	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
260	opts = append(c.CallOptions.GetTransferConfig[0:len(c.CallOptions.GetTransferConfig):len(c.CallOptions.GetTransferConfig)], opts...)
261	var resp *datatransferpb.TransferConfig
262	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
263		var err error
264		resp, err = c.client.GetTransferConfig(ctx, req, settings.GRPC...)
265		return err
266	}, opts...)
267	if err != nil {
268		return nil, err
269	}
270	return resp, nil
271}
272
273// ListTransferConfigs returns information about all data transfers in the project.
274func (c *Client) ListTransferConfigs(ctx context.Context, req *datatransferpb.ListTransferConfigsRequest, opts ...gax.CallOption) *TransferConfigIterator {
275	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", req.GetParent()))
276	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
277	opts = append(c.CallOptions.ListTransferConfigs[0:len(c.CallOptions.ListTransferConfigs):len(c.CallOptions.ListTransferConfigs)], opts...)
278	it := &TransferConfigIterator{}
279	req = proto.Clone(req).(*datatransferpb.ListTransferConfigsRequest)
280	it.InternalFetch = func(pageSize int, pageToken string) ([]*datatransferpb.TransferConfig, string, error) {
281		var resp *datatransferpb.ListTransferConfigsResponse
282		req.PageToken = pageToken
283		if pageSize > math.MaxInt32 {
284			req.PageSize = math.MaxInt32
285		} else {
286			req.PageSize = int32(pageSize)
287		}
288		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
289			var err error
290			resp, err = c.client.ListTransferConfigs(ctx, req, settings.GRPC...)
291			return err
292		}, opts...)
293		if err != nil {
294			return nil, "", err
295		}
296		return resp.TransferConfigs, resp.NextPageToken, nil
297	}
298	fetch := func(pageSize int, pageToken string) (string, error) {
299		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
300		if err != nil {
301			return "", err
302		}
303		it.items = append(it.items, items...)
304		return nextPageToken, nil
305	}
306	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
307	it.pageInfo.MaxSize = int(req.PageSize)
308	return it
309}
310
311// ScheduleTransferRuns creates transfer runs for a time range [start_time, end_time].
312// For each date - or whatever granularity the data source supports - in the
313// range, one transfer run is created.
314// Note that runs are created per UTC time in the time range.
315func (c *Client) ScheduleTransferRuns(ctx context.Context, req *datatransferpb.ScheduleTransferRunsRequest, opts ...gax.CallOption) (*datatransferpb.ScheduleTransferRunsResponse, error) {
316	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", req.GetParent()))
317	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
318	opts = append(c.CallOptions.ScheduleTransferRuns[0:len(c.CallOptions.ScheduleTransferRuns):len(c.CallOptions.ScheduleTransferRuns)], opts...)
319	var resp *datatransferpb.ScheduleTransferRunsResponse
320	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
321		var err error
322		resp, err = c.client.ScheduleTransferRuns(ctx, req, settings.GRPC...)
323		return err
324	}, opts...)
325	if err != nil {
326		return nil, err
327	}
328	return resp, nil
329}
330
331// GetTransferRun returns information about the particular transfer run.
332func (c *Client) GetTransferRun(ctx context.Context, req *datatransferpb.GetTransferRunRequest, opts ...gax.CallOption) (*datatransferpb.TransferRun, error) {
333	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", req.GetName()))
334	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
335	opts = append(c.CallOptions.GetTransferRun[0:len(c.CallOptions.GetTransferRun):len(c.CallOptions.GetTransferRun)], opts...)
336	var resp *datatransferpb.TransferRun
337	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
338		var err error
339		resp, err = c.client.GetTransferRun(ctx, req, settings.GRPC...)
340		return err
341	}, opts...)
342	if err != nil {
343		return nil, err
344	}
345	return resp, nil
346}
347
348// DeleteTransferRun deletes the specified transfer run.
349func (c *Client) DeleteTransferRun(ctx context.Context, req *datatransferpb.DeleteTransferRunRequest, opts ...gax.CallOption) error {
350	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", req.GetName()))
351	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
352	opts = append(c.CallOptions.DeleteTransferRun[0:len(c.CallOptions.DeleteTransferRun):len(c.CallOptions.DeleteTransferRun)], opts...)
353	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
354		var err error
355		_, err = c.client.DeleteTransferRun(ctx, req, settings.GRPC...)
356		return err
357	}, opts...)
358	return err
359}
360
361// ListTransferRuns returns information about running and completed jobs.
362func (c *Client) ListTransferRuns(ctx context.Context, req *datatransferpb.ListTransferRunsRequest, opts ...gax.CallOption) *TransferRunIterator {
363	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", req.GetParent()))
364	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
365	opts = append(c.CallOptions.ListTransferRuns[0:len(c.CallOptions.ListTransferRuns):len(c.CallOptions.ListTransferRuns)], opts...)
366	it := &TransferRunIterator{}
367	req = proto.Clone(req).(*datatransferpb.ListTransferRunsRequest)
368	it.InternalFetch = func(pageSize int, pageToken string) ([]*datatransferpb.TransferRun, string, error) {
369		var resp *datatransferpb.ListTransferRunsResponse
370		req.PageToken = pageToken
371		if pageSize > math.MaxInt32 {
372			req.PageSize = math.MaxInt32
373		} else {
374			req.PageSize = int32(pageSize)
375		}
376		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
377			var err error
378			resp, err = c.client.ListTransferRuns(ctx, req, settings.GRPC...)
379			return err
380		}, opts...)
381		if err != nil {
382			return nil, "", err
383		}
384		return resp.TransferRuns, resp.NextPageToken, nil
385	}
386	fetch := func(pageSize int, pageToken string) (string, error) {
387		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
388		if err != nil {
389			return "", err
390		}
391		it.items = append(it.items, items...)
392		return nextPageToken, nil
393	}
394	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
395	it.pageInfo.MaxSize = int(req.PageSize)
396	return it
397}
398
399// ListTransferLogs returns user facing log messages for the data transfer run.
400func (c *Client) ListTransferLogs(ctx context.Context, req *datatransferpb.ListTransferLogsRequest, opts ...gax.CallOption) *TransferMessageIterator {
401	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", req.GetParent()))
402	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
403	opts = append(c.CallOptions.ListTransferLogs[0:len(c.CallOptions.ListTransferLogs):len(c.CallOptions.ListTransferLogs)], opts...)
404	it := &TransferMessageIterator{}
405	req = proto.Clone(req).(*datatransferpb.ListTransferLogsRequest)
406	it.InternalFetch = func(pageSize int, pageToken string) ([]*datatransferpb.TransferMessage, string, error) {
407		var resp *datatransferpb.ListTransferLogsResponse
408		req.PageToken = pageToken
409		if pageSize > math.MaxInt32 {
410			req.PageSize = math.MaxInt32
411		} else {
412			req.PageSize = int32(pageSize)
413		}
414		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
415			var err error
416			resp, err = c.client.ListTransferLogs(ctx, req, settings.GRPC...)
417			return err
418		}, opts...)
419		if err != nil {
420			return nil, "", err
421		}
422		return resp.TransferMessages, resp.NextPageToken, nil
423	}
424	fetch := func(pageSize int, pageToken string) (string, error) {
425		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
426		if err != nil {
427			return "", err
428		}
429		it.items = append(it.items, items...)
430		return nextPageToken, nil
431	}
432	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
433	it.pageInfo.MaxSize = int(req.PageSize)
434	return it
435}
436
437// CheckValidCreds returns true if valid credentials exist for the given data source and
438// requesting user.
439// Some data sources doesn't support service account, so we need to talk to
440// them on behalf of the end user. This API just checks whether we have OAuth
441// token for the particular user, which is a pre-requisite before user can
442// create a transfer config.
443func (c *Client) CheckValidCreds(ctx context.Context, req *datatransferpb.CheckValidCredsRequest, opts ...gax.CallOption) (*datatransferpb.CheckValidCredsResponse, error) {
444	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", req.GetName()))
445	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
446	opts = append(c.CallOptions.CheckValidCreds[0:len(c.CallOptions.CheckValidCreds):len(c.CallOptions.CheckValidCreds)], opts...)
447	var resp *datatransferpb.CheckValidCredsResponse
448	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
449		var err error
450		resp, err = c.client.CheckValidCreds(ctx, req, settings.GRPC...)
451		return err
452	}, opts...)
453	if err != nil {
454		return nil, err
455	}
456	return resp, nil
457}
458
459// DataSourceIterator manages a stream of *datatransferpb.DataSource.
460type DataSourceIterator struct {
461	items    []*datatransferpb.DataSource
462	pageInfo *iterator.PageInfo
463	nextFunc func() error
464
465	// InternalFetch is for use by the Google Cloud Libraries only.
466	// It is not part of the stable interface of this package.
467	//
468	// InternalFetch returns results from a single call to the underlying RPC.
469	// The number of results is no greater than pageSize.
470	// If there are no more results, nextPageToken is empty and err is nil.
471	InternalFetch func(pageSize int, pageToken string) (results []*datatransferpb.DataSource, nextPageToken string, err error)
472}
473
474// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
475func (it *DataSourceIterator) PageInfo() *iterator.PageInfo {
476	return it.pageInfo
477}
478
479// Next returns the next result. Its second return value is iterator.Done if there are no more
480// results. Once Next returns Done, all subsequent calls will return Done.
481func (it *DataSourceIterator) Next() (*datatransferpb.DataSource, error) {
482	var item *datatransferpb.DataSource
483	if err := it.nextFunc(); err != nil {
484		return item, err
485	}
486	item = it.items[0]
487	it.items = it.items[1:]
488	return item, nil
489}
490
491func (it *DataSourceIterator) bufLen() int {
492	return len(it.items)
493}
494
495func (it *DataSourceIterator) takeBuf() interface{} {
496	b := it.items
497	it.items = nil
498	return b
499}
500
501// TransferConfigIterator manages a stream of *datatransferpb.TransferConfig.
502type TransferConfigIterator struct {
503	items    []*datatransferpb.TransferConfig
504	pageInfo *iterator.PageInfo
505	nextFunc func() error
506
507	// InternalFetch is for use by the Google Cloud Libraries only.
508	// It is not part of the stable interface of this package.
509	//
510	// InternalFetch returns results from a single call to the underlying RPC.
511	// The number of results is no greater than pageSize.
512	// If there are no more results, nextPageToken is empty and err is nil.
513	InternalFetch func(pageSize int, pageToken string) (results []*datatransferpb.TransferConfig, nextPageToken string, err error)
514}
515
516// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
517func (it *TransferConfigIterator) PageInfo() *iterator.PageInfo {
518	return it.pageInfo
519}
520
521// Next returns the next result. Its second return value is iterator.Done if there are no more
522// results. Once Next returns Done, all subsequent calls will return Done.
523func (it *TransferConfigIterator) Next() (*datatransferpb.TransferConfig, error) {
524	var item *datatransferpb.TransferConfig
525	if err := it.nextFunc(); err != nil {
526		return item, err
527	}
528	item = it.items[0]
529	it.items = it.items[1:]
530	return item, nil
531}
532
533func (it *TransferConfigIterator) bufLen() int {
534	return len(it.items)
535}
536
537func (it *TransferConfigIterator) takeBuf() interface{} {
538	b := it.items
539	it.items = nil
540	return b
541}
542
543// TransferMessageIterator manages a stream of *datatransferpb.TransferMessage.
544type TransferMessageIterator struct {
545	items    []*datatransferpb.TransferMessage
546	pageInfo *iterator.PageInfo
547	nextFunc func() error
548
549	// InternalFetch is for use by the Google Cloud Libraries only.
550	// It is not part of the stable interface of this package.
551	//
552	// InternalFetch returns results from a single call to the underlying RPC.
553	// The number of results is no greater than pageSize.
554	// If there are no more results, nextPageToken is empty and err is nil.
555	InternalFetch func(pageSize int, pageToken string) (results []*datatransferpb.TransferMessage, nextPageToken string, err error)
556}
557
558// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
559func (it *TransferMessageIterator) PageInfo() *iterator.PageInfo {
560	return it.pageInfo
561}
562
563// Next returns the next result. Its second return value is iterator.Done if there are no more
564// results. Once Next returns Done, all subsequent calls will return Done.
565func (it *TransferMessageIterator) Next() (*datatransferpb.TransferMessage, error) {
566	var item *datatransferpb.TransferMessage
567	if err := it.nextFunc(); err != nil {
568		return item, err
569	}
570	item = it.items[0]
571	it.items = it.items[1:]
572	return item, nil
573}
574
575func (it *TransferMessageIterator) bufLen() int {
576	return len(it.items)
577}
578
579func (it *TransferMessageIterator) takeBuf() interface{} {
580	b := it.items
581	it.items = nil
582	return b
583}
584
585// TransferRunIterator manages a stream of *datatransferpb.TransferRun.
586type TransferRunIterator struct {
587	items    []*datatransferpb.TransferRun
588	pageInfo *iterator.PageInfo
589	nextFunc func() error
590
591	// InternalFetch is for use by the Google Cloud Libraries only.
592	// It is not part of the stable interface of this package.
593	//
594	// InternalFetch returns results from a single call to the underlying RPC.
595	// The number of results is no greater than pageSize.
596	// If there are no more results, nextPageToken is empty and err is nil.
597	InternalFetch func(pageSize int, pageToken string) (results []*datatransferpb.TransferRun, nextPageToken string, err error)
598}
599
600// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
601func (it *TransferRunIterator) PageInfo() *iterator.PageInfo {
602	return it.pageInfo
603}
604
605// Next returns the next result. Its second return value is iterator.Done if there are no more
606// results. Once Next returns Done, all subsequent calls will return Done.
607func (it *TransferRunIterator) Next() (*datatransferpb.TransferRun, error) {
608	var item *datatransferpb.TransferRun
609	if err := it.nextFunc(); err != nil {
610		return item, err
611	}
612	item = it.items[0]
613	it.items = it.items[1:]
614	return item, nil
615}
616
617func (it *TransferRunIterator) bufLen() int {
618	return len(it.items)
619}
620
621func (it *TransferRunIterator) takeBuf() interface{} {
622	b := it.items
623	it.items = nil
624	return b
625}
626