Skip to content

Commit 8f3194a

Browse files
Align VersionedLayerClient with VolatileLayerClient
Remove olp namespace for parameters. Align GetData implementation. Align the order of parameters in DataRepository. Relates-To: OLPEDGE-957 Signed-off-by: Mykhailo Kuchma <[email protected]>
1 parent da093f7 commit 8f3194a

File tree

9 files changed

+107
-106
lines changed

9 files changed

+107
-106
lines changed

olp-cpp-sdk-dataservice-read/include/olp/dataservice/read/VersionedLayerClient.h

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,14 @@ class DATASERVICE_READ_API VersionedLayerClient final {
6868

6969
/**
7070
* @brief VersionedLayerClient constructor
71-
* @param catalog this versioned layer client uses during requests.
72-
* @param layer_id this versioned layer client uses during requests.
73-
* @param settings the settings used to control behaviour of the client
74-
* instance.
71+
* @param catalog a catalog that the versioned layer client uses during
72+
* requests.
73+
* @param layer_id a layer id that the versioned layer client uses during
74+
* requests.
75+
* @param settings settings used to control the client instance behavior.
7576
*/
76-
VersionedLayerClient(olp::client::HRN catalog, std::string layer_id,
77-
olp::client::OlpClientSettings client_settings);
77+
VersionedLayerClient(client::HRN catalog, std::string layer_id,
78+
client::OlpClientSettings settings);
7879

7980
~VersionedLayerClient();
8081

@@ -91,8 +92,8 @@ class DATASERVICE_READ_API VersionedLayerClient final {
9192
* error is encountered.
9293
* @return A token that can be used to cancel this request.
9394
*/
94-
olp::client::CancellationToken GetData(DataRequest data_request,
95-
Callback callback);
95+
client::CancellationToken GetData(DataRequest data_request,
96+
Callback callback);
9697

9798
/**
9899
* @brief fetches a list partitions for given generic layer asynchronously.
@@ -123,7 +124,7 @@ class DATASERVICE_READ_API VersionedLayerClient final {
123124
* available, or an error is encountered.
124125
* @return A token that can be used to cancel this request.
125126
*/
126-
olp::client::CancellationToken PrefetchTiles(
127+
client::CancellationToken PrefetchTiles(
127128
PrefetchTilesRequest request, PrefetchTilesResponseCallback callback);
128129

129130
private:

olp-cpp-sdk-dataservice-read/include/olp/dataservice/read/VolatileLayerClient.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ class DATASERVICE_READ_API VolatileLayerClient final {
8787
* requests.
8888
* @param layer_id a layer id that the volatile layer client uses during
8989
* requests.
90-
* @param client_settings settings used to control the client instance
91-
* behavior.
90+
* @param settings settings used to control the client instance behavior.
9291
*/
9392
VolatileLayerClient(client::HRN catalog, std::string layer_id,
9493
client::OlpClientSettings settings);

olp-cpp-sdk-dataservice-read/src/VersionedLayerClient.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,15 @@ namespace olp {
2626
namespace dataservice {
2727
namespace read {
2828

29-
VersionedLayerClient::VersionedLayerClient(
30-
olp::client::HRN catalog, std::string layer_id,
31-
olp::client::OlpClientSettings client_settings)
29+
VersionedLayerClient::VersionedLayerClient(client::HRN catalog,
30+
std::string layer_id,
31+
client::OlpClientSettings settings)
3232
: impl_(std::make_unique<VersionedLayerClientImpl>(
33-
std::move(catalog), std::move(layer_id),
34-
std::move(client_settings))) {}
33+
std::move(catalog), std::move(layer_id), std::move(settings))) {}
3534

3635
VersionedLayerClient::~VersionedLayerClient() = default;
3736

38-
olp::client::CancellationToken VersionedLayerClient::GetData(
37+
client::CancellationToken VersionedLayerClient::GetData(
3938
DataRequest data_request, Callback callback) {
4039
return impl_->GetData(std::move(data_request), std::move(callback));
4140
}
@@ -46,7 +45,7 @@ client::CancellationToken VersionedLayerClient::GetPartitions(
4645
std::move(callback));
4746
}
4847

49-
olp::client::CancellationToken VersionedLayerClient::PrefetchTiles(
48+
client::CancellationToken VersionedLayerClient::PrefetchTiles(
5049
PrefetchTilesRequest request, PrefetchTilesResponseCallback callback) {
5150
return impl_->PrefetchTiles(std::move(request), std::move(callback));
5251
}

olp-cpp-sdk-dataservice-read/src/VersionedLayerClientImpl.cpp

Lines changed: 40 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,15 @@ namespace dataservice {
3737
namespace read {
3838

3939
VersionedLayerClientImpl::VersionedLayerClientImpl(
40-
olp::client::HRN catalog, std::string layer_id,
41-
olp::client::OlpClientSettings client_settings)
40+
client::HRN catalog, std::string layer_id,
41+
client::OlpClientSettings settings)
4242
: catalog_(std::move(catalog)),
4343
layer_id_(std::move(layer_id)),
44-
settings_(std::make_shared<olp::client::OlpClientSettings>(
45-
std::move(client_settings))),
44+
settings_(
45+
std::make_shared<client::OlpClientSettings>(std::move(settings))),
4646
pending_requests_(std::make_shared<PendingRequests>()) {
4747
if (!settings_->cache) {
48-
settings_->cache =
49-
olp::client::OlpClientSettingsFactory::CreateDefaultCache({});
48+
settings_->cache = client::OlpClientSettingsFactory::CreateDefaultCache({});
5049
}
5150
// to avoid capturing task scheduler inside a task, we need a copy of settings
5251
// without the scheduler
@@ -79,7 +78,7 @@ VersionedLayerClientImpl::~VersionedLayerClientImpl() {
7978
client::CancellationToken VersionedLayerClientImpl::GetPartitions(
8079
PartitionsRequest partitions_request, PartitionsCallback callback) const {
8180
partitions_request.WithLayerId(layer_id_);
82-
olp::client::CancellationToken token;
81+
client::CancellationToken token;
8382
int64_t request_key = pending_requests_->GenerateRequestPlaceholder();
8483
auto pending_requests = pending_requests_;
8584
auto request_callback = [pending_requests, request_key,
@@ -107,48 +106,48 @@ client::CancellationToken VersionedLayerClientImpl::GetPartitions(
107106
return token;
108107
}
109108

110-
olp::client::CancellationToken VersionedLayerClientImpl::GetData(
111-
DataRequest data_request, Callback callback) const {
112-
auto fetch_option = data_request.GetFetchOption();
113-
if (fetch_option == CacheWithUpdate) {
114-
auto cache_token = AddGetDataTask(data_request.WithFetchOption(CacheOnly),
115-
std::move(callback));
116-
auto online_token =
117-
AddGetDataTask(data_request.WithFetchOption(OnlineIfNotFound), nullptr);
118-
return client::CancellationToken([cache_token, online_token]() {
119-
cache_token.cancel();
120-
online_token.cancel();
121-
});
122-
} else {
123-
return AddGetDataTask(data_request, std::move(callback));
124-
}
125-
}
126-
127-
client::CancellationToken VersionedLayerClientImpl::AddGetDataTask(
109+
client::CancellationToken VersionedLayerClientImpl::GetData(
128110
DataRequest request, Callback callback) const {
129-
auto catalog = catalog_;
130-
auto layer_id = layer_id_;
131-
auto settings = *settings_;
132-
auto pending_requests = pending_requests_;
111+
auto add_task = [&](DataRequest& request, Callback callback) {
112+
auto catalog = catalog_;
113+
auto layer_id = layer_id_;
114+
auto settings = *settings_;
115+
auto pending_requests = pending_requests_;
133116

134-
auto data_task = [=](client::CancellationContext context) {
135-
return repository::DataRepository::GetVersionedData(
136-
catalog, layer_id, settings, request, context);
137-
};
117+
auto data_task = [=](client::CancellationContext context) {
118+
return repository::DataRepository::GetVersionedData(
119+
catalog, layer_id, request, context, settings);
120+
};
138121

139-
auto context = TaskContext::Create(std::move(data_task), std::move(callback));
122+
auto context =
123+
TaskContext::Create(std::move(data_task), std::move(callback));
140124

141-
pending_requests->Insert(context);
125+
pending_requests->Insert(context);
142126

143-
repository::ExecuteOrSchedule(task_scheduler_, [=]() {
144-
context.Execute();
145-
pending_requests->Remove(context);
146-
});
127+
repository::ExecuteOrSchedule(task_scheduler_, [=]() {
128+
context.Execute();
129+
pending_requests->Remove(context);
130+
});
131+
132+
return context.CancelToken();
133+
};
134+
135+
if (request.GetFetchOption() == FetchOptions::CacheWithUpdate) {
136+
auto cache_token = add_task(
137+
request.WithFetchOption(FetchOptions::CacheOnly), std::move(callback));
138+
auto online_token =
139+
add_task(request.WithFetchOption(FetchOptions::OnlineOnly), nullptr);
147140

148-
return context.CancelToken();
141+
return client::CancellationToken([=]() {
142+
cache_token.cancel();
143+
online_token.cancel();
144+
});
145+
} else {
146+
return add_task(request, std::move(callback));
147+
}
149148
}
150149

151-
olp::client::CancellationToken VersionedLayerClientImpl::PrefetchTiles(
150+
client::CancellationToken VersionedLayerClientImpl::PrefetchTiles(
152151
PrefetchTilesRequest request, PrefetchTilesResponseCallback callback) {
153152
const int64_t request_key = pending_requests_->GenerateRequestPlaceholder();
154153
auto pending_requests = pending_requests_;

olp-cpp-sdk-dataservice-read/src/VersionedLayerClientImpl.h

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,28 +70,24 @@ class VersionedLayerClientImpl {
7070
using PrefetchTilesResponseCallback =
7171
std::function<void(const PrefetchTilesResponse& response)>;
7272

73-
VersionedLayerClientImpl(olp::client::HRN catalog, std::string layer_id,
74-
olp::client::OlpClientSettings client_settings);
73+
VersionedLayerClientImpl(client::HRN catalog, std::string layer_id,
74+
client::OlpClientSettings settings);
7575

7676
virtual ~VersionedLayerClientImpl();
7777

78-
virtual olp::client::CancellationToken GetData(DataRequest data_request,
79-
Callback callback) const;
78+
virtual client::CancellationToken GetData(DataRequest data_request,
79+
Callback callback) const;
8080

8181
virtual client::CancellationToken GetPartitions(
8282
PartitionsRequest partitions_request, PartitionsCallback callback) const;
8383

84-
virtual olp::client::CancellationToken PrefetchTiles(
84+
virtual client::CancellationToken PrefetchTiles(
8585
PrefetchTilesRequest request, PrefetchTilesResponseCallback callback);
8686

87-
private:
88-
olp::client::CancellationToken AddGetDataTask(DataRequest data_request,
89-
Callback callback) const;
90-
9187
protected:
92-
olp::client::HRN catalog_;
88+
client::HRN catalog_;
9389
std::string layer_id_;
94-
std::shared_ptr<olp::client::OlpClientSettings> settings_;
90+
std::shared_ptr<client::OlpClientSettings> settings_;
9591
std::shared_ptr<thread::TaskScheduler> task_scheduler_;
9692
std::shared_ptr<PendingRequests> pending_requests_;
9793
std::shared_ptr<repository::PartitionsRepository> partition_repo_;

olp-cpp-sdk-dataservice-read/src/VolatileLayerClient.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,15 @@ namespace olp {
2626
namespace dataservice {
2727
namespace read {
2828

29-
VolatileLayerClient::VolatileLayerClient(
30-
olp::client::HRN catalog, std::string layer_id,
31-
olp::client::OlpClientSettings settings)
29+
VolatileLayerClient::VolatileLayerClient(client::HRN catalog,
30+
std::string layer_id,
31+
client::OlpClientSettings settings)
3232
: impl_(std::make_unique<VolatileLayerClientImpl>(
33-
std::move(catalog), std::move(layer_id),
34-
std::move(settings))) {}
33+
std::move(catalog), std::move(layer_id), std::move(settings))) {}
3534

3635
VolatileLayerClient::~VolatileLayerClient() = default;
3736

38-
olp::client::CancellationToken VolatileLayerClient::GetData(
37+
client::CancellationToken VolatileLayerClient::GetData(
3938
DataRequest request, Callback<DataResponse> callback) {
4039
return impl_->GetData(std::move(request), std::move(callback));
4140
}

olp-cpp-sdk-dataservice-read/src/VolatileLayerClientImpl.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ client::CancellationToken VolatileLayerClientImpl::GetData(
9292
cache_token.cancel();
9393
online_token.cancel();
9494
});
95+
} else {
96+
return add_task(request, std::move(callback));
9597
}
96-
97-
return add_task(request, std::move(callback));
9898
}
9999

100100
} // namespace read

olp-cpp-sdk-dataservice-read/src/repositories/DataRepository.cpp

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ using namespace olp::client;
4343
namespace {
4444
constexpr auto kDataInlinePrefix = "data:";
4545
constexpr auto kLogTag = "DataRepository";
46+
constexpr auto kBlobService = "blob";
4647
constexpr auto kVolatileBlobService = "volatile-blob";
4748

4849
void GetDataInternal(std::shared_ptr<CancellationContext> cancellationContext,
@@ -330,40 +331,47 @@ void DataRepository::GetData(
330331
}
331332

332333
DataRepository::DataResponse DataRepository::GetVersionedData(
333-
HRN catalog, std::string layer_id, OlpClientSettings client_settings,
334-
DataRequest data_request, CancellationContext context) {
335-
if (!data_request.GetDataHandle()) {
336-
if (!data_request.GetVersion()) {
334+
const client::HRN& catalog, const std::string& layer_id,
335+
DataRequest request, client::CancellationContext context,
336+
client::OlpClientSettings settings) {
337+
if (!request.GetDataHandle()) {
338+
if (!request.GetVersion()) {
337339
// get latest version of the layer if it wasn't set by the user
338340
auto latest_version_response =
339-
repository::CatalogRepository::GetLatestVersion(
340-
catalog, context, data_request, client_settings);
341+
repository::CatalogRepository::GetLatestVersion(catalog, context,
342+
request, settings);
341343
if (!latest_version_response.IsSuccessful()) {
342344
return latest_version_response.GetError();
343345
}
344-
data_request.WithVersion(
345-
latest_version_response.GetResult().GetVersion());
346+
request.WithVersion(latest_version_response.GetResult().GetVersion());
346347
}
347348

348349
// get data handle for a partition to be queried
349350
auto partitions_response =
350351
repository::PartitionsRepository::GetPartitionById(
351-
catalog, layer_id, context, data_request, client_settings);
352+
catalog, layer_id, context, request, settings);
353+
352354
if (!partitions_response.IsSuccessful()) {
353355
return partitions_response.GetError();
354356
}
355-
auto partitions = partitions_response.GetResult().GetPartitions();
357+
358+
const auto& partitions = partitions_response.GetResult().GetPartitions();
356359
if (partitions.empty()) {
360+
OLP_SDK_LOG_INFO_F(kLogTag, "Partition %s not found",
361+
request.GetPartitionId()
362+
? request.GetPartitionId().get().c_str()
363+
: "<none>");
364+
357365
return client::ApiError(client::ErrorCode::NotFound,
358366
"Partition not found");
359367
}
360-
data_request.WithDataHandle(partitions.front().GetDataHandle());
368+
369+
request.WithDataHandle(partitions.front().GetDataHandle());
361370
}
362371

363372
// finally get the data using a data handle
364-
auto data_response = repository::DataRepository::GetBlobData(
365-
catalog, layer_id, "blob", data_request, context, client_settings);
366-
return data_response;
373+
return repository::DataRepository::GetBlobData(
374+
catalog, layer_id, kBlobService, request, context, settings);
367375
}
368376

369377
DataRepository::DataResponse DataRepository::GetBlobData(
@@ -476,18 +484,19 @@ DataRepository::DataResponse DataRepository::GetBlobData(
476484
}
477485

478486
DataRepository::DataResponse DataRepository::GetVolatileData(
479-
const client::HRN& catalog, const std::string& layer_id, DataRequest request,
480-
client::CancellationContext context,
487+
const client::HRN& catalog, const std::string& layer_id,
488+
DataRequest request, client::CancellationContext context,
481489
client::OlpClientSettings settings) {
482490
if (!request.GetDataHandle()) {
483-
auto response = repository::PartitionsRepository::GetPartitionById(
484-
catalog, layer_id, context, request, settings);
491+
auto partitions_response =
492+
repository::PartitionsRepository::GetPartitionById(
493+
catalog, layer_id, context, request, settings);
485494

486-
if (!response.IsSuccessful()) {
487-
return response.GetError();
495+
if (!partitions_response.IsSuccessful()) {
496+
return partitions_response.GetError();
488497
}
489498

490-
const auto& partitions = response.GetResult().GetPartitions();
499+
const auto& partitions = partitions_response.GetResult().GetPartitions();
491500
if (partitions.empty()) {
492501
OLP_SDK_LOG_INFO_F(kLogTag, "Partition %s not found",
493502
request.GetPartitionId()
@@ -501,10 +510,8 @@ DataRepository::DataResponse DataRepository::GetVolatileData(
501510
request.WithDataHandle(partitions.front().GetDataHandle());
502511
}
503512

504-
auto blob_response = repository::DataRepository::GetBlobData(
513+
return repository::DataRepository::GetBlobData(
505514
catalog, layer_id, kVolatileBlobService, request, context, settings);
506-
507-
return std::move(blob_response);
508515
}
509516

510517
} // namespace repository

olp-cpp-sdk-dataservice-read/src/repositories/DataRepository.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,11 @@ class DataRepository final {
5454
const std::string& layerType, const read::DataRequest& request,
5555
const read::DataResponseCallback& callback);
5656

57-
static DataResponse GetVersionedData(
58-
olp::client::HRN catalog, std::string layer_id,
59-
olp::client::OlpClientSettings client_settings, DataRequest data_request,
60-
olp::client::CancellationContext context);
57+
static DataResponse GetVersionedData(const client::HRN& catalog,
58+
const std::string& layer_id,
59+
DataRequest data_request,
60+
client::CancellationContext context,
61+
client::OlpClientSettings settings);
6162

6263
static DataResponse GetVolatileData(const client::HRN& catalog,
6364
const std::string& layer_id,

0 commit comments

Comments
 (0)