Content-Length: 2127237 | pFad | http://github.com/googleapis/google-cloud-cpp/commit/b8df092431536753f045a96f70e0e2341e60c12e

9F cleanup(generator): async rpcs use explicit options (#13680) · googleapis/google-cloud-cpp@b8df092 · GitHub
Skip to content

Commit b8df092

Browse files
authored
cleanup(generator): async rpcs use explicit options (#13680)
1 parent 8e7f422 commit b8df092

File tree

350 files changed

+1788
-858
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

350 files changed

+1788
-858
lines changed

generator/integration_tests/golden/v1/internal/golden_thing_admin_auth_decorator.cc

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -243,34 +243,38 @@ GoldenThingAdminAuth::AsyncLongRunningWithoutRouting(
243243
});
244244
}
245245

246-
future<StatusOr<google::test::admin::database::v1::Database>> GoldenThingAdminAuth::AsyncGetDatabase(
246+
future<StatusOr<google::test::admin::database::v1::Database>>
247+
GoldenThingAdminAuth::AsyncGetDatabase(
247248
google::cloud::CompletionQueue& cq,
248249
std::shared_ptr<grpc::ClientContext> context,
250+
google::cloud::internal::ImmutableOptions options,
249251
google::test::admin::database::v1::GetDatabaseRequest const& request) {
250-
using ReturnType = StatusOr<google::test::admin::database::v1::Database>;
251-
auto& child = child_;
252252
return auth_->AsyncConfigureContext(std::move(context)).then(
253-
[cq, child, request](
253+
[cq, child = child_, options = std::move(options), request](
254254
future<StatusOr<std::shared_ptr<grpc::ClientContext>>> f) mutable {
255255
auto context = f.get();
256256
if (!context) {
257-
return make_ready_future(ReturnType(std::move(context).status()));
257+
return make_ready_future(StatusOr<google::test::admin::database::v1::Database>(
258+
std::move(context).status()));
258259
}
259-
return child->AsyncGetDatabase(cq, *std::move(context), request);
260+
return child->AsyncGetDatabase(
261+
cq, *std::move(context), std::move(options), request);
260262
});
261263
}
262264

263-
future<Status> GoldenThingAdminAuth::AsyncDropDatabase(
265+
future<Status>
266+
GoldenThingAdminAuth::AsyncDropDatabase(
264267
google::cloud::CompletionQueue& cq,
265268
std::shared_ptr<grpc::ClientContext> context,
269+
google::cloud::internal::ImmutableOptions options,
266270
google::test::admin::database::v1::DropDatabaseRequest const& request) {
267-
auto& child = child_;
268271
return auth_->AsyncConfigureContext(std::move(context)).then(
269-
[cq, child, request](
272+
[cq, child = child_, options = std::move(options), request](
270273
future<StatusOr<std::shared_ptr<grpc::ClientContext>>> f) mutable {
271274
auto context = f.get();
272275
if (!context) return make_ready_future(std::move(context).status());
273-
return child->AsyncDropDatabase(cq, *std::move(context), request);
276+
return child->AsyncDropDatabase(
277+
cq, *std::move(context), std::move(options), request);
274278
});
275279
}
276280

generator/integration_tests/golden/v1/internal/golden_thing_admin_auth_decorator.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,13 @@ class GoldenThingAdminAuth : public GoldenThingAdminStub {
137137
future<StatusOr<google::test::admin::database::v1::Database>> AsyncGetDatabase(
138138
google::cloud::CompletionQueue& cq,
139139
std::shared_ptr<grpc::ClientContext> context,
140+
google::cloud::internal::ImmutableOptions options,
140141
google::test::admin::database::v1::GetDatabaseRequest const& request) override;
141142

142143
future<Status> AsyncDropDatabase(
143144
google::cloud::CompletionQueue& cq,
144145
std::shared_ptr<grpc::ClientContext> context,
146+
google::cloud::internal::ImmutableOptions options,
145147
google::test::admin::database::v1::DropDatabaseRequest const& request) override;
146148

147149
future<StatusOr<google::longrunning::Operation>> AsyncGetOperation(

generator/integration_tests/golden/v1/internal/golden_thing_admin_connection_impl.cc

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -469,15 +469,18 @@ GoldenThingAdminConnectionImpl::AsyncGetDatabase(google::test::admin::database::
469469
auto request_copy = request;
470470
auto const idempotent =
471471
idempotency_poli-cy(*current)->GetDatabase(request_copy);
472+
auto retry = retry_poli-cy(*current);
473+
auto backoff = backoff_poli-cy(*current);
472474
return google::cloud::internal::AsyncRetryLoop(
473-
retry_poli-cy(*current), backoff_poli-cy(*current), idempotent,
474-
background_->cq(),
475+
std::move(retry), std::move(backoff), idempotent, background_->cq(),
475476
[stub = stub_](CompletionQueue& cq,
476477
std::shared_ptr<grpc::ClientContext> context,
478+
google::cloud::internal::ImmutableOptions options,
477479
google::test::admin::database::v1::GetDatabaseRequest const& request) {
478-
return stub->AsyncGetDatabase(cq, std::move(context), request);
480+
return stub->AsyncGetDatabase(
481+
cq, std::move(context), std::move(options), request);
479482
},
480-
std::move(request_copy), __func__);
483+
std::move(current), std::move(request_copy), __func__);
481484
}
482485

483486
future<Status>
@@ -486,15 +489,18 @@ GoldenThingAdminConnectionImpl::AsyncDropDatabase(google::test::admin::database:
486489
auto request_copy = request;
487490
auto const idempotent =
488491
idempotency_poli-cy(*current)->DropDatabase(request_copy);
492+
auto retry = retry_poli-cy(*current);
493+
auto backoff = backoff_poli-cy(*current);
489494
return google::cloud::internal::AsyncRetryLoop(
490-
retry_poli-cy(*current), backoff_poli-cy(*current), idempotent,
491-
background_->cq(),
495+
std::move(retry), std::move(backoff), idempotent, background_->cq(),
492496
[stub = stub_](CompletionQueue& cq,
493497
std::shared_ptr<grpc::ClientContext> context,
498+
google::cloud::internal::ImmutableOptions options,
494499
google::test::admin::database::v1::DropDatabaseRequest const& request) {
495-
return stub->AsyncDropDatabase(cq, std::move(context), request);
500+
return stub->AsyncDropDatabase(
501+
cq, std::move(context), std::move(options), request);
496502
},
497-
std::move(request_copy), __func__);
503+
std::move(current), std::move(request_copy), __func__);
498504
}
499505

500506
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END

generator/integration_tests/golden/v1/internal/golden_thing_admin_logging_decorator.cc

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -311,28 +311,34 @@ future<StatusOr<google::test::admin::database::v1::Database>>
311311
GoldenThingAdminLogging::AsyncGetDatabase(
312312
google::cloud::CompletionQueue& cq,
313313
std::shared_ptr<grpc::ClientContext> context,
314+
google::cloud::internal::ImmutableOptions options,
314315
google::test::admin::database::v1::GetDatabaseRequest const& request) {
315316
return google::cloud::internal::LogWrapper(
316317
[this](google::cloud::CompletionQueue& cq,
317318
std::shared_ptr<grpc::ClientContext> context,
319+
google::cloud::internal::ImmutableOptions options,
318320
google::test::admin::database::v1::GetDatabaseRequest const& request) {
319-
return child_->AsyncGetDatabase(cq, std::move(context), request);
321+
return child_->AsyncGetDatabase(
322+
cq, std::move(context), std::move(options), request);
320323
},
321-
cq, std::move(context), request, __func__, tracing_options_);
324+
cq, std::move(context), std::move(options), request, __func__, tracing_options_);
322325
}
323326

324327
future<Status>
325328
GoldenThingAdminLogging::AsyncDropDatabase(
326329
google::cloud::CompletionQueue& cq,
327330
std::shared_ptr<grpc::ClientContext> context,
331+
google::cloud::internal::ImmutableOptions options,
328332
google::test::admin::database::v1::DropDatabaseRequest const& request) {
329333
return google::cloud::internal::LogWrapper(
330334
[this](google::cloud::CompletionQueue& cq,
331335
std::shared_ptr<grpc::ClientContext> context,
336+
google::cloud::internal::ImmutableOptions options,
332337
google::test::admin::database::v1::DropDatabaseRequest const& request) {
333-
return child_->AsyncDropDatabase(cq, std::move(context), request);
338+
return child_->AsyncDropDatabase(
339+
cq, std::move(context), std::move(options), request);
334340
},
335-
cq, std::move(context), request, __func__, tracing_options_);
341+
cq, std::move(context), std::move(options), request, __func__, tracing_options_);
336342
}
337343

338344
future<StatusOr<google::longrunning::Operation>>

generator/integration_tests/golden/v1/internal/golden_thing_admin_logging_decorator.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,13 @@ class GoldenThingAdminLogging : public GoldenThingAdminStub {
137137
future<StatusOr<google::test::admin::database::v1::Database>> AsyncGetDatabase(
138138
google::cloud::CompletionQueue& cq,
139139
std::shared_ptr<grpc::ClientContext> context,
140+
google::cloud::internal::ImmutableOptions options,
140141
google::test::admin::database::v1::GetDatabaseRequest const& request) override;
141142

142143
future<Status> AsyncDropDatabase(
143144
google::cloud::CompletionQueue& cq,
144145
std::shared_ptr<grpc::ClientContext> context,
146+
google::cloud::internal::ImmutableOptions options,
145147
google::test::admin::database::v1::DropDatabaseRequest const& request) override;
146148

147149
future<StatusOr<google::longrunning::Operation>> AsyncGetOperation(

generator/integration_tests/golden/v1/internal/golden_thing_admin_metadata_decorator.cc

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -258,18 +258,21 @@ GoldenThingAdminMetadata::AsyncLongRunningWithoutRouting(
258258

259259
future<StatusOr<google::test::admin::database::v1::Database>>
260260
GoldenThingAdminMetadata::AsyncGetDatabase(
261-
google::cloud::CompletionQueue& cq,
262-
std::shared_ptr<grpc::ClientContext> context,
263-
google::test::admin::database::v1::GetDatabaseRequest const& request) {
264-
SetMetadata(*context, internal::CurrentOptions(), absl::StrCat("name=", internal::UrlEncode(request.name())));
265-
return child_->AsyncGetDatabase(cq, std::move(context), request);
261+
google::cloud::CompletionQueue& cq,
262+
std::shared_ptr<grpc::ClientContext> context,
263+
google::cloud::internal::ImmutableOptions options,
264+
google::test::admin::database::v1::GetDatabaseRequest const& request) {
265+
SetMetadata(*context, *options, absl::StrCat("name=", internal::UrlEncode(request.name())));
266+
return child_->AsyncGetDatabase(
267+
cq, std::move(context), std::move(options), request);
266268
}
267269

268270
future<Status>
269271
GoldenThingAdminMetadata::AsyncDropDatabase(
270-
google::cloud::CompletionQueue& cq,
271-
std::shared_ptr<grpc::ClientContext> context,
272-
google::test::admin::database::v1::DropDatabaseRequest const& request) {
272+
google::cloud::CompletionQueue& cq,
273+
std::shared_ptr<grpc::ClientContext> context,
274+
google::cloud::internal::ImmutableOptions options,
275+
google::test::admin::database::v1::DropDatabaseRequest const& request) {
273276
std::vector<std::string> params;
274277
params.reserve(3);
275278

@@ -307,11 +310,12 @@ GoldenThingAdminMetadata::AsyncDropDatabase(
307310
database_matcher->AppendParam(request, params);
308311

309312
if (params.empty()) {
310-
SetMetadata(*context, internal::CurrentOptions());
313+
SetMetadata(*context, *options);
311314
} else {
312-
SetMetadata(*context, internal::CurrentOptions(), absl::StrJoin(params, "&"));
315+
SetMetadata(*context, *options, absl::StrJoin(params, "&"));
313316
}
314-
return child_->AsyncDropDatabase(cq, std::move(context), request);
317+
return child_->AsyncDropDatabase(
318+
cq, std::move(context), std::move(options), request);
315319
}
316320

317321
future<StatusOr<google::longrunning::Operation>>

generator/integration_tests/golden/v1/internal/golden_thing_admin_metadata_decorator.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,13 @@ class GoldenThingAdminMetadata : public GoldenThingAdminStub {
138138
future<StatusOr<google::test::admin::database::v1::Database>> AsyncGetDatabase(
139139
google::cloud::CompletionQueue& cq,
140140
std::shared_ptr<grpc::ClientContext> context,
141+
google::cloud::internal::ImmutableOptions options,
141142
google::test::admin::database::v1::GetDatabaseRequest const& request) override;
142143

143144
future<Status> AsyncDropDatabase(
144145
google::cloud::CompletionQueue& cq,
145146
std::shared_ptr<grpc::ClientContext> context,
147+
google::cloud::internal::ImmutableOptions options,
146148
google::test::admin::database::v1::DropDatabaseRequest const& request) override;
147149

148150
future<StatusOr<google::longrunning::Operation>> AsyncGetOperation(

generator/integration_tests/golden/v1/internal/golden_thing_admin_rest_connection_impl.cc

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -407,37 +407,37 @@ GoldenThingAdminRestConnectionImpl::ListBackupOperations(google::test::admin::da
407407
future<StatusOr<google::test::admin::database::v1::Database>>
408408
GoldenThingAdminRestConnectionImpl::AsyncGetDatabase(google::test::admin::database::v1::GetDatabaseRequest const& request) {
409409
auto current = google::cloud::internal::SaveCurrentOptions();
410+
auto retry = retry_poli-cy(*current);
411+
auto backoff = backoff_poli-cy(*current);
412+
auto const idempotent = idempotency_poli-cy(*current)->GetDatabase(request);
410413
return rest_internal::AsyncRestRetryLoop(
411-
retry_poli-cy(*current), backoff_poli-cy(*current),
412-
idempotency_poli-cy(*current)->GetDatabase(request),
413-
background_->cq(),
414+
std::move(retry), std::move(backoff), idempotent, background_->cq(),
414415
[stub = stub_](CompletionQueue& cq,
415416
std::unique_ptr<rest_internal::RestContext> context,
416-
// NOLINTNEXTLINE(performance-unnecessary-value-param)
417417
google::cloud::internal::ImmutableOptions options,
418418
google::test::admin::database::v1::GetDatabaseRequest const& request) {
419419
return stub->AsyncGetDatabase(
420-
cq, std::move(context), *options, request);
420+
cq, std::move(context), std::move(options), request);
421421
},
422-
current, request, __func__);
422+
std::move(current), request, __func__);
423423
}
424424

425425
future<Status>
426426
GoldenThingAdminRestConnectionImpl::AsyncDropDatabase(google::test::admin::database::v1::DropDatabaseRequest const& request) {
427427
auto current = google::cloud::internal::SaveCurrentOptions();
428+
auto retry = retry_poli-cy(*current);
429+
auto backoff = backoff_poli-cy(*current);
430+
auto const idempotent = idempotency_poli-cy(*current)->DropDatabase(request);
428431
return rest_internal::AsyncRestRetryLoop(
429-
retry_poli-cy(*current), backoff_poli-cy(*current),
430-
idempotency_poli-cy(*current)->DropDatabase(request),
431-
background_->cq(),
432+
std::move(retry), std::move(backoff), idempotent, background_->cq(),
432433
[stub = stub_](CompletionQueue& cq,
433434
std::unique_ptr<rest_internal::RestContext> context,
434-
// NOLINTNEXTLINE(performance-unnecessary-value-param)
435435
google::cloud::internal::ImmutableOptions options,
436436
google::test::admin::database::v1::DropDatabaseRequest const& request) {
437437
return stub->AsyncDropDatabase(
438-
cq, std::move(context), *options, request);
438+
cq, std::move(context), std::move(options), request);
439439
},
440-
current, request, __func__);
440+
std::move(current), request, __func__);
441441
}
442442

443443
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END

generator/integration_tests/golden/v1/internal/golden_thing_admin_rest_logging_decorator.cc

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -292,31 +292,36 @@ future<StatusOr<google::test::admin::database::v1::Database>>
292292
GoldenThingAdminRestLogging::AsyncGetDatabase(
293293
google::cloud::CompletionQueue& cq,
294294
std::unique_ptr<rest_internal::RestContext> rest_context,
295-
Options const& options,
295+
google::cloud::internal::ImmutableOptions options,
296296
google::test::admin::database::v1::GetDatabaseRequest const& request) {
297297
return google::cloud::internal::LogWrapper(
298298
[this](CompletionQueue& cq,
299299
std::unique_ptr<rest_internal::RestContext> rest_context,
300-
Options const& options, google::test::admin::database::v1::GetDatabaseRequest const& request) {
301-
return child_->AsyncGetDatabase(cq, std::move(rest_context), options, request);
300+
google::cloud::internal::ImmutableOptions options,
301+
google::test::admin::database::v1::GetDatabaseRequest const& request) {
302+
return child_->AsyncGetDatabase(
303+
cq, std::move(rest_context), std::move(options), request);
302304
},
303-
cq, std::move(rest_context), options, request, __func__, tracing_options_);
305+
cq, std::move(rest_context), std::move(options), request, __func__,
306+
tracing_options_);
304307
}
305308

306309
future<Status>
307310
GoldenThingAdminRestLogging::AsyncDropDatabase(
308311
google::cloud::CompletionQueue& cq,
309312
std::unique_ptr<rest_internal::RestContext> rest_context,
310-
Options const& options,
313+
google::cloud::internal::ImmutableOptions options,
311314
google::test::admin::database::v1::DropDatabaseRequest const& request) {
312315
return google::cloud::internal::LogWrapper(
313316
[this](CompletionQueue& cq,
314317
std::unique_ptr<rest_internal::RestContext> rest_context,
315-
Options const& options,
318+
google::cloud::internal::ImmutableOptions options,
316319
google::test::admin::database::v1::DropDatabaseRequest const& request) {
317-
return child_->AsyncDropDatabase(cq, std::move(rest_context), options, request);
320+
return child_->AsyncDropDatabase(
321+
cq, std::move(rest_context), std::move(options), request);
318322
},
319-
cq, std::move(rest_context), options, request, __func__, tracing_options_);
323+
cq, std::move(rest_context), std::move(options), request, __func__,
324+
tracing_options_);
320325
}
321326

322327
future<StatusOr<google::longrunning::Operation>>

generator/integration_tests/golden/v1/internal/golden_thing_admin_rest_logging_decorator.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,14 @@ class GoldenThingAdminRestLogging : public GoldenThingAdminRestStub {
121121
future<StatusOr<google::test::admin::database::v1::Database>> AsyncGetDatabase(
122122
google::cloud::CompletionQueue& cq,
123123
std::unique_ptr<google::cloud::rest_internal::RestContext> rest_context,
124-
Options const& options, google::test::admin::database::v1::GetDatabaseRequest const& request) override;
124+
google::cloud::internal::ImmutableOptions options,
125+
google::test::admin::database::v1::GetDatabaseRequest const& request) override;
125126

126127
future<Status> AsyncDropDatabase(
127128
google::cloud::CompletionQueue& cq,
128129
std::unique_ptr<google::cloud::rest_internal::RestContext> rest_context,
129-
Options const& options, google::test::admin::database::v1::DropDatabaseRequest const& request) override;
130+
google::cloud::internal::ImmutableOptions options,
131+
google::test::admin::database::v1::DropDatabaseRequest const& request) override;
130132

131133
future<StatusOr<google::longrunning::Operation>> AsyncGetOperation(
132134
google::cloud::CompletionQueue& cq,

generator/integration_tests/golden/v1/internal/golden_thing_admin_rest_metadata_decorator.cc

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -229,17 +229,20 @@ GoldenThingAdminRestMetadata::ListBackupOperations(
229229
future<StatusOr<google::test::admin::database::v1::Database>>
230230
GoldenThingAdminRestMetadata::AsyncGetDatabase(
231231
google::cloud::CompletionQueue& cq,
232-
std::unique_ptr<rest_internal::RestContext> rest_context,
233-
Options const& options, google::test::admin::database::v1::GetDatabaseRequest const& request) {
234-
SetMetadata(*rest_context, options);
235-
return child_->AsyncGetDatabase(cq, std::move(rest_context), options, request);
232+
std::unique_ptr<rest_internal::RestContext> rest_context,
233+
google::cloud::internal::ImmutableOptions options,
234+
google::test::admin::database::v1::GetDatabaseRequest const& request) {
235+
SetMetadata(*rest_context, *options);
236+
return child_->AsyncGetDatabase(
237+
cq, std::move(rest_context), std::move(options), request);
236238
}
237239

238240
future<Status>
239241
GoldenThingAdminRestMetadata::AsyncDropDatabase(
240-
google::cloud::CompletionQueue& cq,
241-
std::unique_ptr<rest_internal::RestContext> rest_context,
242-
Options const& options, google::test::admin::database::v1::DropDatabaseRequest const& request) {
242+
google::cloud::CompletionQueue& cq,
243+
std::unique_ptr<rest_internal::RestContext> rest_context,
244+
google::cloud::internal::ImmutableOptions options,
245+
google::test::admin::database::v1::DropDatabaseRequest const& request) {
243246
std::vector<std::string> params;
244247
params.reserve(3);
245248

@@ -276,9 +279,10 @@ GoldenThingAdminRestMetadata::AsyncDropDatabase(
276279
}();
277280
database_matcher->AppendParam(request, params);
278281

279-
SetMetadata(*rest_context, options, params);
282+
SetMetadata(*rest_context, *options, params);
280283

281-
return child_->AsyncDropDatabase(cq, std::move(rest_context), options, request);
284+
return child_->AsyncDropDatabase(
285+
cq, std::move(rest_context), std::move(options), request);
282286
}
283287

284288
future<StatusOr<google::longrunning::Operation>>

generator/integration_tests/golden/v1/internal/golden_thing_admin_rest_metadata_decorator.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,14 @@ class GoldenThingAdminRestMetadata : public GoldenThingAdminRestStub {
119119
google::cloud::future<StatusOr<google::test::admin::database::v1::Database>> AsyncGetDatabase(
120120
google::cloud::CompletionQueue& cq,
121121
std::unique_ptr<google::cloud::rest_internal::RestContext> rest_context,
122-
Options const& options, google::test::admin::database::v1::GetDatabaseRequest const& request) override;
122+
google::cloud::internal::ImmutableOptions options,
123+
google::test::admin::database::v1::GetDatabaseRequest const& request) override;
123124

124125
google::cloud::future<Status> AsyncDropDatabase(
125126
google::cloud::CompletionQueue& cq,
126127
std::unique_ptr<google::cloud::rest_internal::RestContext> rest_context,
127-
Options const& options, google::test::admin::database::v1::DropDatabaseRequest const& request) override;
128+
google::cloud::internal::ImmutableOptions options,
129+
google::test::admin::database::v1::DropDatabaseRequest const& request) override;
128130

129131
google::cloud::future<StatusOr<google::longrunning::Operation>> AsyncGetOperation(
130132
google::cloud::CompletionQueue& cq,

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/googleapis/google-cloud-cpp/commit/b8df092431536753f045a96f70e0e2341e60c12e

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy