Google Cloud Spanner C++ Client  1.34.0
A C++ Client Library for Google Cloud Spanner
iam_updater.h
Go to the documentation of this file.
1 // Copyright 2019 Google LLC
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_IAM_UPDATER_H
16 #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_IAM_UPDATER_H
17 
18 #include "google/cloud/spanner/version.h"
19 #include "google/cloud/iam_updater.h"
20 
21 namespace google {
22 namespace cloud {
23 namespace spanner {
25 
26 /**
27  * Type alias for google::cloud::IamUpdater.
28  *
29  * Used in the `SetIamPolicy()` read-modify-write cycle of the Spanner admin
30  * clients, `DatabaseAdminClient` and `InstanceAdminClient`, in order to avoid
31  * race conditions.
32  *
33  * The updater is called with a recently fetched policy, and should either
34  * return an empty optional if no changes are required, or return a new policy
35  * to be set. In the latter case the control loop will always set the `etag`
36  * of the new policy to that of the recently fetched one. A failure to update
37  * then indicates a race, and the process will repeat.
38  */
39 using IamUpdater = ::google::cloud::IamUpdater;
40 
42 } // namespace spanner
43 } // namespace cloud
44 } // namespace google
45 
46 #endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_IAM_UPDATER_H