func setUpBucket( ctx context.Context, flags *flagStorage, conn gcs.Conn, name string) (b gcs.Bucket, err error) { // Extract the appropriate bucket. b, err = conn.OpenBucket(ctx, name) if err != nil { err = fmt.Errorf("OpenBucket: %v", err) return } // Enable rate limiting, if requested. b, err = setUpRateLimiting( b, flags.OpRateLimitHz, flags.EgressBandwidthLimitBytesPerSecond) if err != nil { err = fmt.Errorf("setUpRateLimiting: %v", err) return } // Enable cached StatObject results, if appropriate. if flags.StatCacheTTL != 0 { const cacheCapacity = 4096 b = gcscaching.NewFastStatBucket( flags.StatCacheTTL, gcscaching.NewStatCache(cacheCapacity), timeutil.RealClock(), b) } return }
// Configure a bucket based on the supplied flags. // // Special case: if the bucket name is canned.FakeBucketName, set up a fake // bucket as described in that package. func setUpBucket( ctx context.Context, flags *flagStorage, conn gcs.Conn, name string) (b gcs.Bucket, err error) { // Set up the appropriate backing bucket. if name == canned.FakeBucketName { b = canned.MakeFakeBucket(ctx) } else { b, err = conn.OpenBucket(ctx, name) if err != nil { err = fmt.Errorf("OpenBucket: %v", err) return } } // Limit to a requested prefix of the bucket, if any. if flags.OnlyDir != "" { b, err = gcsx.NewPrefixBucket(path.Clean(flags.OnlyDir)+"/", b) if err != nil { err = fmt.Errorf("NewPrefixBucket: %v", err) return } } // Enable rate limiting, if requested. b, err = setUpRateLimiting( b, flags.OpRateLimitHz, flags.EgressBandwidthLimitBytesPerSecond) if err != nil { err = fmt.Errorf("setUpRateLimiting: %v", err) return } // Enable cached StatObject results, if appropriate. if flags.StatCacheTTL != 0 { const cacheCapacity = 4096 b = gcscaching.NewFastStatBucket( flags.StatCacheTTL, gcscaching.NewStatCache(cacheCapacity), timeutil.RealClock(), b) } return }