-
Notifications
You must be signed in to change notification settings - Fork 448
Expand file tree
/
Copy pathcomment_client.h
More file actions
234 lines (220 loc) · 10.7 KB
/
comment_client.h
File metadata and controls
234 lines (220 loc) · 10.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Generated by the Codegen C++ plugin.
// If you make any local changes, they will be lost.
// source: google/cloud/support/v2/comment_service.proto
#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SUPPORT_V2_COMMENT_CLIENT_H
#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SUPPORT_V2_COMMENT_CLIENT_H
#include "google/cloud/support/v2/comment_connection.h"
#include "google/cloud/future.h"
#include "google/cloud/options.h"
#include "google/cloud/polling_policy.h"
#include "google/cloud/status_or.h"
#include "google/cloud/version.h"
#include <memory>
#include <string>
namespace google {
namespace cloud {
namespace support_v2 {
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN
///
/// A service to manage comments on cases.
///
/// @par 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.
///
/// @par 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.
///
/// @par 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.
///
class CommentServiceClient {
public:
explicit CommentServiceClient(
std::shared_ptr<CommentServiceConnection> connection, Options opts = {});
~CommentServiceClient();
///@{
/// @name Copy and move support
CommentServiceClient(CommentServiceClient const&) = default;
CommentServiceClient& operator=(CommentServiceClient const&) = default;
CommentServiceClient(CommentServiceClient&&) = default;
CommentServiceClient& operator=(CommentServiceClient&&) = default;
///@}
///@{
/// @name Equality
friend bool operator==(CommentServiceClient const& a,
CommentServiceClient const& b) {
return a.connection_ == b.connection_;
}
friend bool operator!=(CommentServiceClient const& a,
CommentServiceClient const& b) {
return !(a == b);
}
///@}
// clang-format off
///
/// List all the comments associated with a case.
///
/// @param parent Required. The name of the case for which to list comments.
/// @param opts Optional. Override the class-level options, such as retry and
/// backoff policies.
/// @return a [StreamRange](@ref google::cloud::StreamRange)
/// to iterate of the results. See the documentation of this type for
/// details. In brief, this class has `begin()` and `end()` member
/// functions returning a iterator class meeting the
/// [input iterator requirements]. The value type for this iterator is a
/// [`StatusOr`] as the iteration may fail even after some values are
/// retrieved successfully, for example, if there is a network disconnect.
/// An empty set of results does not indicate an error, it indicates
/// that there are no resources meeting the request criteria.
/// On a successful iteration the `StatusOr<T>` contains elements of type
/// [google.cloud.support.v2.Comment], or rather,
/// the C++ class generated by Protobuf from that type. Please consult the
/// Protobuf documentation for details on the [Protobuf mapping rules].
///
/// [Protobuf mapping rules]: https://protobuf.dev/reference/cpp/cpp-generated/
/// [input iterator requirements]: https://en.cppreference.com/w/cpp/named_req/InputIterator
/// [`std::string`]: https://en.cppreference.com/w/cpp/string/basic_string
/// [`future`]: @ref google::cloud::future
/// [`StatusOr`]: @ref google::cloud::StatusOr
/// [`Status`]: @ref google::cloud::Status
/// [google.cloud.support.v2.Comment]: @googleapis_reference_link{google/cloud/support/v2/comment.proto#L37}
/// [google.cloud.support.v2.ListCommentsRequest]: @googleapis_reference_link{google/cloud/support/v2/comment_service.proto#L67}
///
// clang-format on
StreamRange<google::cloud::support::v2::Comment> ListComments(
std::string const& parent, Options opts = {});
// clang-format off
///
/// List all the comments associated with a case.
///
/// @param request 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.cloud.support.v2.ListCommentsRequest].
/// Proto messages are converted to C++ classes by Protobuf, using the
/// [Protobuf mapping rules].
/// @param opts Optional. Override the class-level options, such as retry and
/// backoff policies.
/// @return a [StreamRange](@ref google::cloud::StreamRange)
/// to iterate of the results. See the documentation of this type for
/// details. In brief, this class has `begin()` and `end()` member
/// functions returning a iterator class meeting the
/// [input iterator requirements]. The value type for this iterator is a
/// [`StatusOr`] as the iteration may fail even after some values are
/// retrieved successfully, for example, if there is a network disconnect.
/// An empty set of results does not indicate an error, it indicates
/// that there are no resources meeting the request criteria.
/// On a successful iteration the `StatusOr<T>` contains elements of type
/// [google.cloud.support.v2.Comment], or rather,
/// the C++ class generated by Protobuf from that type. Please consult the
/// Protobuf documentation for details on the [Protobuf mapping rules].
///
/// [Protobuf mapping rules]: https://protobuf.dev/reference/cpp/cpp-generated/
/// [input iterator requirements]: https://en.cppreference.com/w/cpp/named_req/InputIterator
/// [`std::string`]: https://en.cppreference.com/w/cpp/string/basic_string
/// [`future`]: @ref google::cloud::future
/// [`StatusOr`]: @ref google::cloud::StatusOr
/// [`Status`]: @ref google::cloud::Status
/// [google.cloud.support.v2.Comment]: @googleapis_reference_link{google/cloud/support/v2/comment.proto#L37}
/// [google.cloud.support.v2.ListCommentsRequest]: @googleapis_reference_link{google/cloud/support/v2/comment_service.proto#L67}
///
// clang-format on
StreamRange<google::cloud::support::v2::Comment> ListComments(
google::cloud::support::v2::ListCommentsRequest request,
Options opts = {});
// clang-format off
///
/// Add a new comment to a case.
///
/// The comment must have the following fields set: `body`.
///
/// @param parent Required. The name of the case to which the comment should be added.
/// @param comment Required. The comment to be added.
/// @param opts Optional. Override the class-level options, such as retry and
/// backoff policies.
/// @return the result of the RPC. The response message type
/// ([google.cloud.support.v2.Comment])
/// is mapped to a C++ class using the [Protobuf mapping rules].
/// If the request fails, the [`StatusOr`] contains the error details.
///
/// [Protobuf mapping rules]: https://protobuf.dev/reference/cpp/cpp-generated/
/// [input iterator requirements]: https://en.cppreference.com/w/cpp/named_req/InputIterator
/// [`std::string`]: https://en.cppreference.com/w/cpp/string/basic_string
/// [`future`]: @ref google::cloud::future
/// [`StatusOr`]: @ref google::cloud::StatusOr
/// [`Status`]: @ref google::cloud::Status
/// [google.cloud.support.v2.Comment]: @googleapis_reference_link{google/cloud/support/v2/comment.proto#L37}
/// [google.cloud.support.v2.CreateCommentRequest]: @googleapis_reference_link{google/cloud/support/v2/comment_service.proto#L96}
///
// clang-format on
StatusOr<google::cloud::support::v2::Comment> CreateComment(
std::string const& parent,
google::cloud::support::v2::Comment const& comment, Options opts = {});
// clang-format off
///
/// Add a new comment to a case.
///
/// The comment must have the following fields set: `body`.
///
/// @param request 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.cloud.support.v2.CreateCommentRequest].
/// Proto messages are converted to C++ classes by Protobuf, using the
/// [Protobuf mapping rules].
/// @param opts Optional. Override the class-level options, such as retry and
/// backoff policies.
/// @return the result of the RPC. The response message type
/// ([google.cloud.support.v2.Comment])
/// is mapped to a C++ class using the [Protobuf mapping rules].
/// If the request fails, the [`StatusOr`] contains the error details.
///
/// [Protobuf mapping rules]: https://protobuf.dev/reference/cpp/cpp-generated/
/// [input iterator requirements]: https://en.cppreference.com/w/cpp/named_req/InputIterator
/// [`std::string`]: https://en.cppreference.com/w/cpp/string/basic_string
/// [`future`]: @ref google::cloud::future
/// [`StatusOr`]: @ref google::cloud::StatusOr
/// [`Status`]: @ref google::cloud::Status
/// [google.cloud.support.v2.Comment]: @googleapis_reference_link{google/cloud/support/v2/comment.proto#L37}
/// [google.cloud.support.v2.CreateCommentRequest]: @googleapis_reference_link{google/cloud/support/v2/comment_service.proto#L96}
///
// clang-format on
StatusOr<google::cloud::support::v2::Comment> CreateComment(
google::cloud::support::v2::CreateCommentRequest const& request,
Options opts = {});
private:
std::shared_ptr<CommentServiceConnection> connection_;
Options options_;
};
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
} // namespace support_v2
} // namespace cloud
} // namespace google
#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SUPPORT_V2_COMMENT_CLIENT_H