@@ -22,11 +22,24 @@ class TSelfCheckResult::TImpl {
2222 Ydb::Monitoring::SelfCheckResult Result;
2323};
2424
25+ class TClusterStateResult ::TImpl {
26+ public:
27+ TImpl (Ydb::Monitoring::ClusterStateResult&& result)
28+ : Result(std::move(result))
29+ {}
30+ Ydb::Monitoring::ClusterStateResult Result;
31+ };
32+
2533TSelfCheckResult::TSelfCheckResult (TStatus&& status, Ydb::Monitoring::SelfCheckResult&& result)
2634 : TStatus(std::move(status))
2735 , Impl_(std::make_shared<TSelfCheckResult::TImpl>(std::move(result)))
2836{}
2937
38+ TClusterStateResult::TClusterStateResult (TStatus&& status, Ydb::Monitoring::ClusterStateResult&& result)
39+ : TStatus(std::move(status))
40+ , Impl_(std::make_shared<TClusterStateResult::TImpl>(std::move(result)))
41+ {}
42+
3043class TMonitoringClient ::TImpl : public TClientImplCommon<TMonitoringClient::TImpl> {
3144public:
3245 TImpl (std::shared_ptr<TGRpcConnectionsImpl>&& connections, const TCommonClientSettings& settings)
@@ -87,6 +100,45 @@ class TMonitoringClient::TImpl : public TClientImplCommon<TMonitoringClient::TIm
87100
88101 return promise.GetFuture ();
89102 }
103+
104+ TAsyncClusterStateResult ClusterState (const TClusterStateSettings& settings) {
105+ auto request = MakeOperationRequest<Ydb::Monitoring::ClusterStateRequest>(settings);
106+
107+ if (settings.DurationSeconds_ ) {
108+ request.set_duration_seconds (settings.DurationSeconds_ .value ());
109+ }
110+
111+ if (settings.PeriodSeconds_ ) {
112+ request.set_period_seconds (settings.PeriodSeconds_ .value ());
113+ }
114+ auto promise = NThreading::NewPromise<TClusterStateResult>();
115+
116+ auto extractor = [promise]
117+ (google::protobuf::Any* any, TPlainStatus status) mutable {
118+ Ydb::Monitoring::ClusterStateResult result;
119+ if (any) {
120+ any->UnpackTo (&result);
121+ }
122+ TClusterStateResult val (
123+ TStatus (std::move (status)),
124+ std::move (result));
125+
126+ promise.SetValue (std::move (val));
127+ };
128+
129+ using Ydb::Monitoring::ClusterStateRequest;
130+ using Ydb::Monitoring::ClusterStateResponse;
131+
132+ Connections_->RunDeferred <Ydb::Monitoring::V1::MonitoringService, ClusterStateRequest, ClusterStateResponse>(
133+ std::move (request),
134+ extractor,
135+ &Ydb::Monitoring::V1::MonitoringService::Stub::AsyncClusterState,
136+ DbDriverState_,
137+ INITIAL_DEFERRED_CALL_DELAY,
138+ TRpcRequestSettings::Make (settings));
139+
140+ return promise.GetFuture ();
141+ }
90142};
91143
92144TMonitoringClient::TMonitoringClient (const TDriver& driver, const TCommonClientSettings& settings)
@@ -97,10 +149,17 @@ TAsyncSelfCheckResult TMonitoringClient::SelfCheck(const TSelfCheckSettings& set
97149 return Impl_->SelfCheck (settings);
98150}
99151
152+ TAsyncClusterStateResult TMonitoringClient::ClusterState (const TClusterStateSettings& settings) {
153+ return Impl_->ClusterState (settings);
154+ }
155+
100156}
101157
102158const Ydb::Monitoring::SelfCheckResult& TProtoAccessor::GetProto (const NYdb::NMonitoring::TSelfCheckResult& selfCheckResult) {
103159 return selfCheckResult.Impl_ ->Result ;
104160}
105161
162+ const Ydb::Monitoring::ClusterStateResult& TProtoAccessor::GetProto (const NYdb::NMonitoring::TClusterStateResult& clusterStateResult) {
163+ return clusterStateResult.Impl_ ->Result ;
164+ }
106165}
0 commit comments