1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 12:48:10 +00:00

LibSQL: Remove Core::EventReceiver parent from SQL::Heap

This relationship was only used to provide a name and factory methods
for the heap.
This commit is contained in:
Timothy Flynn 2023-08-07 10:57:34 -04:00 committed by Tim Flynn
parent 2c17742811
commit 4a04438e43
7 changed files with 29 additions and 21 deletions

View file

@ -145,7 +145,7 @@ void insert_and_get_to_and_from_btree(int num_keys)
{ {
ScopeGuard guard([]() { unlink("/tmp/test.db"); }); ScopeGuard guard([]() { unlink("/tmp/test.db"); });
{ {
auto heap = SQL::Heap::construct("/tmp/test.db"); auto heap = MUST(SQL::Heap::create("/tmp/test.db"));
TRY_OR_FAIL(heap->open()); TRY_OR_FAIL(heap->open());
SQL::Serializer serializer(heap); SQL::Serializer serializer(heap);
auto btree = setup_btree(serializer); auto btree = setup_btree(serializer);
@ -162,7 +162,7 @@ void insert_and_get_to_and_from_btree(int num_keys)
} }
{ {
auto heap = SQL::Heap::construct("/tmp/test.db"); auto heap = MUST(SQL::Heap::create("/tmp/test.db"));
TRY_OR_FAIL(heap->open()); TRY_OR_FAIL(heap->open());
SQL::Serializer serializer(heap); SQL::Serializer serializer(heap);
auto btree = setup_btree(serializer); auto btree = setup_btree(serializer);
@ -181,7 +181,7 @@ void insert_into_and_scan_btree(int num_keys)
{ {
ScopeGuard guard([]() { unlink("/tmp/test.db"); }); ScopeGuard guard([]() { unlink("/tmp/test.db"); });
{ {
auto heap = SQL::Heap::construct("/tmp/test.db"); auto heap = MUST(SQL::Heap::create("/tmp/test.db"));
TRY_OR_FAIL(heap->open()); TRY_OR_FAIL(heap->open());
SQL::Serializer serializer(heap); SQL::Serializer serializer(heap);
auto btree = setup_btree(serializer); auto btree = setup_btree(serializer);
@ -199,7 +199,7 @@ void insert_into_and_scan_btree(int num_keys)
} }
{ {
auto heap = SQL::Heap::construct("/tmp/test.db"); auto heap = MUST(SQL::Heap::create("/tmp/test.db"));
TRY_OR_FAIL(heap->open()); TRY_OR_FAIL(heap->open());
SQL::Serializer serializer(heap); SQL::Serializer serializer(heap);
auto btree = setup_btree(serializer); auto btree = setup_btree(serializer);

View file

@ -100,28 +100,28 @@ static void insert_and_verify(int count)
TEST_CASE(create_heap) TEST_CASE(create_heap)
{ {
ScopeGuard guard([]() { unlink("/tmp/test.db"); }); ScopeGuard guard([]() { unlink("/tmp/test.db"); });
auto heap = SQL::Heap::construct("/tmp/test.db"); auto heap = MUST(SQL::Heap::create("/tmp/test.db"));
TRY_OR_FAIL(heap->open()); TRY_OR_FAIL(heap->open());
EXPECT_EQ(heap->version(), SQL::Heap::VERSION); EXPECT_EQ(heap->version(), SQL::Heap::VERSION);
} }
TEST_CASE(create_from_dev_random) TEST_CASE(create_from_dev_random)
{ {
auto heap = SQL::Heap::construct("/dev/random"); auto heap = MUST(SQL::Heap::create("/dev/random"));
auto should_be_error = heap->open(); auto should_be_error = heap->open();
EXPECT(should_be_error.is_error()); EXPECT(should_be_error.is_error());
} }
TEST_CASE(create_from_unreadable_file) TEST_CASE(create_from_unreadable_file)
{ {
auto heap = SQL::Heap::construct("/etc/shadow"); auto heap = MUST(SQL::Heap::create("/etc/shadow"));
auto should_be_error = heap->open(); auto should_be_error = heap->open();
EXPECT(should_be_error.is_error()); EXPECT(should_be_error.is_error());
} }
TEST_CASE(create_in_non_existing_dir) TEST_CASE(create_in_non_existing_dir)
{ {
auto heap = SQL::Heap::construct("/tmp/bogus/test.db"); auto heap = MUST(SQL::Heap::create("/tmp/bogus/test.db"));
auto should_be_error = heap->open(); auto should_be_error = heap->open();
EXPECT(should_be_error.is_error()); EXPECT(should_be_error.is_error());
} }

View file

@ -140,7 +140,7 @@ void insert_and_get_to_and_from_hash_index(int num_keys)
{ {
ScopeGuard guard([]() { unlink("/tmp/test.db"); }); ScopeGuard guard([]() { unlink("/tmp/test.db"); });
{ {
auto heap = SQL::Heap::construct("/tmp/test.db"); auto heap = MUST(SQL::Heap::create("/tmp/test.db"));
TRY_OR_FAIL(heap->open()); TRY_OR_FAIL(heap->open());
SQL::Serializer serializer(heap); SQL::Serializer serializer(heap);
auto hash_index = setup_hash_index(serializer); auto hash_index = setup_hash_index(serializer);
@ -158,7 +158,7 @@ void insert_and_get_to_and_from_hash_index(int num_keys)
} }
{ {
auto heap = SQL::Heap::construct("/tmp/test.db"); auto heap = MUST(SQL::Heap::create("/tmp/test.db"));
TRY_OR_FAIL(heap->open()); TRY_OR_FAIL(heap->open());
SQL::Serializer serializer(heap); SQL::Serializer serializer(heap);
auto hash_index = setup_hash_index(serializer); auto hash_index = setup_hash_index(serializer);
@ -238,7 +238,7 @@ void insert_into_and_scan_hash_index(int num_keys)
{ {
ScopeGuard guard([]() { unlink("/tmp/test.db"); }); ScopeGuard guard([]() { unlink("/tmp/test.db"); });
{ {
auto heap = SQL::Heap::construct("/tmp/test.db"); auto heap = MUST(SQL::Heap::create("/tmp/test.db"));
TRY_OR_FAIL(heap->open()); TRY_OR_FAIL(heap->open());
SQL::Serializer serializer(heap); SQL::Serializer serializer(heap);
auto hash_index = setup_hash_index(serializer); auto hash_index = setup_hash_index(serializer);
@ -256,7 +256,7 @@ void insert_into_and_scan_hash_index(int num_keys)
} }
{ {
auto heap = SQL::Heap::construct("/tmp/test.db"); auto heap = MUST(SQL::Heap::create("/tmp/test.db"));
TRY_OR_FAIL(heap->open()); TRY_OR_FAIL(heap->open());
SQL::Serializer serializer(heap); SQL::Serializer serializer(heap);
auto hash_index = setup_hash_index(serializer); auto hash_index = setup_hash_index(serializer);

View file

@ -14,7 +14,7 @@ static constexpr auto db_path = "/tmp/test.db"sv;
static NonnullRefPtr<SQL::Heap> create_heap() static NonnullRefPtr<SQL::Heap> create_heap()
{ {
auto heap = MUST(SQL::Heap::try_create(db_path)); auto heap = MUST(SQL::Heap::create(db_path));
MUST(heap->open()); MUST(heap->open());
return heap; return heap;
} }

View file

@ -16,7 +16,7 @@
namespace SQL { namespace SQL {
Database::Database(DeprecatedString name) Database::Database(DeprecatedString name)
: m_heap(Heap::construct(move(name))) : m_heap(Heap::create(move(name)).release_value_but_fixme_should_propagate_errors())
, m_serializer(m_heap) , m_serializer(m_heap)
{ {
} }

View file

@ -14,9 +14,14 @@
namespace SQL { namespace SQL {
Heap::Heap(DeprecatedString file_name) ErrorOr<NonnullRefPtr<Heap>> Heap::create(DeprecatedString file_name)
{
return adopt_nonnull_ref_or_enomem(new (nothrow) Heap(move(file_name)));
}
Heap::Heap(DeprecatedString file_name)
: m_name(move(file_name))
{ {
set_name(move(file_name));
} }
Heap::~Heap() Heap::~Heap()

View file

@ -11,8 +11,8 @@
#include <AK/Debug.h> #include <AK/Debug.h>
#include <AK/DeprecatedString.h> #include <AK/DeprecatedString.h>
#include <AK/HashMap.h> #include <AK/HashMap.h>
#include <AK/RefCounted.h>
#include <AK/Vector.h> #include <AK/Vector.h>
#include <LibCore/EventReceiver.h>
#include <LibCore/File.h> #include <LibCore/File.h>
namespace SQL { namespace SQL {
@ -64,13 +64,14 @@ private:
* A Heap can be thought of the backing storage of a single database. It's * A Heap can be thought of the backing storage of a single database. It's
* assumed that a single SQL database is backed by a single Heap. * assumed that a single SQL database is backed by a single Heap.
*/ */
class Heap : public Core::EventReceiver { class Heap : public RefCounted<Heap> {
C_OBJECT(Heap);
public: public:
static constexpr u32 VERSION = 4; static constexpr u32 VERSION = 4;
virtual ~Heap() override; static ErrorOr<NonnullRefPtr<Heap>> create(DeprecatedString);
virtual ~Heap();
DeprecatedString const& name() const { return m_name; }
ErrorOr<void> open(); ErrorOr<void> open();
ErrorOr<size_t> file_size_in_bytes() const; ErrorOr<size_t> file_size_in_bytes() const;
@ -135,6 +136,8 @@ private:
ErrorOr<void> initialize_zero_block(); ErrorOr<void> initialize_zero_block();
ErrorOr<void> update_zero_block(); ErrorOr<void> update_zero_block();
DeprecatedString m_name;
OwnPtr<Core::InputBufferedFile> m_file; OwnPtr<Core::InputBufferedFile> m_file;
Block::Index m_highest_block_written { 0 }; Block::Index m_highest_block_written { 0 };
Block::Index m_next_block { 1 }; Block::Index m_next_block { 1 };