Class CssProductsServiceClient
CssProductsService client wrapper, for convenient use.
Namespace: Google.Shopping.Css.V1
Assembly: Google.Shopping.Css.V1.dll
Syntax
public abstract class CssProductsServiceClient
Remarks
Service for doing get and list on Css Products(a.k.a Aggregate Offers internally).
Properties
DefaultEndpoint
The default endpoint for the CssProductsService service, which is a host of "css.googleapis.com" and a port of 443.
Declaration
public static string DefaultEndpoint { get; }
Property Value
Type | Description |
---|---|
string |
DefaultScopes
The default CssProductsService scopes.
Declaration
public static IReadOnlyList<string> DefaultScopes { get; }
Property Value
Type | Description |
---|---|
IReadOnlyList<string> |
Remarks
The default CssProductsService scopes are:
- https://www.googleapis.com/auth/content
GrpcClient
The underlying gRPC CssProductsService client
Declaration
public virtual CssProductsService.CssProductsServiceClient GrpcClient { get; }
Property Value
Type | Description |
---|---|
CssProductsService.CssProductsServiceClient |
ServiceMetadata
The service metadata associated with this client type.
Declaration
public static ServiceMetadata ServiceMetadata { get; }
Property Value
Type | Description |
---|---|
ServiceMetadata |
Methods
Create()
Synchronously creates a CssProductsServiceClient using the default credentials, endpoint and settings. To specify custom credentials or other settings, use CssProductsServiceClientBuilder .
Declaration
public static CssProductsServiceClient Create()
Returns
Type | Description |
---|---|
CssProductsServiceClient | The created CssProductsServiceClient. |
CreateAsync(CancellationToken)
Asynchronously creates a CssProductsServiceClient using the default credentials, endpoint and settings. To specify custom credentials or other settings, use CssProductsServiceClientBuilder .
Declaration
public static Task<CssProductsServiceClient> CreateAsync(CancellationToken cancellationToken = default)
Parameters
Type | Name | Description |
---|---|---|
CancellationToken | cancellationToken | The CancellationToken to use while creating the client. |
Returns
Type | Description |
---|---|
Task<CssProductsServiceClient> | The task representing the created CssProductsServiceClient. |
GetCssProduct(CssProductName, CallSettings)
Retrieves the processed CSS Product from your CSS Center account. After inserting, updating, or deleting a product input, it may take several minutes before the updated final product can be retrieved.
Declaration
public virtual CssProduct GetCssProduct(CssProductName name, CallSettings callSettings = null)
Parameters
Type | Name | Description |
---|---|---|
CssProductName | name | Required. The name of the CSS product to retrieve. |
CallSettings | callSettings | If not null, applies overrides to this RPC call. |
Returns
Type | Description |
---|---|
CssProduct | The RPC response. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = CssProductsServiceClient.Create();
// Initialize request argument(s)
CssProductName name = CssProductName.FromAccountCssProduct("[ACCOUNT]", "[CSS_PRODUCT]");
// Make the request
CssProduct response = cssProductsServiceClient.GetCssProduct(name);
GetCssProduct(GetCssProductRequest, CallSettings)
Retrieves the processed CSS Product from your CSS Center account. After inserting, updating, or deleting a product input, it may take several minutes before the updated final product can be retrieved.
Declaration
public virtual CssProduct GetCssProduct(GetCssProductRequest request, CallSettings callSettings = null)
Parameters
Type | Name | Description |
---|---|---|
GetCssProductRequest | request | The request object containing all of the parameters for the API call. |
CallSettings | callSettings | If not null, applies overrides to this RPC call. |
Returns
Type | Description |
---|---|
CssProduct | The RPC response. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = CssProductsServiceClient.Create();
// Initialize request argument(s)
GetCssProductRequest request = new GetCssProductRequest
{
CssProductName = CssProductName.FromAccountCssProduct("[ACCOUNT]", "[CSS_PRODUCT]"),
};
// Make the request
CssProduct response = cssProductsServiceClient.GetCssProduct(request);
GetCssProduct(string, CallSettings)
Retrieves the processed CSS Product from your CSS Center account. After inserting, updating, or deleting a product input, it may take several minutes before the updated final product can be retrieved.
Declaration
public virtual CssProduct GetCssProduct(string name, CallSettings callSettings = null)
Parameters
Type | Name | Description |
---|---|---|
string | name | Required. The name of the CSS product to retrieve. |
CallSettings | callSettings | If not null, applies overrides to this RPC call. |
Returns
Type | Description |
---|---|
CssProduct | The RPC response. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = CssProductsServiceClient.Create();
// Initialize request argument(s)
string name = "accounts/[ACCOUNT]/cssProducts/[CSS_PRODUCT]";
// Make the request
CssProduct response = cssProductsServiceClient.GetCssProduct(name);
GetCssProductAsync(CssProductName, CallSettings)
Retrieves the processed CSS Product from your CSS Center account. After inserting, updating, or deleting a product input, it may take several minutes before the updated final product can be retrieved.
Declaration
public virtual Task<CssProduct> GetCssProductAsync(CssProductName name, CallSettings callSettings = null)
Parameters
Type | Name | Description |
---|---|---|
CssProductName | name | Required. The name of the CSS product to retrieve. |
CallSettings | callSettings | If not null, applies overrides to this RPC call. |
Returns
Type | Description |
---|---|
Task<CssProduct> | A Task containing the RPC response. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = await CssProductsServiceClient.CreateAsync();
// Initialize request argument(s)
CssProductName name = CssProductName.FromAccountCssProduct("[ACCOUNT]", "[CSS_PRODUCT]");
// Make the request
CssProduct response = await cssProductsServiceClient.GetCssProductAsync(name);
GetCssProductAsync(CssProductName, CancellationToken)
Retrieves the processed CSS Product from your CSS Center account. After inserting, updating, or deleting a product input, it may take several minutes before the updated final product can be retrieved.
Declaration
public virtual Task<CssProduct> GetCssProductAsync(CssProductName name, CancellationToken cancellationToken)
Parameters
Type | Name | Description |
---|---|---|
CssProductName | name | Required. The name of the CSS product to retrieve. |
CancellationToken | cancellationToken | A CancellationToken to use for this RPC. |
Returns
Type | Description |
---|---|
Task<CssProduct> | A Task containing the RPC response. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = await CssProductsServiceClient.CreateAsync();
// Initialize request argument(s)
CssProductName name = CssProductName.FromAccountCssProduct("[ACCOUNT]", "[CSS_PRODUCT]");
// Make the request
CssProduct response = await cssProductsServiceClient.GetCssProductAsync(name);
GetCssProductAsync(GetCssProductRequest, CallSettings)
Retrieves the processed CSS Product from your CSS Center account. After inserting, updating, or deleting a product input, it may take several minutes before the updated final product can be retrieved.
Declaration
public virtual Task<CssProduct> GetCssProductAsync(GetCssProductRequest request, CallSettings callSettings = null)
Parameters
Type | Name | Description |
---|---|---|
GetCssProductRequest | request | The request object containing all of the parameters for the API call. |
CallSettings | callSettings | If not null, applies overrides to this RPC call. |
Returns
Type | Description |
---|---|
Task<CssProduct> | A Task containing the RPC response. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = await CssProductsServiceClient.CreateAsync();
// Initialize request argument(s)
GetCssProductRequest request = new GetCssProductRequest
{
CssProductName = CssProductName.FromAccountCssProduct("[ACCOUNT]", "[CSS_PRODUCT]"),
};
// Make the request
CssProduct response = await cssProductsServiceClient.GetCssProductAsync(request);
GetCssProductAsync(GetCssProductRequest, CancellationToken)
Retrieves the processed CSS Product from your CSS Center account. After inserting, updating, or deleting a product input, it may take several minutes before the updated final product can be retrieved.
Declaration
public virtual Task<CssProduct> GetCssProductAsync(GetCssProductRequest request, CancellationToken cancellationToken)
Parameters
Type | Name | Description |
---|---|---|
GetCssProductRequest | request | The request object containing all of the parameters for the API call. |
CancellationToken | cancellationToken | A CancellationToken to use for this RPC. |
Returns
Type | Description |
---|---|
Task<CssProduct> | A Task containing the RPC response. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = await CssProductsServiceClient.CreateAsync();
// Initialize request argument(s)
GetCssProductRequest request = new GetCssProductRequest
{
CssProductName = CssProductName.FromAccountCssProduct("[ACCOUNT]", "[CSS_PRODUCT]"),
};
// Make the request
CssProduct response = await cssProductsServiceClient.GetCssProductAsync(request);
GetCssProductAsync(string, CallSettings)
Retrieves the processed CSS Product from your CSS Center account. After inserting, updating, or deleting a product input, it may take several minutes before the updated final product can be retrieved.
Declaration
public virtual Task<CssProduct> GetCssProductAsync(string name, CallSettings callSettings = null)
Parameters
Type | Name | Description |
---|---|---|
string | name | Required. The name of the CSS product to retrieve. |
CallSettings | callSettings | If not null, applies overrides to this RPC call. |
Returns
Type | Description |
---|---|
Task<CssProduct> | A Task containing the RPC response. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = await CssProductsServiceClient.CreateAsync();
// Initialize request argument(s)
string name = "accounts/[ACCOUNT]/cssProducts/[CSS_PRODUCT]";
// Make the request
CssProduct response = await cssProductsServiceClient.GetCssProductAsync(name);
GetCssProductAsync(string, CancellationToken)
Retrieves the processed CSS Product from your CSS Center account. After inserting, updating, or deleting a product input, it may take several minutes before the updated final product can be retrieved.
Declaration
public virtual Task<CssProduct> GetCssProductAsync(string name, CancellationToken cancellationToken)
Parameters
Type | Name | Description |
---|---|---|
string | name | Required. The name of the CSS product to retrieve. |
CancellationToken | cancellationToken | A CancellationToken to use for this RPC. |
Returns
Type | Description |
---|---|
Task<CssProduct> | A Task containing the RPC response. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = await CssProductsServiceClient.CreateAsync();
// Initialize request argument(s)
string name = "accounts/[ACCOUNT]/cssProducts/[CSS_PRODUCT]";
// Make the request
CssProduct response = await cssProductsServiceClient.GetCssProductAsync(name);
ListCssProducts(AccountName, string, int?, CallSettings)
Lists the processed CSS Products in your CSS Center account. The response might contain fewer items than specified by pageSize. Rely on pageToken to determine if there are more items to be requested.
After inserting, updating, or deleting a CSS product input, it may take several minutes before the updated processed CSS product can be retrieved.
Declaration
public virtual PagedEnumerable<ListCssProductsResponse, CssProduct> ListCssProducts(AccountName parent, string pageToken = null, int? pageSize = null, CallSettings callSettings = null)
Parameters
Type | Name | Description |
---|---|---|
AccountName | parent | Required. The account/domain to list processed CSS Products for. Format: accounts/{account} |
string | pageToken | The token returned from the previous request. A value of |
int? | pageSize | The size of page to request. The response will not be larger than this, but may be smaller. A value of
|
CallSettings | callSettings | If not null, applies overrides to this RPC call. |
Returns
Type | Description |
---|---|
PagedEnumerable<ListCssProductsResponse, CssProduct> | A pageable sequence of CssProduct resources. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = CssProductsServiceClient.Create();
// Initialize request argument(s)
AccountName parent = AccountName.FromAccount("[ACCOUNT]");
// Make the request
PagedEnumerable<ListCssProductsResponse, CssProduct> response = cssProductsServiceClient.ListCssProducts(parent);
// Iterate over all response items, lazily performing RPCs as required
foreach (CssProduct item in response)
{
// Do something with each item
Console.WriteLine(item);
}
// Or iterate over pages (of server-defined size), performing one RPC per page
foreach (ListCssProductsResponse page in response.AsRawResponses())
{
// Do something with each page of items
Console.WriteLine("A page of results:");
foreach (CssProduct item in page)
{
// Do something with each item
Console.WriteLine(item);
}
}
// Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
int pageSize = 10;
Page<CssProduct> singlePage = response.ReadPage(pageSize);
// Do something with the page of items
Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
foreach (CssProduct item in singlePage)
{
// Do something with each item
Console.WriteLine(item);
}
// Store the pageToken, for when the next page is required.
string nextPageToken = singlePage.NextPageToken;
ListCssProducts(ListCssProductsRequest, CallSettings)
Lists the processed CSS Products in your CSS Center account. The response might contain fewer items than specified by pageSize. Rely on pageToken to determine if there are more items to be requested.
After inserting, updating, or deleting a CSS product input, it may take several minutes before the updated processed CSS product can be retrieved.
Declaration
public virtual PagedEnumerable<ListCssProductsResponse, CssProduct> ListCssProducts(ListCssProductsRequest request, CallSettings callSettings = null)
Parameters
Type | Name | Description |
---|---|---|
ListCssProductsRequest | request | The request object containing all of the parameters for the API call. |
CallSettings | callSettings | If not null, applies overrides to this RPC call. |
Returns
Type | Description |
---|---|
PagedEnumerable<ListCssProductsResponse, CssProduct> | A pageable sequence of CssProduct resources. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = CssProductsServiceClient.Create();
// Initialize request argument(s)
ListCssProductsRequest request = new ListCssProductsRequest
{
ParentAsAccountName = AccountName.FromAccount("[ACCOUNT]"),
};
// Make the request
PagedEnumerable<ListCssProductsResponse, CssProduct> response = cssProductsServiceClient.ListCssProducts(request);
// Iterate over all response items, lazily performing RPCs as required
foreach (CssProduct item in response)
{
// Do something with each item
Console.WriteLine(item);
}
// Or iterate over pages (of server-defined size), performing one RPC per page
foreach (ListCssProductsResponse page in response.AsRawResponses())
{
// Do something with each page of items
Console.WriteLine("A page of results:");
foreach (CssProduct item in page)
{
// Do something with each item
Console.WriteLine(item);
}
}
// Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
int pageSize = 10;
Page<CssProduct> singlePage = response.ReadPage(pageSize);
// Do something with the page of items
Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
foreach (CssProduct item in singlePage)
{
// Do something with each item
Console.WriteLine(item);
}
// Store the pageToken, for when the next page is required.
string nextPageToken = singlePage.NextPageToken;
ListCssProducts(string, string, int?, CallSettings)
Lists the processed CSS Products in your CSS Center account. The response might contain fewer items than specified by pageSize. Rely on pageToken to determine if there are more items to be requested.
After inserting, updating, or deleting a CSS product input, it may take several minutes before the updated processed CSS product can be retrieved.
Declaration
public virtual PagedEnumerable<ListCssProductsResponse, CssProduct> ListCssProducts(string parent, string pageToken = null, int? pageSize = null, CallSettings callSettings = null)
Parameters
Type | Name | Description |
---|---|---|
string | parent | Required. The account/domain to list processed CSS Products for. Format: accounts/{account} |
string | pageToken | The token returned from the previous request. A value of |
int? | pageSize | The size of page to request. The response will not be larger than this, but may be smaller. A value of
|
CallSettings | callSettings | If not null, applies overrides to this RPC call. |
Returns
Type | Description |
---|---|
PagedEnumerable<ListCssProductsResponse, CssProduct> | A pageable sequence of CssProduct resources. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = CssProductsServiceClient.Create();
// Initialize request argument(s)
string parent = "accounts/[ACCOUNT]";
// Make the request
PagedEnumerable<ListCssProductsResponse, CssProduct> response = cssProductsServiceClient.ListCssProducts(parent);
// Iterate over all response items, lazily performing RPCs as required
foreach (CssProduct item in response)
{
// Do something with each item
Console.WriteLine(item);
}
// Or iterate over pages (of server-defined size), performing one RPC per page
foreach (ListCssProductsResponse page in response.AsRawResponses())
{
// Do something with each page of items
Console.WriteLine("A page of results:");
foreach (CssProduct item in page)
{
// Do something with each item
Console.WriteLine(item);
}
}
// Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
int pageSize = 10;
Page<CssProduct> singlePage = response.ReadPage(pageSize);
// Do something with the page of items
Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
foreach (CssProduct item in singlePage)
{
// Do something with each item
Console.WriteLine(item);
}
// Store the pageToken, for when the next page is required.
string nextPageToken = singlePage.NextPageToken;
ListCssProductsAsync(AccountName, string, int?, CallSettings)
Lists the processed CSS Products in your CSS Center account. The response might contain fewer items than specified by pageSize. Rely on pageToken to determine if there are more items to be requested.
After inserting, updating, or deleting a CSS product input, it may take several minutes before the updated processed CSS product can be retrieved.
Declaration
public virtual PagedAsyncEnumerable<ListCssProductsResponse, CssProduct> ListCssProductsAsync(AccountName parent, string pageToken = null, int? pageSize = null, CallSettings callSettings = null)
Parameters
Type | Name | Description |
---|---|---|
AccountName | parent | Required. The account/domain to list processed CSS Products for. Format: accounts/{account} |
string | pageToken | The token returned from the previous request. A value of |
int? | pageSize | The size of page to request. The response will not be larger than this, but may be smaller. A value of
|
CallSettings | callSettings | If not null, applies overrides to this RPC call. |
Returns
Type | Description |
---|---|
PagedAsyncEnumerable<ListCssProductsResponse, CssProduct> | A pageable asynchronous sequence of CssProduct resources. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = await CssProductsServiceClient.CreateAsync();
// Initialize request argument(s)
AccountName parent = AccountName.FromAccount("[ACCOUNT]");
// Make the request
PagedAsyncEnumerable<ListCssProductsResponse, CssProduct> response = cssProductsServiceClient.ListCssProductsAsync(parent);
// Iterate over all response items, lazily performing RPCs as required
await response.ForEachAsync((CssProduct item) =>
{
// Do something with each item
Console.WriteLine(item);
});
// Or iterate over pages (of server-defined size), performing one RPC per page
await response.AsRawResponses().ForEachAsync((ListCssProductsResponse page) =>
{
// Do something with each page of items
Console.WriteLine("A page of results:");
foreach (CssProduct item in page)
{
// Do something with each item
Console.WriteLine(item);
}
});
// Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
int pageSize = 10;
Page<CssProduct> singlePage = await response.ReadPageAsync(pageSize);
// Do something with the page of items
Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
foreach (CssProduct item in singlePage)
{
// Do something with each item
Console.WriteLine(item);
}
// Store the pageToken, for when the next page is required.
string nextPageToken = singlePage.NextPageToken;
ListCssProductsAsync(ListCssProductsRequest, CallSettings)
Lists the processed CSS Products in your CSS Center account. The response might contain fewer items than specified by pageSize. Rely on pageToken to determine if there are more items to be requested.
After inserting, updating, or deleting a CSS product input, it may take several minutes before the updated processed CSS product can be retrieved.
Declaration
public virtual PagedAsyncEnumerable<ListCssProductsResponse, CssProduct> ListCssProductsAsync(ListCssProductsRequest request, CallSettings callSettings = null)
Parameters
Type | Name | Description |
---|---|---|
ListCssProductsRequest | request | The request object containing all of the parameters for the API call. |
CallSettings | callSettings | If not null, applies overrides to this RPC call. |
Returns
Type | Description |
---|---|
PagedAsyncEnumerable<ListCssProductsResponse, CssProduct> | A pageable asynchronous sequence of CssProduct resources. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = await CssProductsServiceClient.CreateAsync();
// Initialize request argument(s)
ListCssProductsRequest request = new ListCssProductsRequest
{
ParentAsAccountName = AccountName.FromAccount("[ACCOUNT]"),
};
// Make the request
PagedAsyncEnumerable<ListCssProductsResponse, CssProduct> response = cssProductsServiceClient.ListCssProductsAsync(request);
// Iterate over all response items, lazily performing RPCs as required
await response.ForEachAsync((CssProduct item) =>
{
// Do something with each item
Console.WriteLine(item);
});
// Or iterate over pages (of server-defined size), performing one RPC per page
await response.AsRawResponses().ForEachAsync((ListCssProductsResponse page) =>
{
// Do something with each page of items
Console.WriteLine("A page of results:");
foreach (CssProduct item in page)
{
// Do something with each item
Console.WriteLine(item);
}
});
// Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
int pageSize = 10;
Page<CssProduct> singlePage = await response.ReadPageAsync(pageSize);
// Do something with the page of items
Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
foreach (CssProduct item in singlePage)
{
// Do something with each item
Console.WriteLine(item);
}
// Store the pageToken, for when the next page is required.
string nextPageToken = singlePage.NextPageToken;
ListCssProductsAsync(string, string, int?, CallSettings)
Lists the processed CSS Products in your CSS Center account. The response might contain fewer items than specified by pageSize. Rely on pageToken to determine if there are more items to be requested.
After inserting, updating, or deleting a CSS product input, it may take several minutes before the updated processed CSS product can be retrieved.
Declaration
public virtual PagedAsyncEnumerable<ListCssProductsResponse, CssProduct> ListCssProductsAsync(string parent, string pageToken = null, int? pageSize = null, CallSettings callSettings = null)
Parameters
Type | Name | Description |
---|---|---|
string | parent | Required. The account/domain to list processed CSS Products for. Format: accounts/{account} |
string | pageToken | The token returned from the previous request. A value of |
int? | pageSize | The size of page to request. The response will not be larger than this, but may be smaller. A value of
|
CallSettings | callSettings | If not null, applies overrides to this RPC call. |
Returns
Type | Description |
---|---|
PagedAsyncEnumerable<ListCssProductsResponse, CssProduct> | A pageable asynchronous sequence of CssProduct resources. |
Sample code
// Create client
CssProductsServiceClient cssProductsServiceClient = await CssProductsServiceClient.CreateAsync();
// Initialize request argument(s)
string parent = "accounts/[ACCOUNT]";
// Make the request
PagedAsyncEnumerable<ListCssProductsResponse, CssProduct> response = cssProductsServiceClient.ListCssProductsAsync(parent);
// Iterate over all response items, lazily performing RPCs as required
await response.ForEachAsync((CssProduct item) =>
{
// Do something with each item
Console.WriteLine(item);
});
// Or iterate over pages (of server-defined size), performing one RPC per page
await response.AsRawResponses().ForEachAsync((ListCssProductsResponse page) =>
{
// Do something with each page of items
Console.WriteLine("A page of results:");
foreach (CssProduct item in page)
{
// Do something with each item
Console.WriteLine(item);
}
});
// Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
int pageSize = 10;
Page<CssProduct> singlePage = await response.ReadPageAsync(pageSize);
// Do something with the page of items
Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
foreach (CssProduct item in singlePage)
{
// Do something with each item
Console.WriteLine(item);
}
// Store the pageToken, for when the next page is required.
string nextPageToken = singlePage.NextPageToken;
ShutdownDefaultChannelsAsync()
Shuts down any channels automatically created by Create() and CreateAsync(CancellationToken). Channels which weren't automatically created are not affected.
Declaration
public static Task ShutdownDefaultChannelsAsync()
Returns
Type | Description |
---|---|
Task | A task representing the asynchronous shutdown operation. |
Remarks
After calling this method, further calls to Create() and CreateAsync(CancellationToken) will create new channels, which could in turn be shut down by another call to this method.