Lets clients check and report operations against a managed service.
Equality
Instances of this class created via copy-construction or copy-assignment always compare equal. Instances created with equal std::shared_ptr<*Connection> objects compare equal. Objects that compare equal share the same underlying resources.
Performance
Creating a new instance of this class is a relatively expensive operation, new objects establish new connections to the service. In contrast, copy-construction, move-construction, and the corresponding assignment operations are relatively efficient as the copies share all underlying resources.
Thread Safety
Concurrent access to different instances of this class, even if they compare equal, is guaranteed to work. Two or more threads operating on the same instance of this class is not guaranteed to work. Since copy-construction and move-construction is a relatively efficient operation, consider using such a copy when using this class from multiple threads.
Checks whether an operation on a service should be allowed to proceed based on the configuration of the service and related policies.
It must be called before the operation is executed.
If feasible, the client should cache the check results and reuse them for 60 seconds. In case of any server errors, the client should rely on the cached results for much longer time to avoid outage. WARNING: There is general 60s delay for the configuration and policy propagation, therefore callers MUST NOT depend on the Check method having the latest policy information.
NOTE: the CheckRequest has the size limit (wire-format byte size) of 1MB.
This method requires the servicemanagement.services.check permission on the specified service. For more information, see Cloud IAM.
Unary RPCs, such as the one wrapped by this function, receive a single request proto message which includes all the inputs for the RPC. In this case, the proto message is a google.api.servicecontrol.v1.CheckRequest. Proto messages are converted to C++ classes by Protobuf, using the Protobuf mapping rules.
opts
Options
Optional. Override the class-level options, such as retry and backoff policies.
Reports operation results to Google Service Control, such as logs and metrics.
It should be called after an operation is completed.
If feasible, the client should aggregate reporting data for up to 5 seconds to reduce API traffic. Limiting aggregation to 5 seconds is to reduce data loss during client crashes. Clients should carefully choose the aggregation time window to avoid data loss risk more than 0.01% for business and compliance reasons.
NOTE: the ReportRequest has the size limit (wire-format byte size) of 1MB.
This method requires the servicemanagement.services.report permission on the specified service. For more information, see Google Cloud IAM.
Unary RPCs, such as the one wrapped by this function, receive a single request proto message which includes all the inputs for the RPC. In this case, the proto message is a google.api.servicecontrol.v1.ReportRequest. Proto messages are converted to C++ classes by Protobuf, using the Protobuf mapping rules.
opts
Options
Optional. Override the class-level options, such as retry and backoff policies.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[[["\u003cp\u003eThe Google Service Control API allows clients to check and report operations against a managed service, providing functionality to manage and monitor service usage.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eCheck\u003c/code\u003e function is used to verify if an operation should be permitted based on service configuration and policies, and it should be called before an operation occurs, with results cached for up to 60 seconds when possible.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eReport\u003c/code\u003e function is used to send operation results, including logs and metrics, to the Google Service Control, and it should be called after an operation is complete, with clients having the ability to aggregate reporting data for up to 5 seconds.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eServiceControllerClient\u003c/code\u003e class supports copy and move operations efficiently, allowing for resource sharing and is safe for concurrent access across different instances, but not within the same instance.\u003c/p\u003e\n"],["\u003cp\u003eThere are numerous versions of the \u003ccode\u003eServiceControllerClient\u003c/code\u003e available, from version \u003ccode\u003e2.11.0\u003c/code\u003e up to \u003ccode\u003e2.37.0-rc\u003c/code\u003e (the latest).\u003c/p\u003e\n"]]],[],null,["# Class ServiceControllerClient (2.32.0)\n\nVersion 2.32.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/servicecontrol/latest/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.41.0](/cpp/docs/reference/servicecontrol/2.41.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.40.0](/cpp/docs/reference/servicecontrol/2.40.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.39.0](/cpp/docs/reference/servicecontrol/2.39.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.38.0](/cpp/docs/reference/servicecontrol/2.38.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.37.0](/cpp/docs/reference/servicecontrol/2.37.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.36.0](/cpp/docs/reference/servicecontrol/2.36.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.35.0](/cpp/docs/reference/servicecontrol/2.35.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.34.0](/cpp/docs/reference/servicecontrol/2.34.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.33.0](/cpp/docs/reference/servicecontrol/2.33.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.32.0](/cpp/docs/reference/servicecontrol/2.32.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.31.0](/cpp/docs/reference/servicecontrol/2.31.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.30.0](/cpp/docs/reference/servicecontrol/2.30.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.29.0](/cpp/docs/reference/servicecontrol/2.29.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.28.0](/cpp/docs/reference/servicecontrol/2.28.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.27.0](/cpp/docs/reference/servicecontrol/2.27.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.26.0](/cpp/docs/reference/servicecontrol/2.26.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.25.1](/cpp/docs/reference/servicecontrol/2.25.1/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.24.0](/cpp/docs/reference/servicecontrol/2.24.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.23.0](/cpp/docs/reference/servicecontrol/2.23.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.22.1](/cpp/docs/reference/servicecontrol/2.22.1/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.21.0](/cpp/docs/reference/servicecontrol/2.21.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.20.0](/cpp/docs/reference/servicecontrol/2.20.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.19.0](/cpp/docs/reference/servicecontrol/2.19.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.18.0](/cpp/docs/reference/servicecontrol/2.18.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.17.0](/cpp/docs/reference/servicecontrol/2.17.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.16.0](/cpp/docs/reference/servicecontrol/2.16.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.15.1](/cpp/docs/reference/servicecontrol/2.15.1/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.14.0](/cpp/docs/reference/servicecontrol/2.14.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.13.0](/cpp/docs/reference/servicecontrol/2.13.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.12.0](/cpp/docs/reference/servicecontrol/2.12.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient)\n- [2.11.0](/cpp/docs/reference/servicecontrol/2.11.0/classgoogle_1_1cloud_1_1servicecontrol__v1_1_1ServiceControllerClient) \n[Google Service Control API](/service-control/overview) \nLets clients check and report operations against a [managed service](https://cloud.google.com/service-management/reference/rpc/google.api/servicemanagement.v1#google.api.servicemanagement.v1.ManagedService).\n\n###### Equality\n\nInstances of this class created via copy-construction or copy-assignment always compare equal. Instances created with equal `std::shared_ptr\u003c*Connection\u003e` objects compare equal. Objects that compare equal share the same underlying resources.\n\n###### Performance\n\nCreating a new instance of this class is a relatively expensive operation, new objects establish new connections to the service. In contrast, copy-construction, move-construction, and the corresponding assignment operations are relatively efficient as the copies share all underlying resources.\n\n###### Thread Safety\n\nConcurrent access to different instances of this class, even if they compare equal, is guaranteed to work. Two or more threads operating on the same instance of this class is not guaranteed to work. Since copy-construction and move-construction is a relatively efficient operation, consider using such a copy when using this class from multiple threads.\n\nConstructors\n------------\n\n### ServiceControllerClient(ServiceControllerClient const \\&)\n\nCopy and move support\n\n### ServiceControllerClient(ServiceControllerClient \\&\\&)\n\nCopy and move support\n\n### ServiceControllerClient(std::shared_ptr\\\u003c ServiceControllerConnection \\\u003e, Options)\n\nOperators\n---------\n\n### operator=(ServiceControllerClient const \\&)\n\nCopy and move support\n\n### operator=(ServiceControllerClient \\&\\&)\n\nCopy and move support\n\nFunctions\n---------\n\n### Check(google::api::servicecontrol::v1::CheckRequest const \\&, Options)\n\nChecks whether an operation on a service should be allowed to proceed based on the configuration of the service and related policies. \nIt must be called before the operation is executed.\n\nIf feasible, the client should cache the check results and reuse them for 60 seconds. In case of any server errors, the client should rely on the cached results for much longer time to avoid outage. WARNING: There is general 60s delay for the configuration and policy propagation, therefore callers MUST NOT depend on the `Check` method having the latest policy information.\n\nNOTE: the [CheckRequest](https://github.com/googleapis/googleapis/blob/d675ec222c431e3346ba8aaf0027392fe8b3d90c/google/api/servicecontrol/v1/service_controller.proto#L93) has the size limit (wire-format byte size) of 1MB.\n\nThis method requires the `servicemanagement.services.check` permission on the specified service. For more information, see [Cloud IAM](https://cloud.google.com/iam).\n\n### Report(google::api::servicecontrol::v1::ReportRequest const \\&, Options)\n\nReports operation results to Google Service Control, such as logs and metrics. \nIt should be called after an operation is completed.\n\nIf feasible, the client should aggregate reporting data for up to 5 seconds to reduce API traffic. Limiting aggregation to 5 seconds is to reduce data loss during client crashes. Clients should carefully choose the aggregation time window to avoid data loss risk more than 0.01% for business and compliance reasons.\n\nNOTE: the [ReportRequest](https://github.com/googleapis/googleapis/blob/d675ec222c431e3346ba8aaf0027392fe8b3d90c/google/api/servicecontrol/v1/service_controller.proto#L194) has the size limit (wire-format byte size) of 1MB.\n\nThis method requires the `servicemanagement.services.report` permission on the specified service. For more information, see [Google Cloud IAM](https://cloud.google.com/iam)."]]