Skip to content

Commit 79cd226

Browse files
authored
refactor(absl): Use the abseil in thirdparty instead of the internal copied one (#1694)
For historical reasons, we copied some Abeil-cpp code into Pegasus to use features like string_view, make_unique, apply and etc. The Abeil library has been introduced into Pegasus as a thirdparty in previous patches, so we can use it directly. This patch has the following changes: - Remove the abseil files copied to Pegasus including: - src/utils/absl/base/internal/invoke.h - src/utils/absl/utility/utility.h - src/utils/memutil.h - src/utils/smart_pointers.h - src/utils/string_view.cpp - src/utils/string_view.h - src/utils/test/memutil_test.cpp - src/utils/test/smart_pointers_test.cpp - src/utils/test/string_view_test.cpp - Update license related files(.licenserc.yaml and LICENSE) - Use std::make_unique explicitly. - Add a function to_string_view(), then dsn::blob is possible to transfer to absl::string_view.
1 parent 75744cb commit 79cd226

File tree

114 files changed

+474
-2188
lines changed

Some content is hidden

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

114 files changed

+474
-2188
lines changed

.licenserc.yaml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -103,16 +103,6 @@ header:
103103
- 'src/utils/test/autoref_ptr_test.cpp'
104104
# Copyright (c) 2006-2009 The Chromium Authors
105105
- 'src/utils/safe_strerror_posix.cpp'
106-
# Copyright 2017 The Abseil Authors
107-
- 'src/utils/absl/base/internal/invoke.h'
108-
- 'src/utils/absl/utility/utility.h'
109-
- 'src/utils/memutil.h'
110-
- 'src/utils/smart_pointers.h'
111-
- 'src/utils/string_view.cpp'
112-
- 'src/utils/string_view.h'
113-
- 'src/utils/test/memutil_test.cpp'
114-
- 'src/utils/test/smart_pointers_test.cpp'
115-
- 'src/utils/test/string_view_test.cpp'
116106
# Copyright (c) 2010-2011, Rob Jansen
117107
- 'cmake_modules/FindRT.cmake'
118108
- 'cmake_modules/FindDL.cmake'

LICENSE

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -360,32 +360,6 @@ src/shell/argh.h - BSD-3-Clause License
360360

361361
--------------------------------------------------------------------------------
362362

363-
src/utils/absl/base/internal/invoke.h - Apache 2.0 License
364-
src/utils/absl/utility/utility.h
365-
src/utils/memutil.h
366-
src/utils/smart_pointers.h
367-
src/utils/string_view.cpp
368-
src/utils/string_view.h
369-
src/utils/test/memutil_test.cpp
370-
src/utils/test/smart_pointers_test.cpp
371-
src/utils/test/string_view_test.cpp
372-
373-
Copyright 2017 The Abseil Authors.
374-
375-
Licensed under the Apache License, Version 2.0 (the "License");
376-
you may not use this file except in compliance with the License.
377-
You may obtain a copy of the License at
378-
379-
http://www.apache.org/licenses/LICENSE-2.0
380-
381-
Unless required by applicable law or agreed to in writing, software
382-
distributed under the License is distributed on an "AS IS" BASIS,
383-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
384-
See the License for the specific language governing permissions and
385-
limitations under the License.
386-
387-
--------------------------------------------------------------------------------
388-
389363
src/utils/safe_strerror_posix.cpp - BSD-3-Clause License
390364

391365
Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.

src/base/pegasus_utils.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#include <vector>
3030

3131
#include "utils/flags.h"
32-
#include "utils/string_view.h"
32+
#include "absl/strings/string_view.h"
3333

3434
DSN_DECLARE_bool(encrypt_data_at_rest);
3535

@@ -129,9 +129,9 @@ const std::string &redact_sensitive_string(const T &src)
129129
}
130130
}
131131

132-
inline dsn::string_view to_string_view(rocksdb::Slice s) { return {s.data(), s.size()}; }
132+
inline absl::string_view to_string_view(rocksdb::Slice s) { return {s.data(), s.size()}; }
133133

134-
inline rocksdb::Slice to_rocksdb_slice(dsn::string_view s) { return {s.data(), s.size()}; }
134+
inline rocksdb::Slice to_rocksdb_slice(absl::string_view s) { return {s.data(), s.size()}; }
135135

136136
} // namespace utils
137137
} // namespace pegasus

