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