X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/91dc5f1d7f5ad9eb2640f6089e2d0476cbf87c8e..c797b629ddb0cf2808123a1b86d31b0153f1aca0:/sdk/go/arvadosclient/pool.go diff --git a/sdk/go/arvadosclient/pool.go b/sdk/go/arvadosclient/pool.go index 6b3171f7eb..bb7867aef7 100644 --- a/sdk/go/arvadosclient/pool.go +++ b/sdk/go/arvadosclient/pool.go @@ -1,7 +1,13 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: Apache-2.0 + package arvadosclient import ( "sync" + + "git.arvados.org/arvados.git/sdk/go/arvados" ) // A ClientPool is a pool of ArvadosClients. This is useful for @@ -10,7 +16,7 @@ import ( // credentials. See arvados-git-httpd for an example, and sync.Pool // for more information about garbage collection. type ClientPool struct { - // Initialize new clients by coping this one. + // Initialize new clients by copying this one. Prototype *ArvadosClient pool *sync.Pool @@ -21,7 +27,20 @@ type ClientPool struct { // MakeClientPool returns a new empty ClientPool, using environment // variables to initialize the prototype. func MakeClientPool() *ClientPool { - proto, err := MakeArvadosClient() + return MakeClientPoolWith(nil) +} + +// MakeClientPoolWith returns a new empty ClientPool with a previously +// initialized arvados.Client. +func MakeClientPoolWith(client *arvados.Client) *ClientPool { + var err error + var proto *ArvadosClient + + if client == nil { + proto, err = MakeArvadosClient() + } else { + proto, err = New(client) + } return &ClientPool{ Prototype: proto, lastErr: err,