src/base/pegasus_value_schema.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
#include "utils/blob.h"
3333
#include "utils/endians.h"
3434
#include "utils/fmt_logging.h"
35-
#include "utils/string_view.h"
35+
#include "absl/strings/string_view.h"
3636
#include "value_field.h"
3737

3838
namespace pegasus {
@@ -55,7 +55,7 @@ inline uint64_t extract_timestamp_from_timetag(uint64_t timetag)
5555
/// Extracts expire_ts from rocksdb value with given version.
5656
/// The value schema must be in v0 or v1.
5757
/// \return expire_ts in host endian
58-
inline uint32_t pegasus_extract_expire_ts(uint32_t version, dsn::string_view value)
58+
inline uint32_t pegasus_extract_expire_ts(uint32_t version, absl::string_view value)
5959
{
6060
CHECK_LE(version, PEGASUS_DATA_VERSION_MAX);
6161
return dsn::data_input(value).read_u32();
@@ -76,15 +76,15 @@ pegasus_extract_user_data(uint32_t version, std::string &&raw_value, ::dsn::blob
7676
if (version == 1) {
7777
input.skip(sizeof(uint64_t));
7878
}
79-
dsn::string_view view = input.read_str();
79+
absl::string_view view = input.read_str();
8080

8181
// tricky code to avoid memory copy
8282
std::shared_ptr<char> buf(const_cast<char *>(view.data()), [s](char *) { delete s; });
8383
user_data.assign(std::move(buf), 0, static_cast<unsigned int>(view.length()));
8484
}
8585

8686
/// Extracts timetag from a v1 value.
87-
inline uint64_t pegasus_extract_timetag(int version, dsn::string_view value)
87+
inline uint64_t pegasus_extract_timetag(int version, absl::string_view value)
8888
{
8989
CHECK_EQ(version, 1);
9090

@@ -118,7 +118,7 @@ inline bool check_if_ts_expired(uint32_t epoch_now, uint32_t expire_ts)
118118
/// \return true if expired
119119
inline bool check_if_record_expired(uint32_t value_schema_version,
120120
uint32_t epoch_now,
121-
dsn::string_view raw_value)
121+
absl::string_view raw_value)
122122
{
123123
return check_if_ts_expired(epoch_now,
124124
pegasus_extract_expire_ts(value_schema_version, raw_value));
@@ -136,7 +136,7 @@ class pegasus_value_generator
136136
/// A higher level utility for generating value with given version.
137137
/// The value schema must be in v0 or v1.
138138
rocksdb::SliceParts generate_value(uint32_t value_schema_version,
139-
dsn::string_view user_data,
139+
absl::string_view user_data,
140140
uint32_t expire_ts,
141141
uint64_t timetag)
142142
{
@@ -157,7 +157,7 @@ class pegasus_value_generator
157157
///
158158
/// rocksdb value (ver 0) = [expire_ts(uint32_t)] [user_data(bytes)]
159159
/// \internal
160-
rocksdb::SliceParts generate_value_v0(uint32_t expire_ts, dsn::string_view user_data)
160+
rocksdb::SliceParts generate_value_v0(uint32_t expire_ts, absl::string_view user_data)
161161
{
162162
_write_buf.resize(sizeof(uint32_t));
163163
_write_slices.clear();
@@ -210,7 +210,7 @@ class pegasus_value_generator
210210
///
211211
/// \internal
212212
rocksdb::SliceParts
213-
generate_value_v1(uint32_t expire_ts, uint64_t timetag, dsn::string_view user_data)
213+
generate_value_v1(uint32_t expire_ts, uint64_t timetag, absl::string_view user_data)
214214
{
215215
_write_buf.resize(sizeof(uint32_t) + sizeof(uint64_t));
216216
_write_slices.clear();
@@ -258,7 +258,7 @@ class value_schema
258258
public:
259259
virtual ~value_schema() = default;
260260

261-
virtual std::unique_ptr<value_field> extract_field(dsn::string_view value,
261+
virtual std::unique_ptr<value_field> extract_field(absl::string_view value,
262262
value_field_type type) = 0;
263263
/// Extracts user value from the raw rocksdb value.
264264
/// In order to avoid data copy, the ownership of `raw_value` will be transferred

src/base/test/value_manager_test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@
2323
#include "base/value_schema_manager.h"
2424
#include "gtest/gtest.h"
2525
#include "pegasus_value_schema.h"
26-
#include "utils/string_view.h"
26+
#include "absl/strings/string_view.h"
2727
#include "value_field.h"
2828

2929
using namespace pegasus;
3030

3131
extern std::string generate_value(value_schema *schema,
3232
uint32_t expire_ts,
3333
uint64_t time_tag,
34-
dsn::string_view user_data);
34+
absl::string_view user_data);
3535

3636
TEST(value_schema_manager, get_latest_value_schema)
3737
{

src/base/test/value_schema_test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
#include "base/value_schema_manager.h"
3131
#include "gtest/gtest.h"
3232
#include "utils/blob.h"
33-
#include "utils/string_view.h"
33+
#include "absl/strings/string_view.h"
3434
#include "value_field.h"
3535

3636
using namespace pegasus;
@@ -52,7 +52,7 @@ uint64_t extract_time_tag(value_schema *schema, const std::string &raw_value)
5252
std::string generate_value(value_schema *schema,
5353
uint32_t expire_ts,
5454
uint64_t time_tag,
55-
dsn::string_view user_data)
55+
absl::string_view user_data)
5656
{
5757
std::string write_buf;
5858
std::vector<rocksdb::Slice> write_slices;

src/base/value_field.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ struct time_tag_field : public value_field
5656

5757
struct user_data_field : public value_field
5858
{
59-
explicit user_data_field(dsn::string_view data) : user_data(data) {}
59+
explicit user_data_field(absl::string_view data) : user_data(data) {}
6060
value_field_type type() { return value_field_type::USER_DATA; }
6161

62-
dsn::string_view user_data;
62+
absl::string_view user_data;
6363
};
6464
} // namespace pegasus

src/base/value_schema_manager.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
#include "value_schema_manager.h"
2121

22+
#include <absl/strings/string_view.h>
2223
#include <iterator>
2324
#include <utility>
2425

@@ -46,7 +47,7 @@ void value_schema_manager::register_schema(std::unique_ptr<value_schema> schema)
4647
}
4748

4849
value_schema *value_schema_manager::get_value_schema(uint32_t meta_cf_data_version,
49-
dsn::string_view value) const
50+
absl::string_view value) const
5051
{
5152
dsn::data_input input(value);
5253
uint8_t first_byte = input.read_u8();

src/base/value_schema_manager.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
#include "pegasus_value_schema.h"
2727
#include "utils/singleton.h"
28-
#include "utils/string_view.h"
28+
#include "absl/strings/string_view.h"
2929

3030
namespace pegasus {
3131

@@ -35,7 +35,7 @@ class value_schema_manager : public dsn::utils::singleton<value_schema_manager>
3535
void register_schema(std::unique_ptr<value_schema> schema);
3636
/// using the raw value in rocksdb and data version stored in meta column family to get data
3737
/// version
38-
value_schema *get_value_schema(uint32_t meta_cf_data_version, dsn::string_view value) const;
38+
value_schema *get_value_schema(uint32_t meta_cf_data_version, absl::string_view value) const;
3939
value_schema *get_value_schema(uint32_t version) const;
4040
value_schema *get_latest_value_schema() const;
4141

src/base/value_schema_v0.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
#include "value_schema_v0.h"
2121

22+
#include <absl/strings/string_view.h>
2223
#include <stdint.h>
2324
#include <string.h>
2425
#include <algorithm>
@@ -31,7 +32,7 @@
3132
#include "utils/ports.h"
3233

3334
namespace pegasus {
34-
std::unique_ptr<value_field> value_schema_v0::extract_field(dsn::string_view value,
35+
std::unique_ptr<value_field> value_schema_v0::extract_field(absl::string_view value,
3536
value_field_type type)
3637
{
3738
std::unique_ptr<value_field> field = nullptr;
@@ -79,14 +80,14 @@ rocksdb::SliceParts value_schema_v0::generate_value(const value_params &params)
7980
params.write_slices.clear();
8081
params.write_slices.emplace_back(params.write_buf.data(), params.write_buf.size());
8182

82-
dsn::string_view user_data = data_field->user_data;
83+
absl::string_view user_data = data_field->user_data;
8384
if (user_data.length() > 0) {
8485
params.write_slices.emplace_back(user_data.data(), user_data.length());
8586
}
8687
return {&params.write_slices[0], static_cast<int>(params.write_slices.size())};
8788
}
8889

89-
std::unique_ptr<value_field> value_schema_v0::extract_timestamp(dsn::string_view value)
90+
std::unique_ptr<value_field> value_schema_v0::extract_timestamp(absl::string_view value)
9091
{
9192
uint32_t expire_ts = dsn::data_input(value).read_u32();
9293
return std::make_unique<expire_timestamp_field>(expire_ts);

src/base/value_schema_v0.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
#include "pegasus_value_schema.h"
2727
#include "utils/blob.h"
28-
#include "utils/string_view.h"
28+
#include "absl/strings/string_view.h"
2929
#include "value_field.h"
3030

3131
namespace pegasus {
@@ -37,15 +37,15 @@ class value_schema_v0 : public value_schema
3737
public:
3838
value_schema_v0() = default;
3939

40-
std::unique_ptr<value_field> extract_field(dsn::string_view value,
40+
std::unique_ptr<value_field> extract_field(absl::string_view value,
4141
value_field_type type) override;
4242
dsn::blob extract_user_data(std::string &&value) override;
4343
void update_field(std::string &value, std::unique_ptr<value_field> field) override;
4444
rocksdb::SliceParts generate_value(const value_params &params) override;
4545
data_version version() const override { return data_version::VERSION_0; }
4646

4747
private:
48-
std::unique_ptr<value_field> extract_timestamp(dsn::string_view value);
48+
std::unique_ptr<value_field> extract_timestamp(absl::string_view value);
4949
void update_expire_ts(std::string &value, std::unique_ptr<value_field> field);
5050
};
5151
} // namespace pegasus

src/base/value_schema_v1.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
#include "value_schema_v1.h"
2121

22+
#include <absl/strings/string_view.h>
2223
#include <stdint.h>
2324
#include <string.h>
2425
#include <algorithm>
@@ -31,7 +32,7 @@
3132
#include "utils/ports.h"
3233

3334
namespace pegasus {
34-
std::unique_ptr<value_field> value_schema_v1::extract_field(dsn::string_view value,
35+
std::unique_ptr<value_field> value_schema_v1::extract_field(absl::string_view value,
3536
value_field_type type)
3637
{
3738
std::unique_ptr<value_field> field = nullptr;
@@ -87,20 +88,20 @@ rocksdb::SliceParts value_schema_v1::generate_value(const value_params &params)
8788
params.write_slices.clear();
8889
params.write_slices.emplace_back(params.write_buf.data(), params.write_buf.size());
8990

90-
dsn::string_view user_data = data_field->user_data;
91+
absl::string_view user_data = data_field->user_data;
9192
if (user_data.length() > 0) {
9293
params.write_slices.emplace_back(user_data.data(), user_data.length());
9394
}
9495
return {&params.write_slices[0], static_cast<int>(params.write_slices.size())};
9596
}
9697

97-
std::unique_ptr<value_field> value_schema_v1::extract_timestamp(dsn::string_view value)
98+
std::unique_ptr<value_field> value_schema_v1::extract_timestamp(absl::string_view value)
9899
{
99100
uint32_t expire_ts = dsn::data_input(value).read_u32();
100101
return std::make_unique<expire_timestamp_field>(expire_ts);
101102
}
102103

103-
std::unique_ptr<value_field> value_schema_v1::extract_time_tag(dsn::string_view value)
104+
std::unique_ptr<value_field> value_schema_v1::extract_time_tag(absl::string_view value)
104105
{
105106
dsn::data_input input(value);
106107
input.skip(sizeof(uint32_t));

src/base/value_schema_v1.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
#include "pegasus_value_schema.h"
2727
#include "utils/blob.h"
28-
#include "utils/string_view.h"
28+
#include "absl/strings/string_view.h"
2929
#include "value_field.h"
3030

3131
namespace pegasus {
@@ -37,16 +37,16 @@ class value_schema_v1 : public value_schema
3737
public:
3838
value_schema_v1() = default;
3939

40-
std::unique_ptr<value_field> extract_field(dsn::string_view value,
40+
std::unique_ptr<value_field> extract_field(absl::string_view value,
4141
value_field_type type) override;
4242
dsn::blob extract_user_data(std::string &&value) override;
4343
void update_field(std::string &value, std::unique_ptr<value_field> field) override;
4444
rocksdb::SliceParts generate_value(const value_params &params) override;
4545
data_version version() const override { return data_version::VERSION_1; }
4646

4747
private:
48-
std::unique_ptr<value_field> extract_timestamp(dsn::string_view value);
49-
std::unique_ptr<value_field> extract_time_tag(dsn::string_view value);
48+
std::unique_ptr<value_field> extract_timestamp(absl::string_view value);
49+
std::unique_ptr<value_field> extract_time_tag(absl::string_view value);
5050
void update_expire_ts(std::string &value, std::unique_ptr<value_field> field);
5151
};
5252

0 commit comments

Comments
 (0)