mirror of
https://github.com/hinto-janai/cuprate.git
synced 2025-01-05 10:29:32 +00:00
ad7b750d76
* add `cuprate-types` * remove `cuprate_database::service::{request,response}` * use `cuprate_types::service::{request,response}` * service: fix `Request` `match`'s * service: create `ReadRequest` function mappings * service: create `WriteRequest` function mappings * service: add rough `WriteRequest` retry loop * service: handle `RuntimeError::ResizeNeeded` in writer * add `{R,r}o` exception to typos * docs * env: make `resize_map()` return new memory map byte size * write: proactively handle resizes `add_block()` takes `VerifiedBlockInformation` such that it can just take the inner blobs of data. This is a problem when reactively resizing since we no longer have the block struct we just gave away so we're forced to `.clone()` each retry. Instead of that - we will proactively resize so the resize error will never occur in the first place. * read: use type aliases * docs * fix import * write: handle resizes reactively * service: panic if response can't be sent back * write: add loop unreachable asserts * service: print and drop error instead of panic * write: fix retry loop off-by-1 * write: fix docs * review changes * update readme * remove `BlockBatchInRange` request/response * Update database/README.md Co-authored-by: Boog900 <boog900@tutanota.com> --------- Co-authored-by: Boog900 <boog900@tutanota.com>
50 lines
2.1 KiB
TOML
50 lines
2.1 KiB
TOML
[package]
|
|
name = "cuprate-database"
|
|
version = "0.0.0"
|
|
edition = "2021"
|
|
description = "Cuprate's database abstraction"
|
|
license = "MIT"
|
|
authors = ["hinto-janai"]
|
|
repository = "https://github.com/Cuprate/cuprate/tree/main/database"
|
|
keywords = ["cuprate", "database"]
|
|
|
|
[features]
|
|
# default = ["heed", "redb", "service"]
|
|
# default = ["redb", "service"]
|
|
default = ["redb-memory", "service"]
|
|
heed = ["dep:heed"]
|
|
redb = ["dep:redb"]
|
|
redb-memory = ["redb"]
|
|
service = ["dep:crossbeam", "dep:futures", "dep:tokio", "dep:tokio-util", "dep:tower", "dep:rayon"]
|
|
|
|
[dependencies]
|
|
bytemuck = { version = "1.14.3", features = ["must_cast", "derive", "min_const_generics", "extern_crate_alloc"] }
|
|
bytes = { workspace = true }
|
|
cfg-if = { workspace = true }
|
|
# FIXME:
|
|
# We only need the `thread` feature if `service` is enabled.
|
|
# Figure out how to enable features of an already pulled in dependency conditionally.
|
|
cuprate-helper = { path = "../helper", features = ["fs", "thread"] }
|
|
cuprate-types = { path = "../types", features = ["service"] }
|
|
paste = { workspace = true }
|
|
page_size = { version = "0.6.0" } # Needed for database resizes, they must be a multiple of the OS page size.
|
|
thiserror = { workspace = true }
|
|
|
|
# `service` feature.
|
|
crossbeam = { workspace = true, features = ["std"], optional = true }
|
|
futures = { workspace = true, optional = true }
|
|
tokio = { workspace = true, features = ["full"], optional = true }
|
|
tokio-util = { workspace = true, features = ["full"], optional = true }
|
|
tower = { workspace = true, features = ["full"], optional = true }
|
|
rayon = { workspace = true, optional = true }
|
|
|
|
# Optional features.
|
|
heed = { version = "0.20.0-alpha.9", optional = true }
|
|
redb = { version = "2.0.0", optional = true }
|
|
serde = { workspace = true, optional = true }
|
|
|
|
[dev-dependencies]
|
|
bytemuck = { version = "1.14.3", features = ["must_cast", "derive", "min_const_generics", "extern_crate_alloc"] }
|
|
cuprate-helper = { path = "../helper", features = ["thread"] }
|
|
page_size = { version = "0.6.0" }
|
|
tempfile = { version = "3.10.0" }
|