|  | // Copyright 2024 Google LLC | 
|  | // | 
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | // you may not use this file except in compliance with the License. | 
|  | // You may obtain a copy of the License at | 
|  | // | 
|  | //     https://www.apache.org/licenses/LICENSE-2.0 | 
|  | // | 
|  | // Unless required by applicable law or agreed to in writing, software | 
|  | // distributed under the License is distributed on an "AS IS" BASIS, | 
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | // See the License for the specific language governing permissions and | 
|  | // limitations under the License. | 
|  |  | 
|  | // Code generated by protoc-gen-go_gapic. DO NOT EDIT. | 
|  |  | 
|  | package logging | 
|  |  | 
|  | import ( | 
|  | "context" | 
|  | "fmt" | 
|  | "math" | 
|  | "net/url" | 
|  | "time" | 
|  |  | 
|  | loggingpb "cloud.google.com/go/logging/apiv2/loggingpb" | 
|  | "cloud.google.com/go/longrunning" | 
|  | lroauto "cloud.google.com/go/longrunning/autogen" | 
|  | longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" | 
|  | gax "github.com/googleapis/gax-go/v2" | 
|  | "google.golang.org/api/iterator" | 
|  | "google.golang.org/api/option" | 
|  | "google.golang.org/api/option/internaloption" | 
|  | gtransport "google.golang.org/api/transport/grpc" | 
|  | "google.golang.org/grpc" | 
|  | "google.golang.org/grpc/codes" | 
|  | "google.golang.org/protobuf/proto" | 
|  | ) | 
|  |  | 
|  | var newConfigClientHook clientHook | 
|  |  | 
|  | // ConfigCallOptions contains the retry settings for each method of ConfigClient. | 
|  | type ConfigCallOptions struct { | 
|  | ListBuckets        []gax.CallOption | 
|  | GetBucket          []gax.CallOption | 
|  | CreateBucketAsync  []gax.CallOption | 
|  | UpdateBucketAsync  []gax.CallOption | 
|  | CreateBucket       []gax.CallOption | 
|  | UpdateBucket       []gax.CallOption | 
|  | DeleteBucket       []gax.CallOption | 
|  | UndeleteBucket     []gax.CallOption | 
|  | ListViews          []gax.CallOption | 
|  | GetView            []gax.CallOption | 
|  | CreateView         []gax.CallOption | 
|  | UpdateView         []gax.CallOption | 
|  | DeleteView         []gax.CallOption | 
|  | ListSinks          []gax.CallOption | 
|  | GetSink            []gax.CallOption | 
|  | CreateSink         []gax.CallOption | 
|  | UpdateSink         []gax.CallOption | 
|  | DeleteSink         []gax.CallOption | 
|  | CreateLink         []gax.CallOption | 
|  | DeleteLink         []gax.CallOption | 
|  | ListLinks          []gax.CallOption | 
|  | GetLink            []gax.CallOption | 
|  | ListExclusions     []gax.CallOption | 
|  | GetExclusion       []gax.CallOption | 
|  | CreateExclusion    []gax.CallOption | 
|  | UpdateExclusion    []gax.CallOption | 
|  | DeleteExclusion    []gax.CallOption | 
|  | GetCmekSettings    []gax.CallOption | 
|  | UpdateCmekSettings []gax.CallOption | 
|  | GetSettings        []gax.CallOption | 
|  | UpdateSettings     []gax.CallOption | 
|  | CopyLogEntries     []gax.CallOption | 
|  | CancelOperation    []gax.CallOption | 
|  | GetOperation       []gax.CallOption | 
|  | ListOperations     []gax.CallOption | 
|  | } | 
|  |  | 
|  | func defaultConfigGRPCClientOptions() []option.ClientOption { | 
|  | return []option.ClientOption{ | 
|  | internaloption.WithDefaultEndpoint("logging.googleapis.com:443"), | 
|  | internaloption.WithDefaultEndpointTemplate("logging.UNIVERSE_DOMAIN:443"), | 
|  | internaloption.WithDefaultMTLSEndpoint("logging.mtls.googleapis.com:443"), | 
|  | internaloption.WithDefaultUniverseDomain("googleapis.com"), | 
|  | internaloption.WithDefaultAudience("https://logging.googleapis.com/"), | 
|  | internaloption.WithDefaultScopes(DefaultAuthScopes()...), | 
|  | internaloption.EnableJwtWithScope(), | 
|  | option.WithGRPCDialOption(grpc.WithDefaultCallOptions( | 
|  | grpc.MaxCallRecvMsgSize(math.MaxInt32))), | 
|  | } | 
|  | } | 
|  |  | 
|  | func defaultConfigCallOptions() *ConfigCallOptions { | 
|  | return &ConfigCallOptions{ | 
|  | ListBuckets:       []gax.CallOption{}, | 
|  | GetBucket:         []gax.CallOption{}, | 
|  | CreateBucketAsync: []gax.CallOption{}, | 
|  | UpdateBucketAsync: []gax.CallOption{}, | 
|  | CreateBucket:      []gax.CallOption{}, | 
|  | UpdateBucket:      []gax.CallOption{}, | 
|  | DeleteBucket:      []gax.CallOption{}, | 
|  | UndeleteBucket:    []gax.CallOption{}, | 
|  | ListViews:         []gax.CallOption{}, | 
|  | GetView:           []gax.CallOption{}, | 
|  | CreateView:        []gax.CallOption{}, | 
|  | UpdateView:        []gax.CallOption{}, | 
|  | DeleteView:        []gax.CallOption{}, | 
|  | ListSinks: []gax.CallOption{ | 
|  | gax.WithTimeout(60000 * time.Millisecond), | 
|  | gax.WithRetry(func() gax.Retryer { | 
|  | return gax.OnCodes([]codes.Code{ | 
|  | codes.DeadlineExceeded, | 
|  | codes.Internal, | 
|  | codes.Unavailable, | 
|  | }, gax.Backoff{ | 
|  | Initial:    100 * time.Millisecond, | 
|  | Max:        60000 * time.Millisecond, | 
|  | Multiplier: 1.30, | 
|  | }) | 
|  | }), | 
|  | }, | 
|  | GetSink: []gax.CallOption{ | 
|  | gax.WithTimeout(60000 * time.Millisecond), | 
|  | gax.WithRetry(func() gax.Retryer { | 
|  | return gax.OnCodes([]codes.Code{ | 
|  | codes.DeadlineExceeded, | 
|  | codes.Internal, | 
|  | codes.Unavailable, | 
|  | }, gax.Backoff{ | 
|  | Initial:    100 * time.Millisecond, | 
|  | Max:        60000 * time.Millisecond, | 
|  | Multiplier: 1.30, | 
|  | }) | 
|  | }), | 
|  | }, | 
|  | CreateSink: []gax.CallOption{ | 
|  | gax.WithTimeout(120000 * time.Millisecond), | 
|  | }, | 
|  | UpdateSink: []gax.CallOption{ | 
|  | gax.WithTimeout(60000 * time.Millisecond), | 
|  | gax.WithRetry(func() gax.Retryer { | 
|  | return gax.OnCodes([]codes.Code{ | 
|  | codes.DeadlineExceeded, | 
|  | codes.Internal, | 
|  | codes.Unavailable, | 
|  | }, gax.Backoff{ | 
|  | Initial:    100 * time.Millisecond, | 
|  | Max:        60000 * time.Millisecond, | 
|  | Multiplier: 1.30, | 
|  | }) | 
|  | }), | 
|  | }, | 
|  | DeleteSink: []gax.CallOption{ | 
|  | gax.WithTimeout(60000 * time.Millisecond), | 
|  | gax.WithRetry(func() gax.Retryer { | 
|  | return gax.OnCodes([]codes.Code{ | 
|  | codes.DeadlineExceeded, | 
|  | codes.Internal, | 
|  | codes.Unavailable, | 
|  | }, gax.Backoff{ | 
|  | Initial:    100 * time.Millisecond, | 
|  | Max:        60000 * time.Millisecond, | 
|  | Multiplier: 1.30, | 
|  | }) | 
|  | }), | 
|  | }, | 
|  | CreateLink: []gax.CallOption{}, | 
|  | DeleteLink: []gax.CallOption{}, | 
|  | ListLinks:  []gax.CallOption{}, | 
|  | GetLink:    []gax.CallOption{}, | 
|  | ListExclusions: []gax.CallOption{ | 
|  | gax.WithTimeout(60000 * time.Millisecond), | 
|  | gax.WithRetry(func() gax.Retryer { | 
|  | return gax.OnCodes([]codes.Code{ | 
|  | codes.DeadlineExceeded, | 
|  | codes.Internal, | 
|  | codes.Unavailable, | 
|  | }, gax.Backoff{ | 
|  | Initial:    100 * time.Millisecond, | 
|  | Max:        60000 * time.Millisecond, | 
|  | Multiplier: 1.30, | 
|  | }) | 
|  | }), | 
|  | }, | 
|  | GetExclusion: []gax.CallOption{ | 
|  | gax.WithTimeout(60000 * time.Millisecond), | 
|  | gax.WithRetry(func() gax.Retryer { | 
|  | return gax.OnCodes([]codes.Code{ | 
|  | codes.DeadlineExceeded, | 
|  | codes.Internal, | 
|  | codes.Unavailable, | 
|  | }, gax.Backoff{ | 
|  | Initial:    100 * time.Millisecond, | 
|  | Max:        60000 * time.Millisecond, | 
|  | Multiplier: 1.30, | 
|  | }) | 
|  | }), | 
|  | }, | 
|  | CreateExclusion: []gax.CallOption{ | 
|  | gax.WithTimeout(120000 * time.Millisecond), | 
|  | }, | 
|  | UpdateExclusion: []gax.CallOption{ | 
|  | gax.WithTimeout(120000 * time.Millisecond), | 
|  | }, | 
|  | DeleteExclusion: []gax.CallOption{ | 
|  | gax.WithTimeout(60000 * time.Millisecond), | 
|  | gax.WithRetry(func() gax.Retryer { | 
|  | return gax.OnCodes([]codes.Code{ | 
|  | codes.DeadlineExceeded, | 
|  | codes.Internal, | 
|  | codes.Unavailable, | 
|  | }, gax.Backoff{ | 
|  | Initial:    100 * time.Millisecond, | 
|  | Max:        60000 * time.Millisecond, | 
|  | Multiplier: 1.30, | 
|  | }) | 
|  | }), | 
|  | }, | 
|  | GetCmekSettings:    []gax.CallOption{}, | 
|  | UpdateCmekSettings: []gax.CallOption{}, | 
|  | GetSettings:        []gax.CallOption{}, | 
|  | UpdateSettings:     []gax.CallOption{}, | 
|  | CopyLogEntries:     []gax.CallOption{}, | 
|  | CancelOperation:    []gax.CallOption{}, | 
|  | GetOperation:       []gax.CallOption{}, | 
|  | ListOperations:     []gax.CallOption{}, | 
|  | } | 
|  | } | 
|  |  | 
|  | // internalConfigClient is an interface that defines the methods available from Cloud Logging API. | 
|  | type internalConfigClient interface { | 
|  | Close() error | 
|  | setGoogleClientInfo(...string) | 
|  | Connection() *grpc.ClientConn | 
|  | ListBuckets(context.Context, *loggingpb.ListBucketsRequest, ...gax.CallOption) *LogBucketIterator | 
|  | GetBucket(context.Context, *loggingpb.GetBucketRequest, ...gax.CallOption) (*loggingpb.LogBucket, error) | 
|  | CreateBucketAsync(context.Context, *loggingpb.CreateBucketRequest, ...gax.CallOption) (*CreateBucketAsyncOperation, error) | 
|  | CreateBucketAsyncOperation(name string) *CreateBucketAsyncOperation | 
|  | UpdateBucketAsync(context.Context, *loggingpb.UpdateBucketRequest, ...gax.CallOption) (*UpdateBucketAsyncOperation, error) | 
|  | UpdateBucketAsyncOperation(name string) *UpdateBucketAsyncOperation | 
|  | CreateBucket(context.Context, *loggingpb.CreateBucketRequest, ...gax.CallOption) (*loggingpb.LogBucket, error) | 
|  | UpdateBucket(context.Context, *loggingpb.UpdateBucketRequest, ...gax.CallOption) (*loggingpb.LogBucket, error) | 
|  | DeleteBucket(context.Context, *loggingpb.DeleteBucketRequest, ...gax.CallOption) error | 
|  | UndeleteBucket(context.Context, *loggingpb.UndeleteBucketRequest, ...gax.CallOption) error | 
|  | ListViews(context.Context, *loggingpb.ListViewsRequest, ...gax.CallOption) *LogViewIterator | 
|  | GetView(context.Context, *loggingpb.GetViewRequest, ...gax.CallOption) (*loggingpb.LogView, error) | 
|  | CreateView(context.Context, *loggingpb.CreateViewRequest, ...gax.CallOption) (*loggingpb.LogView, error) | 
|  | UpdateView(context.Context, *loggingpb.UpdateViewRequest, ...gax.CallOption) (*loggingpb.LogView, error) | 
|  | DeleteView(context.Context, *loggingpb.DeleteViewRequest, ...gax.CallOption) error | 
|  | ListSinks(context.Context, *loggingpb.ListSinksRequest, ...gax.CallOption) *LogSinkIterator | 
|  | GetSink(context.Context, *loggingpb.GetSinkRequest, ...gax.CallOption) (*loggingpb.LogSink, error) | 
|  | CreateSink(context.Context, *loggingpb.CreateSinkRequest, ...gax.CallOption) (*loggingpb.LogSink, error) | 
|  | UpdateSink(context.Context, *loggingpb.UpdateSinkRequest, ...gax.CallOption) (*loggingpb.LogSink, error) | 
|  | DeleteSink(context.Context, *loggingpb.DeleteSinkRequest, ...gax.CallOption) error | 
|  | CreateLink(context.Context, *loggingpb.CreateLinkRequest, ...gax.CallOption) (*CreateLinkOperation, error) | 
|  | CreateLinkOperation(name string) *CreateLinkOperation | 
|  | DeleteLink(context.Context, *loggingpb.DeleteLinkRequest, ...gax.CallOption) (*DeleteLinkOperation, error) | 
|  | DeleteLinkOperation(name string) *DeleteLinkOperation | 
|  | ListLinks(context.Context, *loggingpb.ListLinksRequest, ...gax.CallOption) *LinkIterator | 
|  | GetLink(context.Context, *loggingpb.GetLinkRequest, ...gax.CallOption) (*loggingpb.Link, error) | 
|  | ListExclusions(context.Context, *loggingpb.ListExclusionsRequest, ...gax.CallOption) *LogExclusionIterator | 
|  | GetExclusion(context.Context, *loggingpb.GetExclusionRequest, ...gax.CallOption) (*loggingpb.LogExclusion, error) | 
|  | CreateExclusion(context.Context, *loggingpb.CreateExclusionRequest, ...gax.CallOption) (*loggingpb.LogExclusion, error) | 
|  | UpdateExclusion(context.Context, *loggingpb.UpdateExclusionRequest, ...gax.CallOption) (*loggingpb.LogExclusion, error) | 
|  | DeleteExclusion(context.Context, *loggingpb.DeleteExclusionRequest, ...gax.CallOption) error | 
|  | GetCmekSettings(context.Context, *loggingpb.GetCmekSettingsRequest, ...gax.CallOption) (*loggingpb.CmekSettings, error) | 
|  | UpdateCmekSettings(context.Context, *loggingpb.UpdateCmekSettingsRequest, ...gax.CallOption) (*loggingpb.CmekSettings, error) | 
|  | GetSettings(context.Context, *loggingpb.GetSettingsRequest, ...gax.CallOption) (*loggingpb.Settings, error) | 
|  | UpdateSettings(context.Context, *loggingpb.UpdateSettingsRequest, ...gax.CallOption) (*loggingpb.Settings, error) | 
|  | CopyLogEntries(context.Context, *loggingpb.CopyLogEntriesRequest, ...gax.CallOption) (*CopyLogEntriesOperation, error) | 
|  | CopyLogEntriesOperation(name string) *CopyLogEntriesOperation | 
|  | CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error | 
|  | GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) | 
|  | ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator | 
|  | } | 
|  |  | 
|  | // ConfigClient is a client for interacting with Cloud Logging API. | 
|  | // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. | 
|  | // | 
|  | // Service for configuring sinks used to route log entries. | 
|  | type ConfigClient struct { | 
|  | // The internal transport-dependent client. | 
|  | internalClient internalConfigClient | 
|  |  | 
|  | // The call options for this service. | 
|  | CallOptions *ConfigCallOptions | 
|  |  | 
|  | // LROClient is used internally to handle long-running operations. | 
|  | // It is exposed so that its CallOptions can be modified if required. | 
|  | // Users should not Close this client. | 
|  | LROClient *lroauto.OperationsClient | 
|  | } | 
|  |  | 
|  | // Wrapper methods routed to the internal client. | 
|  |  | 
|  | // Close closes the connection to the API service. The user should invoke this when | 
|  | // the client is no longer required. | 
|  | func (c *ConfigClient) Close() error { | 
|  | return c.internalClient.Close() | 
|  | } | 
|  |  | 
|  | // setGoogleClientInfo sets the name and version of the application in | 
|  | // the `x-goog-api-client` header passed on each request. Intended for | 
|  | // use by Google-written clients. | 
|  | func (c *ConfigClient) setGoogleClientInfo(keyval ...string) { | 
|  | c.internalClient.setGoogleClientInfo(keyval...) | 
|  | } | 
|  |  | 
|  | // Connection returns a connection to the API service. | 
|  | // | 
|  | // Deprecated: Connections are now pooled so this method does not always | 
|  | // return the same resource. | 
|  | func (c *ConfigClient) Connection() *grpc.ClientConn { | 
|  | return c.internalClient.Connection() | 
|  | } | 
|  |  | 
|  | // ListBuckets lists log buckets. | 
|  | func (c *ConfigClient) ListBuckets(ctx context.Context, req *loggingpb.ListBucketsRequest, opts ...gax.CallOption) *LogBucketIterator { | 
|  | return c.internalClient.ListBuckets(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // GetBucket gets a log bucket. | 
|  | func (c *ConfigClient) GetBucket(ctx context.Context, req *loggingpb.GetBucketRequest, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { | 
|  | return c.internalClient.GetBucket(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // CreateBucketAsync creates a log bucket asynchronously that can be used to store log entries. | 
|  | // | 
|  | // After a bucket has been created, the bucket’s location cannot be changed. | 
|  | func (c *ConfigClient) CreateBucketAsync(ctx context.Context, req *loggingpb.CreateBucketRequest, opts ...gax.CallOption) (*CreateBucketAsyncOperation, error) { | 
|  | return c.internalClient.CreateBucketAsync(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // CreateBucketAsyncOperation returns a new CreateBucketAsyncOperation from a given name. | 
|  | // The name must be that of a previously created CreateBucketAsyncOperation, possibly from a different process. | 
|  | func (c *ConfigClient) CreateBucketAsyncOperation(name string) *CreateBucketAsyncOperation { | 
|  | return c.internalClient.CreateBucketAsyncOperation(name) | 
|  | } | 
|  |  | 
|  | // UpdateBucketAsync updates a log bucket asynchronously. | 
|  | // | 
|  | // If the bucket has a lifecycle_state of DELETE_REQUESTED, then | 
|  | // FAILED_PRECONDITION will be returned. | 
|  | // | 
|  | // After a bucket has been created, the bucket’s location cannot be changed. | 
|  | func (c *ConfigClient) UpdateBucketAsync(ctx context.Context, req *loggingpb.UpdateBucketRequest, opts ...gax.CallOption) (*UpdateBucketAsyncOperation, error) { | 
|  | return c.internalClient.UpdateBucketAsync(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // UpdateBucketAsyncOperation returns a new UpdateBucketAsyncOperation from a given name. | 
|  | // The name must be that of a previously created UpdateBucketAsyncOperation, possibly from a different process. | 
|  | func (c *ConfigClient) UpdateBucketAsyncOperation(name string) *UpdateBucketAsyncOperation { | 
|  | return c.internalClient.UpdateBucketAsyncOperation(name) | 
|  | } | 
|  |  | 
|  | // CreateBucket creates a log bucket that can be used to store log entries. After a bucket | 
|  | // has been created, the bucket’s location cannot be changed. | 
|  | func (c *ConfigClient) CreateBucket(ctx context.Context, req *loggingpb.CreateBucketRequest, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { | 
|  | return c.internalClient.CreateBucket(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // UpdateBucket updates a log bucket. | 
|  | // | 
|  | // If the bucket has a lifecycle_state of DELETE_REQUESTED, then | 
|  | // FAILED_PRECONDITION will be returned. | 
|  | // | 
|  | // After a bucket has been created, the bucket’s location cannot be changed. | 
|  | func (c *ConfigClient) UpdateBucket(ctx context.Context, req *loggingpb.UpdateBucketRequest, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { | 
|  | return c.internalClient.UpdateBucket(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // DeleteBucket deletes a log bucket. | 
|  | // | 
|  | // Changes the bucket’s lifecycle_state to the DELETE_REQUESTED state. | 
|  | // After 7 days, the bucket will be purged and all log entries in the bucket | 
|  | // will be permanently deleted. | 
|  | func (c *ConfigClient) DeleteBucket(ctx context.Context, req *loggingpb.DeleteBucketRequest, opts ...gax.CallOption) error { | 
|  | return c.internalClient.DeleteBucket(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // UndeleteBucket undeletes a log bucket. A bucket that has been deleted can be undeleted | 
|  | // within the grace period of 7 days. | 
|  | func (c *ConfigClient) UndeleteBucket(ctx context.Context, req *loggingpb.UndeleteBucketRequest, opts ...gax.CallOption) error { | 
|  | return c.internalClient.UndeleteBucket(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // ListViews lists views on a log bucket. | 
|  | func (c *ConfigClient) ListViews(ctx context.Context, req *loggingpb.ListViewsRequest, opts ...gax.CallOption) *LogViewIterator { | 
|  | return c.internalClient.ListViews(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // GetView gets a view on a log bucket… | 
|  | func (c *ConfigClient) GetView(ctx context.Context, req *loggingpb.GetViewRequest, opts ...gax.CallOption) (*loggingpb.LogView, error) { | 
|  | return c.internalClient.GetView(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // CreateView creates a view over log entries in a log bucket. A bucket may contain a | 
|  | // maximum of 30 views. | 
|  | func (c *ConfigClient) CreateView(ctx context.Context, req *loggingpb.CreateViewRequest, opts ...gax.CallOption) (*loggingpb.LogView, error) { | 
|  | return c.internalClient.CreateView(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // UpdateView updates a view on a log bucket. This method replaces the following fields | 
|  | // in the existing view with values from the new view: filter. | 
|  | // If an UNAVAILABLE error is returned, this indicates that system is not in | 
|  | // a state where it can update the view. If this occurs, please try again in a | 
|  | // few minutes. | 
|  | func (c *ConfigClient) UpdateView(ctx context.Context, req *loggingpb.UpdateViewRequest, opts ...gax.CallOption) (*loggingpb.LogView, error) { | 
|  | return c.internalClient.UpdateView(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // DeleteView deletes a view on a log bucket. | 
|  | // If an UNAVAILABLE error is returned, this indicates that system is not in | 
|  | // a state where it can delete the view. If this occurs, please try again in a | 
|  | // few minutes. | 
|  | func (c *ConfigClient) DeleteView(ctx context.Context, req *loggingpb.DeleteViewRequest, opts ...gax.CallOption) error { | 
|  | return c.internalClient.DeleteView(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // ListSinks lists sinks. | 
|  | func (c *ConfigClient) ListSinks(ctx context.Context, req *loggingpb.ListSinksRequest, opts ...gax.CallOption) *LogSinkIterator { | 
|  | return c.internalClient.ListSinks(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // GetSink gets a sink. | 
|  | func (c *ConfigClient) GetSink(ctx context.Context, req *loggingpb.GetSinkRequest, opts ...gax.CallOption) (*loggingpb.LogSink, error) { | 
|  | return c.internalClient.GetSink(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // CreateSink creates a sink that exports specified log entries to a destination. The | 
|  | // export of newly-ingested log entries begins immediately, unless the sink’s | 
|  | // writer_identity is not permitted to write to the destination. A sink can | 
|  | // export log entries only from the resource owning the sink. | 
|  | func (c *ConfigClient) CreateSink(ctx context.Context, req *loggingpb.CreateSinkRequest, opts ...gax.CallOption) (*loggingpb.LogSink, error) { | 
|  | return c.internalClient.CreateSink(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // UpdateSink updates a sink. This method replaces the following fields in the existing | 
|  | // sink with values from the new sink: destination, and filter. | 
|  | // | 
|  | // The updated sink might also have a new writer_identity; see the | 
|  | // unique_writer_identity field. | 
|  | func (c *ConfigClient) UpdateSink(ctx context.Context, req *loggingpb.UpdateSinkRequest, opts ...gax.CallOption) (*loggingpb.LogSink, error) { | 
|  | return c.internalClient.UpdateSink(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // DeleteSink deletes a sink. If the sink has a unique writer_identity, then that | 
|  | // service account is also deleted. | 
|  | func (c *ConfigClient) DeleteSink(ctx context.Context, req *loggingpb.DeleteSinkRequest, opts ...gax.CallOption) error { | 
|  | return c.internalClient.DeleteSink(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // CreateLink asynchronously creates a linked dataset in BigQuery which makes it possible | 
|  | // to use BigQuery to read the logs stored in the log bucket. A log bucket may | 
|  | // currently only contain one link. | 
|  | func (c *ConfigClient) CreateLink(ctx context.Context, req *loggingpb.CreateLinkRequest, opts ...gax.CallOption) (*CreateLinkOperation, error) { | 
|  | return c.internalClient.CreateLink(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // CreateLinkOperation returns a new CreateLinkOperation from a given name. | 
|  | // The name must be that of a previously created CreateLinkOperation, possibly from a different process. | 
|  | func (c *ConfigClient) CreateLinkOperation(name string) *CreateLinkOperation { | 
|  | return c.internalClient.CreateLinkOperation(name) | 
|  | } | 
|  |  | 
|  | // DeleteLink deletes a link. This will also delete the corresponding BigQuery linked | 
|  | // dataset. | 
|  | func (c *ConfigClient) DeleteLink(ctx context.Context, req *loggingpb.DeleteLinkRequest, opts ...gax.CallOption) (*DeleteLinkOperation, error) { | 
|  | return c.internalClient.DeleteLink(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // DeleteLinkOperation returns a new DeleteLinkOperation from a given name. | 
|  | // The name must be that of a previously created DeleteLinkOperation, possibly from a different process. | 
|  | func (c *ConfigClient) DeleteLinkOperation(name string) *DeleteLinkOperation { | 
|  | return c.internalClient.DeleteLinkOperation(name) | 
|  | } | 
|  |  | 
|  | // ListLinks lists links. | 
|  | func (c *ConfigClient) ListLinks(ctx context.Context, req *loggingpb.ListLinksRequest, opts ...gax.CallOption) *LinkIterator { | 
|  | return c.internalClient.ListLinks(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // GetLink gets a link. | 
|  | func (c *ConfigClient) GetLink(ctx context.Context, req *loggingpb.GetLinkRequest, opts ...gax.CallOption) (*loggingpb.Link, error) { | 
|  | return c.internalClient.GetLink(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // ListExclusions lists all the exclusions on the _Default sink in a parent resource. | 
|  | func (c *ConfigClient) ListExclusions(ctx context.Context, req *loggingpb.ListExclusionsRequest, opts ...gax.CallOption) *LogExclusionIterator { | 
|  | return c.internalClient.ListExclusions(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // GetExclusion gets the description of an exclusion in the _Default sink. | 
|  | func (c *ConfigClient) GetExclusion(ctx context.Context, req *loggingpb.GetExclusionRequest, opts ...gax.CallOption) (*loggingpb.LogExclusion, error) { | 
|  | return c.internalClient.GetExclusion(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // CreateExclusion creates a new exclusion in the _Default sink in a specified parent | 
|  | // resource. Only log entries belonging to that resource can be excluded. You | 
|  | // can have up to 10 exclusions in a resource. | 
|  | func (c *ConfigClient) CreateExclusion(ctx context.Context, req *loggingpb.CreateExclusionRequest, opts ...gax.CallOption) (*loggingpb.LogExclusion, error) { | 
|  | return c.internalClient.CreateExclusion(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // UpdateExclusion changes one or more properties of an existing exclusion in the _Default | 
|  | // sink. | 
|  | func (c *ConfigClient) UpdateExclusion(ctx context.Context, req *loggingpb.UpdateExclusionRequest, opts ...gax.CallOption) (*loggingpb.LogExclusion, error) { | 
|  | return c.internalClient.UpdateExclusion(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // DeleteExclusion deletes an exclusion in the _Default sink. | 
|  | func (c *ConfigClient) DeleteExclusion(ctx context.Context, req *loggingpb.DeleteExclusionRequest, opts ...gax.CallOption) error { | 
|  | return c.internalClient.DeleteExclusion(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // GetCmekSettings gets the Logging CMEK settings for the given resource. | 
|  | // | 
|  | // Note: CMEK for the Log Router can be configured for Google Cloud projects, | 
|  | // folders, organizations and billing accounts. Once configured for an | 
|  | // organization, it applies to all projects and folders in the Google Cloud | 
|  | // organization. | 
|  | // | 
|  | // See Enabling CMEK for Log | 
|  | // Router (at https://cloud.google.com/logging/docs/routing/managed-encryption) | 
|  | // for more information. | 
|  | func (c *ConfigClient) GetCmekSettings(ctx context.Context, req *loggingpb.GetCmekSettingsRequest, opts ...gax.CallOption) (*loggingpb.CmekSettings, error) { | 
|  | return c.internalClient.GetCmekSettings(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // UpdateCmekSettings updates the Log Router CMEK settings for the given resource. | 
|  | // | 
|  | // Note: CMEK for the Log Router can currently only be configured for Google | 
|  | // Cloud organizations. Once configured, it applies to all projects and | 
|  | // folders in the Google Cloud organization. | 
|  | // | 
|  | // UpdateCmekSettings | 
|  | // will fail if 1) kms_key_name is invalid, or 2) the associated service | 
|  | // account does not have the required | 
|  | // roles/cloudkms.cryptoKeyEncrypterDecrypter role assigned for the key, or | 
|  | // 3) access to the key is disabled. | 
|  | // | 
|  | // See Enabling CMEK for Log | 
|  | // Router (at https://cloud.google.com/logging/docs/routing/managed-encryption) | 
|  | // for more information. | 
|  | func (c *ConfigClient) UpdateCmekSettings(ctx context.Context, req *loggingpb.UpdateCmekSettingsRequest, opts ...gax.CallOption) (*loggingpb.CmekSettings, error) { | 
|  | return c.internalClient.UpdateCmekSettings(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // GetSettings gets the Log Router settings for the given resource. | 
|  | // | 
|  | // Note: Settings for the Log Router can be get for Google Cloud projects, | 
|  | // folders, organizations and billing accounts. Currently it can only be | 
|  | // configured for organizations. Once configured for an organization, it | 
|  | // applies to all projects and folders in the Google Cloud organization. | 
|  | // | 
|  | // See Enabling CMEK for Log | 
|  | // Router (at https://cloud.google.com/logging/docs/routing/managed-encryption) | 
|  | // for more information. | 
|  | func (c *ConfigClient) GetSettings(ctx context.Context, req *loggingpb.GetSettingsRequest, opts ...gax.CallOption) (*loggingpb.Settings, error) { | 
|  | return c.internalClient.GetSettings(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // UpdateSettings updates the Log Router settings for the given resource. | 
|  | // | 
|  | // Note: Settings for the Log Router can currently only be configured for | 
|  | // Google Cloud organizations. Once configured, it applies to all projects and | 
|  | // folders in the Google Cloud organization. | 
|  | // | 
|  | // UpdateSettings | 
|  | // will fail if 1) kms_key_name is invalid, or 2) the associated service | 
|  | // account does not have the required | 
|  | // roles/cloudkms.cryptoKeyEncrypterDecrypter role assigned for the key, or | 
|  | // 3) access to the key is disabled. 4) location_id is not supported by | 
|  | // Logging. 5) location_id violate OrgPolicy. | 
|  | // | 
|  | // See Enabling CMEK for Log | 
|  | // Router (at https://cloud.google.com/logging/docs/routing/managed-encryption) | 
|  | // for more information. | 
|  | func (c *ConfigClient) UpdateSettings(ctx context.Context, req *loggingpb.UpdateSettingsRequest, opts ...gax.CallOption) (*loggingpb.Settings, error) { | 
|  | return c.internalClient.UpdateSettings(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // CopyLogEntries copies a set of log entries from a log bucket to a Cloud Storage bucket. | 
|  | func (c *ConfigClient) CopyLogEntries(ctx context.Context, req *loggingpb.CopyLogEntriesRequest, opts ...gax.CallOption) (*CopyLogEntriesOperation, error) { | 
|  | return c.internalClient.CopyLogEntries(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // CopyLogEntriesOperation returns a new CopyLogEntriesOperation from a given name. | 
|  | // The name must be that of a previously created CopyLogEntriesOperation, possibly from a different process. | 
|  | func (c *ConfigClient) CopyLogEntriesOperation(name string) *CopyLogEntriesOperation { | 
|  | return c.internalClient.CopyLogEntriesOperation(name) | 
|  | } | 
|  |  | 
|  | // CancelOperation is a utility method from google.longrunning.Operations. | 
|  | func (c *ConfigClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { | 
|  | return c.internalClient.CancelOperation(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // GetOperation is a utility method from google.longrunning.Operations. | 
|  | func (c *ConfigClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { | 
|  | return c.internalClient.GetOperation(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // ListOperations is a utility method from google.longrunning.Operations. | 
|  | func (c *ConfigClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { | 
|  | return c.internalClient.ListOperations(ctx, req, opts...) | 
|  | } | 
|  |  | 
|  | // configGRPCClient is a client for interacting with Cloud Logging API over gRPC transport. | 
|  | // | 
|  | // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. | 
|  | type configGRPCClient struct { | 
|  | // Connection pool of gRPC connections to the service. | 
|  | connPool gtransport.ConnPool | 
|  |  | 
|  | // Points back to the CallOptions field of the containing ConfigClient | 
|  | CallOptions **ConfigCallOptions | 
|  |  | 
|  | // The gRPC API client. | 
|  | configClient loggingpb.ConfigServiceV2Client | 
|  |  | 
|  | // LROClient is used internally to handle long-running operations. | 
|  | // It is exposed so that its CallOptions can be modified if required. | 
|  | // Users should not Close this client. | 
|  | LROClient **lroauto.OperationsClient | 
|  |  | 
|  | operationsClient longrunningpb.OperationsClient | 
|  |  | 
|  | // The x-goog-* metadata to be sent with each request. | 
|  | xGoogHeaders []string | 
|  | } | 
|  |  | 
|  | // NewConfigClient creates a new config service v2 client based on gRPC. | 
|  | // The returned client must be Closed when it is done being used to clean up its underlying connections. | 
|  | // | 
|  | // Service for configuring sinks used to route log entries. | 
|  | func NewConfigClient(ctx context.Context, opts ...option.ClientOption) (*ConfigClient, error) { | 
|  | clientOpts := defaultConfigGRPCClientOptions() | 
|  | if newConfigClientHook != nil { | 
|  | hookOpts, err := newConfigClientHook(ctx, clientHookParams{}) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | clientOpts = append(clientOpts, hookOpts...) | 
|  | } | 
|  |  | 
|  | connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | client := ConfigClient{CallOptions: defaultConfigCallOptions()} | 
|  |  | 
|  | c := &configGRPCClient{ | 
|  | connPool:         connPool, | 
|  | configClient:     loggingpb.NewConfigServiceV2Client(connPool), | 
|  | CallOptions:      &client.CallOptions, | 
|  | operationsClient: longrunningpb.NewOperationsClient(connPool), | 
|  | } | 
|  | c.setGoogleClientInfo() | 
|  |  | 
|  | client.internalClient = c | 
|  |  | 
|  | client.LROClient, err = lroauto.NewOperationsClient(ctx, gtransport.WithConnPool(connPool)) | 
|  | if err != nil { | 
|  | // This error "should not happen", since we are just reusing old connection pool | 
|  | // and never actually need to dial. | 
|  | // If this does happen, we could leak connp. However, we cannot close conn: | 
|  | // If the user invoked the constructor with option.WithGRPCConn, | 
|  | // we would close a connection that's still in use. | 
|  | // TODO: investigate error conditions. | 
|  | return nil, err | 
|  | } | 
|  | c.LROClient = &client.LROClient | 
|  | return &client, nil | 
|  | } | 
|  |  | 
|  | // Connection returns a connection to the API service. | 
|  | // | 
|  | // Deprecated: Connections are now pooled so this method does not always | 
|  | // return the same resource. | 
|  | func (c *configGRPCClient) Connection() *grpc.ClientConn { | 
|  | return c.connPool.Conn() | 
|  | } | 
|  |  | 
|  | // setGoogleClientInfo sets the name and version of the application in | 
|  | // the `x-goog-api-client` header passed on each request. Intended for | 
|  | // use by Google-written clients. | 
|  | func (c *configGRPCClient) setGoogleClientInfo(keyval ...string) { | 
|  | kv := append([]string{"gl-go", gax.GoVersion}, keyval...) | 
|  | kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) | 
|  | c.xGoogHeaders = []string{"x-goog-api-client", gax.XGoogHeader(kv...)} | 
|  | } | 
|  |  | 
|  | // Close closes the connection to the API service. The user should invoke this when | 
|  | // the client is no longer required. | 
|  | func (c *configGRPCClient) Close() error { | 
|  | return c.connPool.Close() | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) ListBuckets(ctx context.Context, req *loggingpb.ListBucketsRequest, opts ...gax.CallOption) *LogBucketIterator { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).ListBuckets[0:len((*c.CallOptions).ListBuckets):len((*c.CallOptions).ListBuckets)], opts...) | 
|  | it := &LogBucketIterator{} | 
|  | req = proto.Clone(req).(*loggingpb.ListBucketsRequest) | 
|  | it.InternalFetch = func(pageSize int, pageToken string) ([]*loggingpb.LogBucket, string, error) { | 
|  | resp := &loggingpb.ListBucketsResponse{} | 
|  | if pageToken != "" { | 
|  | req.PageToken = pageToken | 
|  | } | 
|  | if pageSize > math.MaxInt32 { | 
|  | req.PageSize = math.MaxInt32 | 
|  | } else if pageSize != 0 { | 
|  | req.PageSize = int32(pageSize) | 
|  | } | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.ListBuckets(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, "", err | 
|  | } | 
|  |  | 
|  | it.Response = resp | 
|  | return resp.GetBuckets(), resp.GetNextPageToken(), nil | 
|  | } | 
|  | fetch := func(pageSize int, pageToken string) (string, error) { | 
|  | items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) | 
|  | if err != nil { | 
|  | return "", err | 
|  | } | 
|  | it.items = append(it.items, items...) | 
|  | return nextPageToken, nil | 
|  | } | 
|  |  | 
|  | it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) | 
|  | it.pageInfo.MaxSize = int(req.GetPageSize()) | 
|  | it.pageInfo.Token = req.GetPageToken() | 
|  |  | 
|  | return it | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) GetBucket(ctx context.Context, req *loggingpb.GetBucketRequest, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).GetBucket[0:len((*c.CallOptions).GetBucket):len((*c.CallOptions).GetBucket)], opts...) | 
|  | var resp *loggingpb.LogBucket | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.GetBucket(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) CreateBucketAsync(ctx context.Context, req *loggingpb.CreateBucketRequest, opts ...gax.CallOption) (*CreateBucketAsyncOperation, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).CreateBucketAsync[0:len((*c.CallOptions).CreateBucketAsync):len((*c.CallOptions).CreateBucketAsync)], opts...) | 
|  | var resp *longrunningpb.Operation | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.CreateBucketAsync(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return &CreateBucketAsyncOperation{ | 
|  | lro: longrunning.InternalNewOperation(*c.LROClient, resp), | 
|  | }, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) UpdateBucketAsync(ctx context.Context, req *loggingpb.UpdateBucketRequest, opts ...gax.CallOption) (*UpdateBucketAsyncOperation, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).UpdateBucketAsync[0:len((*c.CallOptions).UpdateBucketAsync):len((*c.CallOptions).UpdateBucketAsync)], opts...) | 
|  | var resp *longrunningpb.Operation | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.UpdateBucketAsync(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return &UpdateBucketAsyncOperation{ | 
|  | lro: longrunning.InternalNewOperation(*c.LROClient, resp), | 
|  | }, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) CreateBucket(ctx context.Context, req *loggingpb.CreateBucketRequest, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).CreateBucket[0:len((*c.CallOptions).CreateBucket):len((*c.CallOptions).CreateBucket)], opts...) | 
|  | var resp *loggingpb.LogBucket | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.CreateBucket(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) UpdateBucket(ctx context.Context, req *loggingpb.UpdateBucketRequest, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).UpdateBucket[0:len((*c.CallOptions).UpdateBucket):len((*c.CallOptions).UpdateBucket)], opts...) | 
|  | var resp *loggingpb.LogBucket | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.UpdateBucket(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) DeleteBucket(ctx context.Context, req *loggingpb.DeleteBucketRequest, opts ...gax.CallOption) error { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).DeleteBucket[0:len((*c.CallOptions).DeleteBucket):len((*c.CallOptions).DeleteBucket)], opts...) | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | _, err = c.configClient.DeleteBucket(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | return err | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) UndeleteBucket(ctx context.Context, req *loggingpb.UndeleteBucketRequest, opts ...gax.CallOption) error { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).UndeleteBucket[0:len((*c.CallOptions).UndeleteBucket):len((*c.CallOptions).UndeleteBucket)], opts...) | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | _, err = c.configClient.UndeleteBucket(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | return err | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) ListViews(ctx context.Context, req *loggingpb.ListViewsRequest, opts ...gax.CallOption) *LogViewIterator { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).ListViews[0:len((*c.CallOptions).ListViews):len((*c.CallOptions).ListViews)], opts...) | 
|  | it := &LogViewIterator{} | 
|  | req = proto.Clone(req).(*loggingpb.ListViewsRequest) | 
|  | it.InternalFetch = func(pageSize int, pageToken string) ([]*loggingpb.LogView, string, error) { | 
|  | resp := &loggingpb.ListViewsResponse{} | 
|  | if pageToken != "" { | 
|  | req.PageToken = pageToken | 
|  | } | 
|  | if pageSize > math.MaxInt32 { | 
|  | req.PageSize = math.MaxInt32 | 
|  | } else if pageSize != 0 { | 
|  | req.PageSize = int32(pageSize) | 
|  | } | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.ListViews(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, "", err | 
|  | } | 
|  |  | 
|  | it.Response = resp | 
|  | return resp.GetViews(), resp.GetNextPageToken(), nil | 
|  | } | 
|  | fetch := func(pageSize int, pageToken string) (string, error) { | 
|  | items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) | 
|  | if err != nil { | 
|  | return "", err | 
|  | } | 
|  | it.items = append(it.items, items...) | 
|  | return nextPageToken, nil | 
|  | } | 
|  |  | 
|  | it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) | 
|  | it.pageInfo.MaxSize = int(req.GetPageSize()) | 
|  | it.pageInfo.Token = req.GetPageToken() | 
|  |  | 
|  | return it | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) GetView(ctx context.Context, req *loggingpb.GetViewRequest, opts ...gax.CallOption) (*loggingpb.LogView, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).GetView[0:len((*c.CallOptions).GetView):len((*c.CallOptions).GetView)], opts...) | 
|  | var resp *loggingpb.LogView | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.GetView(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) CreateView(ctx context.Context, req *loggingpb.CreateViewRequest, opts ...gax.CallOption) (*loggingpb.LogView, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).CreateView[0:len((*c.CallOptions).CreateView):len((*c.CallOptions).CreateView)], opts...) | 
|  | var resp *loggingpb.LogView | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.CreateView(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) UpdateView(ctx context.Context, req *loggingpb.UpdateViewRequest, opts ...gax.CallOption) (*loggingpb.LogView, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).UpdateView[0:len((*c.CallOptions).UpdateView):len((*c.CallOptions).UpdateView)], opts...) | 
|  | var resp *loggingpb.LogView | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.UpdateView(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) DeleteView(ctx context.Context, req *loggingpb.DeleteViewRequest, opts ...gax.CallOption) error { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).DeleteView[0:len((*c.CallOptions).DeleteView):len((*c.CallOptions).DeleteView)], opts...) | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | _, err = c.configClient.DeleteView(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | return err | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) ListSinks(ctx context.Context, req *loggingpb.ListSinksRequest, opts ...gax.CallOption) *LogSinkIterator { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).ListSinks[0:len((*c.CallOptions).ListSinks):len((*c.CallOptions).ListSinks)], opts...) | 
|  | it := &LogSinkIterator{} | 
|  | req = proto.Clone(req).(*loggingpb.ListSinksRequest) | 
|  | it.InternalFetch = func(pageSize int, pageToken string) ([]*loggingpb.LogSink, string, error) { | 
|  | resp := &loggingpb.ListSinksResponse{} | 
|  | if pageToken != "" { | 
|  | req.PageToken = pageToken | 
|  | } | 
|  | if pageSize > math.MaxInt32 { | 
|  | req.PageSize = math.MaxInt32 | 
|  | } else if pageSize != 0 { | 
|  | req.PageSize = int32(pageSize) | 
|  | } | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.ListSinks(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, "", err | 
|  | } | 
|  |  | 
|  | it.Response = resp | 
|  | return resp.GetSinks(), resp.GetNextPageToken(), nil | 
|  | } | 
|  | fetch := func(pageSize int, pageToken string) (string, error) { | 
|  | items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) | 
|  | if err != nil { | 
|  | return "", err | 
|  | } | 
|  | it.items = append(it.items, items...) | 
|  | return nextPageToken, nil | 
|  | } | 
|  |  | 
|  | it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) | 
|  | it.pageInfo.MaxSize = int(req.GetPageSize()) | 
|  | it.pageInfo.Token = req.GetPageToken() | 
|  |  | 
|  | return it | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) GetSink(ctx context.Context, req *loggingpb.GetSinkRequest, opts ...gax.CallOption) (*loggingpb.LogSink, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "sink_name", url.QueryEscape(req.GetSinkName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).GetSink[0:len((*c.CallOptions).GetSink):len((*c.CallOptions).GetSink)], opts...) | 
|  | var resp *loggingpb.LogSink | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.GetSink(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) CreateSink(ctx context.Context, req *loggingpb.CreateSinkRequest, opts ...gax.CallOption) (*loggingpb.LogSink, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).CreateSink[0:len((*c.CallOptions).CreateSink):len((*c.CallOptions).CreateSink)], opts...) | 
|  | var resp *loggingpb.LogSink | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.CreateSink(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) UpdateSink(ctx context.Context, req *loggingpb.UpdateSinkRequest, opts ...gax.CallOption) (*loggingpb.LogSink, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "sink_name", url.QueryEscape(req.GetSinkName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).UpdateSink[0:len((*c.CallOptions).UpdateSink):len((*c.CallOptions).UpdateSink)], opts...) | 
|  | var resp *loggingpb.LogSink | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.UpdateSink(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) DeleteSink(ctx context.Context, req *loggingpb.DeleteSinkRequest, opts ...gax.CallOption) error { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "sink_name", url.QueryEscape(req.GetSinkName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).DeleteSink[0:len((*c.CallOptions).DeleteSink):len((*c.CallOptions).DeleteSink)], opts...) | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | _, err = c.configClient.DeleteSink(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | return err | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) CreateLink(ctx context.Context, req *loggingpb.CreateLinkRequest, opts ...gax.CallOption) (*CreateLinkOperation, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).CreateLink[0:len((*c.CallOptions).CreateLink):len((*c.CallOptions).CreateLink)], opts...) | 
|  | var resp *longrunningpb.Operation | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.CreateLink(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return &CreateLinkOperation{ | 
|  | lro: longrunning.InternalNewOperation(*c.LROClient, resp), | 
|  | }, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) DeleteLink(ctx context.Context, req *loggingpb.DeleteLinkRequest, opts ...gax.CallOption) (*DeleteLinkOperation, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).DeleteLink[0:len((*c.CallOptions).DeleteLink):len((*c.CallOptions).DeleteLink)], opts...) | 
|  | var resp *longrunningpb.Operation | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.DeleteLink(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return &DeleteLinkOperation{ | 
|  | lro: longrunning.InternalNewOperation(*c.LROClient, resp), | 
|  | }, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) ListLinks(ctx context.Context, req *loggingpb.ListLinksRequest, opts ...gax.CallOption) *LinkIterator { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).ListLinks[0:len((*c.CallOptions).ListLinks):len((*c.CallOptions).ListLinks)], opts...) | 
|  | it := &LinkIterator{} | 
|  | req = proto.Clone(req).(*loggingpb.ListLinksRequest) | 
|  | it.InternalFetch = func(pageSize int, pageToken string) ([]*loggingpb.Link, string, error) { | 
|  | resp := &loggingpb.ListLinksResponse{} | 
|  | if pageToken != "" { | 
|  | req.PageToken = pageToken | 
|  | } | 
|  | if pageSize > math.MaxInt32 { | 
|  | req.PageSize = math.MaxInt32 | 
|  | } else if pageSize != 0 { | 
|  | req.PageSize = int32(pageSize) | 
|  | } | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.ListLinks(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, "", err | 
|  | } | 
|  |  | 
|  | it.Response = resp | 
|  | return resp.GetLinks(), resp.GetNextPageToken(), nil | 
|  | } | 
|  | fetch := func(pageSize int, pageToken string) (string, error) { | 
|  | items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) | 
|  | if err != nil { | 
|  | return "", err | 
|  | } | 
|  | it.items = append(it.items, items...) | 
|  | return nextPageToken, nil | 
|  | } | 
|  |  | 
|  | it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) | 
|  | it.pageInfo.MaxSize = int(req.GetPageSize()) | 
|  | it.pageInfo.Token = req.GetPageToken() | 
|  |  | 
|  | return it | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) GetLink(ctx context.Context, req *loggingpb.GetLinkRequest, opts ...gax.CallOption) (*loggingpb.Link, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).GetLink[0:len((*c.CallOptions).GetLink):len((*c.CallOptions).GetLink)], opts...) | 
|  | var resp *loggingpb.Link | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.GetLink(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) ListExclusions(ctx context.Context, req *loggingpb.ListExclusionsRequest, opts ...gax.CallOption) *LogExclusionIterator { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).ListExclusions[0:len((*c.CallOptions).ListExclusions):len((*c.CallOptions).ListExclusions)], opts...) | 
|  | it := &LogExclusionIterator{} | 
|  | req = proto.Clone(req).(*loggingpb.ListExclusionsRequest) | 
|  | it.InternalFetch = func(pageSize int, pageToken string) ([]*loggingpb.LogExclusion, string, error) { | 
|  | resp := &loggingpb.ListExclusionsResponse{} | 
|  | if pageToken != "" { | 
|  | req.PageToken = pageToken | 
|  | } | 
|  | if pageSize > math.MaxInt32 { | 
|  | req.PageSize = math.MaxInt32 | 
|  | } else if pageSize != 0 { | 
|  | req.PageSize = int32(pageSize) | 
|  | } | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.ListExclusions(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, "", err | 
|  | } | 
|  |  | 
|  | it.Response = resp | 
|  | return resp.GetExclusions(), resp.GetNextPageToken(), nil | 
|  | } | 
|  | fetch := func(pageSize int, pageToken string) (string, error) { | 
|  | items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) | 
|  | if err != nil { | 
|  | return "", err | 
|  | } | 
|  | it.items = append(it.items, items...) | 
|  | return nextPageToken, nil | 
|  | } | 
|  |  | 
|  | it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) | 
|  | it.pageInfo.MaxSize = int(req.GetPageSize()) | 
|  | it.pageInfo.Token = req.GetPageToken() | 
|  |  | 
|  | return it | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) GetExclusion(ctx context.Context, req *loggingpb.GetExclusionRequest, opts ...gax.CallOption) (*loggingpb.LogExclusion, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).GetExclusion[0:len((*c.CallOptions).GetExclusion):len((*c.CallOptions).GetExclusion)], opts...) | 
|  | var resp *loggingpb.LogExclusion | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.GetExclusion(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) CreateExclusion(ctx context.Context, req *loggingpb.CreateExclusionRequest, opts ...gax.CallOption) (*loggingpb.LogExclusion, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).CreateExclusion[0:len((*c.CallOptions).CreateExclusion):len((*c.CallOptions).CreateExclusion)], opts...) | 
|  | var resp *loggingpb.LogExclusion | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.CreateExclusion(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) UpdateExclusion(ctx context.Context, req *loggingpb.UpdateExclusionRequest, opts ...gax.CallOption) (*loggingpb.LogExclusion, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).UpdateExclusion[0:len((*c.CallOptions).UpdateExclusion):len((*c.CallOptions).UpdateExclusion)], opts...) | 
|  | var resp *loggingpb.LogExclusion | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.UpdateExclusion(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) DeleteExclusion(ctx context.Context, req *loggingpb.DeleteExclusionRequest, opts ...gax.CallOption) error { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).DeleteExclusion[0:len((*c.CallOptions).DeleteExclusion):len((*c.CallOptions).DeleteExclusion)], opts...) | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | _, err = c.configClient.DeleteExclusion(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | return err | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) GetCmekSettings(ctx context.Context, req *loggingpb.GetCmekSettingsRequest, opts ...gax.CallOption) (*loggingpb.CmekSettings, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).GetCmekSettings[0:len((*c.CallOptions).GetCmekSettings):len((*c.CallOptions).GetCmekSettings)], opts...) | 
|  | var resp *loggingpb.CmekSettings | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.GetCmekSettings(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) UpdateCmekSettings(ctx context.Context, req *loggingpb.UpdateCmekSettingsRequest, opts ...gax.CallOption) (*loggingpb.CmekSettings, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).UpdateCmekSettings[0:len((*c.CallOptions).UpdateCmekSettings):len((*c.CallOptions).UpdateCmekSettings)], opts...) | 
|  | var resp *loggingpb.CmekSettings | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.UpdateCmekSettings(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) GetSettings(ctx context.Context, req *loggingpb.GetSettingsRequest, opts ...gax.CallOption) (*loggingpb.Settings, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).GetSettings[0:len((*c.CallOptions).GetSettings):len((*c.CallOptions).GetSettings)], opts...) | 
|  | var resp *loggingpb.Settings | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.GetSettings(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) UpdateSettings(ctx context.Context, req *loggingpb.UpdateSettingsRequest, opts ...gax.CallOption) (*loggingpb.Settings, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).UpdateSettings[0:len((*c.CallOptions).UpdateSettings):len((*c.CallOptions).UpdateSettings)], opts...) | 
|  | var resp *loggingpb.Settings | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.UpdateSettings(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) CopyLogEntries(ctx context.Context, req *loggingpb.CopyLogEntriesRequest, opts ...gax.CallOption) (*CopyLogEntriesOperation, error) { | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) | 
|  | opts = append((*c.CallOptions).CopyLogEntries[0:len((*c.CallOptions).CopyLogEntries):len((*c.CallOptions).CopyLogEntries)], opts...) | 
|  | var resp *longrunningpb.Operation | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.configClient.CopyLogEntries(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return &CopyLogEntriesOperation{ | 
|  | lro: longrunning.InternalNewOperation(*c.LROClient, resp), | 
|  | }, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | _, err = c.operationsClient.CancelOperation(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | return err | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) | 
|  | var resp *longrunningpb.Operation | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.operationsClient.GetOperation(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | return resp, nil | 
|  | } | 
|  |  | 
|  | func (c *configGRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { | 
|  | hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} | 
|  |  | 
|  | hds = append(c.xGoogHeaders, hds...) | 
|  | ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) | 
|  | opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) | 
|  | it := &OperationIterator{} | 
|  | req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) | 
|  | it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { | 
|  | resp := &longrunningpb.ListOperationsResponse{} | 
|  | if pageToken != "" { | 
|  | req.PageToken = pageToken | 
|  | } | 
|  | if pageSize > math.MaxInt32 { | 
|  | req.PageSize = math.MaxInt32 | 
|  | } else if pageSize != 0 { | 
|  | req.PageSize = int32(pageSize) | 
|  | } | 
|  | err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
|  | var err error | 
|  | resp, err = c.operationsClient.ListOperations(ctx, req, settings.GRPC...) | 
|  | return err | 
|  | }, opts...) | 
|  | if err != nil { | 
|  | return nil, "", err | 
|  | } | 
|  |  | 
|  | it.Response = resp | 
|  | return resp.GetOperations(), resp.GetNextPageToken(), nil | 
|  | } | 
|  | fetch := func(pageSize int, pageToken string) (string, error) { | 
|  | items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) | 
|  | if err != nil { | 
|  | return "", err | 
|  | } | 
|  | it.items = append(it.items, items...) | 
|  | return nextPageToken, nil | 
|  | } | 
|  |  | 
|  | it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) | 
|  | it.pageInfo.MaxSize = int(req.GetPageSize()) | 
|  | it.pageInfo.Token = req.GetPageToken() | 
|  |  | 
|  | return it | 
|  | } | 
|  |  | 
|  | // CopyLogEntriesOperation returns a new CopyLogEntriesOperation from a given name. | 
|  | // The name must be that of a previously created CopyLogEntriesOperation, possibly from a different process. | 
|  | func (c *configGRPCClient) CopyLogEntriesOperation(name string) *CopyLogEntriesOperation { | 
|  | return &CopyLogEntriesOperation{ | 
|  | lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), | 
|  | } | 
|  | } | 
|  |  | 
|  | // CreateBucketAsyncOperation returns a new CreateBucketAsyncOperation from a given name. | 
|  | // The name must be that of a previously created CreateBucketAsyncOperation, possibly from a different process. | 
|  | func (c *configGRPCClient) CreateBucketAsyncOperation(name string) *CreateBucketAsyncOperation { | 
|  | return &CreateBucketAsyncOperation{ | 
|  | lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), | 
|  | } | 
|  | } | 
|  |  | 
|  | // CreateLinkOperation returns a new CreateLinkOperation from a given name. | 
|  | // The name must be that of a previously created CreateLinkOperation, possibly from a different process. | 
|  | func (c *configGRPCClient) CreateLinkOperation(name string) *CreateLinkOperation { | 
|  | return &CreateLinkOperation{ | 
|  | lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), | 
|  | } | 
|  | } | 
|  |  | 
|  | // DeleteLinkOperation returns a new DeleteLinkOperation from a given name. | 
|  | // The name must be that of a previously created DeleteLinkOperation, possibly from a different process. | 
|  | func (c *configGRPCClient) DeleteLinkOperation(name string) *DeleteLinkOperation { | 
|  | return &DeleteLinkOperation{ | 
|  | lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), | 
|  | } | 
|  | } | 
|  |  | 
|  | // UpdateBucketAsyncOperation returns a new UpdateBucketAsyncOperation from a given name. | 
|  | // The name must be that of a previously created UpdateBucketAsyncOperation, possibly from a different process. | 
|  | func (c *configGRPCClient) UpdateBucketAsyncOperation(name string) *UpdateBucketAsyncOperation { | 
|  | return &UpdateBucketAsyncOperation{ | 
|  | lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), | 
|  | } | 
|  | } |