|
22 | 22 | #include "google/cloud/grpc_utils/grpc_error_delegate.h" |
23 | 23 | #include "google/cloud/internal/make_unique.h" |
24 | 24 | #include <google/spanner/v1/spanner.pb.h> |
| 25 | +#include <limits> |
25 | 26 | #include <memory> |
26 | 27 |
|
27 | 28 | namespace google { |
@@ -675,25 +676,27 @@ StatusOr<SessionHolder> ConnectionImpl::AllocateSession( |
675 | 676 | } |
676 | 677 |
|
677 | 678 | StatusOr<std::vector<std::unique_ptr<Session>>> ConnectionImpl::CreateSessions( |
678 | | - size_t /*num_sessions*/) { |
679 | | - // TODO(#307) use BatchCreateSessions. For now, `num_sessions` is ignored. |
680 | | - spanner_proto::CreateSessionRequest request; |
| 679 | + int num_sessions) { |
| 680 | + spanner_proto::BatchCreateSessionsRequest request; |
681 | 681 | request.set_database(db_.FullName()); |
| 682 | + request.set_session_count(std::int32_t{num_sessions}); |
682 | 683 | auto response = RetryLoop( |
683 | 684 | retry_policy_->clone(), backoff_policy_->clone(), true, |
684 | 685 | [this](grpc::ClientContext& context, |
685 | | - spanner_proto::CreateSessionRequest const& request) { |
686 | | - return stub_->CreateSession(context, request); |
| 686 | + spanner_proto::BatchCreateSessionsRequest const& request) { |
| 687 | + return stub_->BatchCreateSessions(context, request); |
687 | 688 | }, |
688 | 689 | request, __func__); |
689 | 690 | if (!response) { |
690 | 691 | return response.status(); |
691 | 692 | } |
692 | | - std::vector<std::unique_ptr<Session>> ret; |
693 | | - ret.reserve(1); |
694 | | - ret.push_back(google::cloud::internal::make_unique<Session>( |
695 | | - std::move(*response->mutable_name()))); |
696 | | - return {std::move(ret)}; |
| 693 | + std::vector<std::unique_ptr<Session>> sessions; |
| 694 | + sessions.reserve(response->session_size()); |
| 695 | + for (auto& session : *response->mutable_session()) { |
| 696 | + sessions.push_back(google::cloud::internal::make_unique<Session>( |
| 697 | + std::move(*session.mutable_name()))); |
| 698 | + } |
| 699 | + return {std::move(sessions)}; |
697 | 700 | } |
698 | 701 |
|
699 | 702 | } // namespace internal |
|
0 commit comments