cancelOperationAsync(CancelOperationRequest $request, array $optionalArgs = []) * @method PromiseInterface deleteOperationAsync(DeleteOperationRequest $request, array $optionalArgs = []) * @method PromiseInterface getOperationAsync(GetOperationRequest $request, array $optionalArgs = []) * @method PromiseInterface listOperationsAsync(ListOperationsRequest $request, array $optionalArgs = []) * @method PromiseInterface waitOperationAsync(WaitOperationRequest $request, array $optionalArgs = []) */ class OperationsClient { use GapicClientTrait; /** The name of the service. */ private const SERVICE_NAME = 'google.longrunning.Operations'; /** * The default address of the service. * * @deprecated SERVICE_ADDRESS_TEMPLATE should be used instead. */ private const SERVICE_ADDRESS = 'longrunning.googleapis.com'; /** The address template of the service. */ private const SERVICE_ADDRESS_TEMPLATE = 'longrunning.UNIVERSE_DOMAIN'; /** The default port of the service. */ private const DEFAULT_SERVICE_PORT = 443; /** The name of the code generator, to be included in the agent header. */ private const CODEGEN_NAME = 'gapic'; /** The default scopes required by the service. */ public static $serviceScopes = []; private static function getClientDefaults() { return ['serviceName' => self::SERVICE_NAME, 'apiEndpoint' => self::SERVICE_ADDRESS . ':' . self::DEFAULT_SERVICE_PORT, 'clientConfig' => __DIR__ . '/../resources/operations_client_config.json', 'descriptorsConfigPath' => __DIR__ . '/../resources/operations_descriptor_config.php', 'gcpApiConfigPath' => __DIR__ . '/../resources/operations_grpc_config.json', 'credentialsConfig' => ['defaultScopes' => self::$serviceScopes], 'transportConfig' => ['rest' => ['restClientConfigPath' => __DIR__ . '/../resources/operations_rest_client_config.php']]]; } /** * Constructor. * * @param array $options { * Optional. Options for configuring the service API wrapper. * * @type string $apiEndpoint * The address of the API remote host. May optionally include the port, formatted * as ":". Default 'longrunning.googleapis.com:443'. * @type string|array|FetchAuthTokenInterface|CredentialsWrapper $credentials * The credentials to be used by the client to authorize API calls. This option * accepts either a path to a credentials file, or a decoded credentials file as a * PHP array. * *Advanced usage*: In addition, this option can also accept a pre-constructed * {@see \Google\Auth\FetchAuthTokenInterface} object or * {@see \Google\ApiCore\CredentialsWrapper} object. Note that when one of these * objects are provided, any settings in $credentialsConfig will be ignored. * @type array $credentialsConfig * Options used to configure credentials, including auth token caching, for the * client. For a full list of supporting configuration options, see * {@see \Google\ApiCore\CredentialsWrapper::build()} . * @type bool $disableRetries * Determines whether or not retries defined by the client configuration should be * disabled. Defaults to `false`. * @type string|array $clientConfig * Client method configuration, including retry settings. This option can be either * a path to a JSON file, or a PHP array containing the decoded JSON data. By * default this settings points to the default client config file, which is * provided in the resources folder. * @type string|TransportInterface $transport * The transport used for executing network requests. May be either the string * `rest` or `grpc`. Defaults to `grpc` if gRPC support is detected on the system. * *Advanced usage*: Additionally, it is possible to pass in an already * instantiated {@see \Google\ApiCore\Transport\TransportInterface} object. Note * that when this object is provided, any settings in $transportConfig, and any * $apiEndpoint setting, will be ignored. * @type array $transportConfig * Configuration options that will be used to construct the transport. Options for * each supported transport type should be passed in a key for that transport. For * example: * $transportConfig = [ * 'grpc' => [...], * 'rest' => [...], * ]; * See the {@see \Google\ApiCore\Transport\GrpcTransport::build()} and * {@see \Google\ApiCore\Transport\RestTransport::build()} methods for the * supported options. * @type callable $clientCertSource * A callable which returns the client cert as a string. This can be used to * provide a certificate and private key to the transport layer for mTLS. * } * * @throws ValidationException */ public function __construct(array $options = []) { $clientOptions = $this->buildClientOptions($options); $this->setClientOptions($clientOptions); } /** Handles execution of the async variants for each documented method. */ public function __call($method, $args) { if (\substr($method, -5) !== 'Async') { \trigger_error('Call to undefined method ' . __CLASS__ . "::{$method}()", \E_USER_ERROR); } \array_unshift($args, \substr($method, 0, -5)); return \call_user_func_array([$this, 'startAsyncCall'], $args); } /** * Starts asynchronous cancellation on a long-running operation. The server * makes a best effort to cancel the operation, but success is not * guaranteed. If the server doesn't support this method, it returns * `google.rpc.Code.UNIMPLEMENTED`. Clients can use * [Operations.GetOperation][google.longrunning.Operations.GetOperation] or * other methods to check whether the cancellation succeeded or whether the * operation completed despite cancellation. On successful cancellation, * the operation is not deleted; instead, it becomes an operation with * an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1, * corresponding to `Code.CANCELLED`. * * The async variant is {@see OperationsClient::cancelOperationAsync()} . * * @example samples/OperationsClient/cancel_operation.php * * @param CancelOperationRequest $request A request to house fields associated with the call. * @param array $callOptions { * Optional. * * @type RetrySettings|array $retrySettings * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an * associative array of retry settings parameters. See the documentation on * {@see RetrySettings} for example usage. * } * * @throws ApiException Thrown if the API call fails. */ public function cancelOperation(CancelOperationRequest $request, array $callOptions = []) : void { $this->startApiCall('CancelOperation', $request, $callOptions)->wait(); } /** * Deletes a long-running operation. This method indicates that the client is * no longer interested in the operation result. It does not cancel the * operation. If the server doesn't support this method, it returns * `google.rpc.Code.UNIMPLEMENTED`. * * The async variant is {@see OperationsClient::deleteOperationAsync()} . * * @example samples/OperationsClient/delete_operation.php * * @param DeleteOperationRequest $request A request to house fields associated with the call. * @param array $callOptions { * Optional. * * @type RetrySettings|array $retrySettings * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an * associative array of retry settings parameters. See the documentation on * {@see RetrySettings} for example usage. * } * * @throws ApiException Thrown if the API call fails. */ public function deleteOperation(DeleteOperationRequest $request, array $callOptions = []) : void { $this->startApiCall('DeleteOperation', $request, $callOptions)->wait(); } /** * Gets the latest state of a long-running operation. Clients can use this * method to poll the operation result at intervals as recommended by the API * service. * * The async variant is {@see OperationsClient::getOperationAsync()} . * * @example samples/OperationsClient/get_operation.php * * @param GetOperationRequest $request A request to house fields associated with the call. * @param array $callOptions { * Optional. * * @type RetrySettings|array $retrySettings * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an * associative array of retry settings parameters. See the documentation on * {@see RetrySettings} for example usage. * } * * @return Operation * * @throws ApiException Thrown if the API call fails. */ public function getOperation(GetOperationRequest $request, array $callOptions = []) : Operation { return $this->startApiCall('GetOperation', $request, $callOptions)->wait(); } /** * Lists operations that match the specified filter in the request. If the * server doesn't support this method, it returns `UNIMPLEMENTED`. * * NOTE: the `name` binding allows API services to override the binding * to use different resource name schemes, such as `users/*/operations`. To * override the binding, API services can add a binding such as * `"/v1/{name=users/*}/operations"` to their service configuration. * For backwards compatibility, the default name includes the operations * collection id, however overriding users must ensure the name binding * is the parent resource, without the operations collection id. * * The async variant is {@see OperationsClient::listOperationsAsync()} . * * @example samples/OperationsClient/list_operations.php * * @param ListOperationsRequest $request A request to house fields associated with the call. * @param array $callOptions { * Optional. * * @type RetrySettings|array $retrySettings * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an * associative array of retry settings parameters. See the documentation on * {@see RetrySettings} for example usage. * } * * @return PagedListResponse * * @throws ApiException Thrown if the API call fails. */ public function listOperations(ListOperationsRequest $request, array $callOptions = []) : PagedListResponse { return $this->startApiCall('ListOperations', $request, $callOptions); } /** * Waits until the specified long-running operation is done or reaches at most * a specified timeout, returning the latest state. If the operation is * already done, the latest state is immediately returned. If the timeout * specified is greater than the default HTTP/RPC timeout, the HTTP/RPC * timeout is used. If the server does not support this method, it returns * `google.rpc.Code.UNIMPLEMENTED`. * Note that this method is on a best-effort basis. It may return the latest * state before the specified timeout (including immediately), meaning even an * immediate response is no guarantee that the operation is done. * * The async variant is {@see OperationsClient::waitOperationAsync()} . * * @example samples/OperationsClient/wait_operation.php * * @param WaitOperationRequest $request A request to house fields associated with the call. * @param array $callOptions { * Optional. * * @type RetrySettings|array $retrySettings * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an * associative array of retry settings parameters. See the documentation on * {@see RetrySettings} for example usage. * } * * @return Operation * * @throws ApiException Thrown if the API call fails. */ public function waitOperation(WaitOperationRequest $request, array $callOptions = []) : Operation { return $this->startApiCall('WaitOperation', $request, $callOptions)->wait(); } }