REVERTED
Cargo.toml
REVERTED
Cargo.toml
REVERTED
nilla.nix
REVERTED
nilla.nix
···
11
{ config, lib }:
12
{
13
config = {
14
-
inputs.nixpkgs = {
15
-
src = pins.nixpkgs;
16
-
settings.overlays = [ config.inputs.fenix.result.overlays.default ];
17
-
};
18
-
19
-
inputs.fenix.src = pins.fenix;
20
21
shells.default = {
22
systems = [ "x86_64-linux" ];
23
24
shell =
25
-
{ mkShell, git, fenix, bacon }:
26
mkShell {
27
inputsFrom = [ git ];
28
-
packages = [
29
-
(fenix.complete.withComponents [
30
-
"cargo"
31
-
"clippy"
32
-
"rust-src"
33
-
"rustc"
34
-
"rustfmt"
35
-
"rust-analyzer"
36
-
])
37
-
bacon
38
-
];
39
};
40
};
41
};
REVERTED
npins/sources.json
REVERTED
npins/sources.json
···
1
{
2
"pins": {
3
-
"fenix": {
4
-
"type": "Git",
5
-
"repository": {
6
-
"type": "GitHub",
7
-
"owner": "nix-community",
8
-
"repo": "fenix"
9
-
},
10
-
"branch": "main",
11
-
"submodules": false,
12
-
"revision": "a563f057979806c59da53070297502eb7af22f62",
13
-
"url": "https://github.com/nix-community/fenix/archive/a563f057979806c59da53070297502eb7af22f62.tar.gz",
14
-
"hash": "sha256-WfItZn6duisxCxyltbu7Hs7kxzNeylgZGOwCYwHe26g="
15
-
},
16
"nilla": {
17
"type": "GitRelease",
18
"repository": {
REVERTED
src/reftable/basics.rs
REVERTED
src/reftable/basics.rs
···
1
-
#[derive(Debug, Clone)]
2
-
pub struct ReftableBuf {
3
-
pub data: Vec<u8>,
4
-
pub len: usize,
5
-
}
6
-
7
-
impl ReftableBuf {
8
-
pub fn new() -> Self {
9
-
Self {
10
-
data: Vec::new(),
11
-
len: 0,
12
-
}
13
-
}
14
-
15
-
pub fn with_capacity(capacity: usize) -> Self {
16
-
Self {
17
-
data: Vec::with_capacity(capacity),
18
-
len: 0,
19
-
}
20
-
}
21
-
22
-
pub fn clear(&mut self) {
23
-
self.data.clear();
24
-
self.len = 0;
25
-
}
26
-
27
-
pub fn as_slice(&self) -> &[u8] {
28
-
&self.data[..self.len]
29
-
}
30
-
}
31
-
32
-
impl Default for ReftableBuf {
33
-
fn default() -> Self {
34
-
Self::new()
35
-
}
36
-
}
37
-
38
-
pub fn binsearch<F>(sz: usize, mut f: F) -> usize
39
-
where
40
-
F: FnMut(usize) -> Result<bool, String>,
41
-
{
42
-
todo!()
43
-
}
44
-
45
-
pub fn names_length(names: &[&str]) -> usize {
46
-
todo!()
47
-
}
48
-
49
-
pub fn parse_names(buf: &str) -> Result<Vec<String>, String> {
50
-
todo!()
51
-
}
52
-
53
-
pub fn common_prefix_size(a: &ReftableBuf, b: &ReftableBuf) -> usize {
54
-
todo!()
55
-
}
56
-
57
-
pub enum HashAlgorithm {
58
-
Sha1 = 89,
59
-
Sha256 = 247,
60
-
}
61
-
62
-
pub fn hash_size(id: HashAlgorithm) -> u32 {
63
-
todo!()
64
-
}
···
REVERTED
src/reftable/block.rs
REVERTED
src/reftable/block.rs
···
1
-
use crate::reftable::{basics::ReftableBuf, blocksource::ReftableBlockData};
2
-
use libz_sys::z_stream;
3
-
4
-
pub struct BlockWriter {
5
-
pub zstream: Box<z_stream>,
6
-
pub compressed: Vec<u8>,
7
-
8
-
pub block: Vec<u8>,
9
-
pub block_size: u32,
10
-
11
-
pub header_off: u32,
12
-
13
-
pub restart_interval: u16,
14
-
pub hash_size: u32,
15
-
16
-
pub next: u32,
17
-
pub restarts: Vec<u32>,
18
-
pub restart_len: u32,
19
-
pub restart_cap: u32,
20
-
21
-
pub last_key: ReftableBuf,
22
-
23
-
pub scratch: ReftableBuf,
24
-
pub entries: i32,
25
-
}
26
-
27
-
pub struct BlockIter {
28
-
pub next_off: u32,
29
-
pub block: Vec<ReftableBlock>,
30
-
31
-
pub last_key: ReftableBuf,
32
-
pub scratch: ReftableBuf,
33
-
}
34
-
35
-
pub struct ReftableBlock {
36
-
pub header_off: u32,
37
-
38
-
pub block_data: ReftableBlockData,
39
-
pub hash_size: usize,
40
-
41
-
pub zstream: Box<z_stream>,
42
-
pub uncompressed_data: Vec<u8>,
43
-
44
-
pub restart_count: u16,
45
-
pub restart_off: u32,
46
-
47
-
pub full_block_size: u32,
48
-
pub block_type: u8,
49
-
}
50
-
51
-
pub struct BlockReader {
52
-
pub zstream: Box<z_stream>,
53
-
pub uncompressed: Vec<u8>,
54
-
pub uncompressed_len: usize,
55
-
56
-
pub block: ReftableBlock,
57
-
58
-
pub pos: usize,
59
-
}
···
REVERTED
src/reftable/blocksource.rs
REVERTED
src/reftable/blocksource.rs
···
1
-
pub struct ReftableBlockData {
2
-
data: Vec<u8>,
3
-
source: ReftableBlockSource,
4
-
}
5
-
6
-
impl AsRef<[u8]> for ReftableBlockData {
7
-
fn as_ref(&self) -> &[u8] {
8
-
&self.data
9
-
}
10
-
}
11
-
12
-
pub trait ReftableBlockSourceOps {
13
-
fn size(&self) -> u64;
14
-
fn read_block(&self, offset: u64, size: u32) -> Result<Vec<u8>, String>;
15
-
fn release_block(&self, data: &ReftableBlockData) -> Result<(), String>;
16
-
fn close(&mut self) -> Result<(), String>;
17
-
}
18
-
19
-
pub struct ReftableBlockSource {
20
-
ops: Box<dyn ReftableBlockSourceOps>,
21
-
}
···
REVERTED
src/reftable/error.rs
REVERTED
src/reftable/error.rs
···
1
-
#[derive(Debug, Clone, PartialEq, Eq)]
2
-
pub enum ReftableError {
3
-
General(String),
4
-
Io,
5
-
Format,
6
-
NotExist,
7
-
Lock,
8
-
Api,
9
-
Zlib,
10
-
EmptyTable,
11
-
Refname,
12
-
EntryTooBig,
13
-
Outdated,
14
-
OutOfMemory,
15
-
}
16
-
17
-
impl std::fmt::Display for ReftableError {
18
-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
19
-
match self {
20
-
ReftableError::General(msg) => write!(f, "general error: {}", msg),
21
-
ReftableError::Io => write!(f, "I/O error"),
22
-
ReftableError::Format => write!(f, "corrupt reftable file"),
23
-
ReftableError::NotExist => write!(f, "file does not exist"),
24
-
ReftableError::Lock => write!(f, "data is locked"),
25
-
ReftableError::Api => write!(f, "misuse of the reftable API"),
26
-
ReftableError::Zlib => write!(f, "zlib failure"),
27
-
ReftableError::EmptyTable => write!(f, "wrote empty table"),
28
-
ReftableError::Refname => write!(f, "invalid refname"),
29
-
ReftableError::EntryTooBig => write!(f, "entry too large"),
30
-
ReftableError::Outdated => write!(f, "data concurrently modified"),
31
-
ReftableError::OutOfMemory => write!(f, "out of memory"),
32
-
}
33
-
}
34
-
}
···
ERROR
src/reftable/fsck.rs
ERROR
src/reftable/fsck.rs
Failed to calculate interdiff for this file.
REVERTED
src/reftable/iter.rs
REVERTED
src/reftable/iter.rs
REVERTED
src/reftable/merged.rs
REVERTED
src/reftable/merged.rs
ERROR
src/reftable/mod.rs
ERROR
src/reftable/mod.rs
Failed to calculate interdiff for this file.
REVERTED
src/reftable/pq.rs
REVERTED
src/reftable/pq.rs
REVERTED
src/reftable/record.rs
REVERTED
src/reftable/record.rs
···
1
-
use crate::reftable::basics::ReftableBuf;
2
-
3
-
pub const REFTABLE_HASH_SIZE_MAX: usize = 32;
4
-
pub const REFTABLE_HASH_SIZE_SHA1: usize = 20;
5
-
pub const REFTABLE_HASH_SIZE_SHA256: usize = 32;
6
-
7
-
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
8
-
pub enum RefValueType {
9
-
Deletion = 0x0,
10
-
Val1 = 0x1,
11
-
Val2 = 0x2,
12
-
SymRef = 0x3,
13
-
}
14
-
15
-
impl std::convert::TryFrom<u8> for RefValueType {
16
-
type Error = String;
17
-
18
-
fn try_from(value: u8) -> Result<Self, String> {
19
-
match value {
20
-
0x0 => Ok(RefValueType::Deletion),
21
-
0x1 => Ok(RefValueType::Val1),
22
-
0x2 => Ok(RefValueType::Val2),
23
-
0x3 => Ok(RefValueType::SymRef),
24
-
_ => Err(format!("Unknown ref value type: {value}")),
25
-
}
26
-
}
27
-
}
28
-
29
-
#[derive(Debug, Clone)]
30
-
pub enum RefValue {
31
-
Val1([u8; REFTABLE_HASH_SIZE_MAX]),
32
-
Val2 {
33
-
value: [u8; REFTABLE_HASH_SIZE_MAX],
34
-
target_value: [u8; REFTABLE_HASH_SIZE_MAX],
35
-
},
36
-
SymRef(String),
37
-
}
38
-
39
-
#[derive(Debug, Clone)]
40
-
pub struct ReftableRefRecord {
41
-
pub refname: String,
42
-
pub update_index: u64,
43
-
pub value: Option<RefValue>,
44
-
}
45
-
46
-
impl ReftableRefRecord {
47
-
pub fn equals(&self, other: &ReftableRefRecord, hash_size: u32) -> bool {
48
-
todo!()
49
-
}
50
-
}
51
-
52
-
impl PartialEq for ReftableRefRecord {
53
-
fn eq(&self, other: &ReftableRefRecord) -> bool {
54
-
self.equals(other, REFTABLE_HASH_SIZE_MAX as u32)
55
-
}
56
-
}
57
-
58
-
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
59
-
pub enum LogValueType {
60
-
Deletion = 0x0,
61
-
Update = 0x1,
62
-
}
63
-
64
-
impl std::convert::TryFrom<u8> for LogValueType {
65
-
type Error = String;
66
-
67
-
fn try_from(value: u8) -> Result<Self, String> {
68
-
match value {
69
-
0x0 => Ok(LogValueType::Deletion),
70
-
0x1 => Ok(LogValueType::Update),
71
-
_ => Err(format!("Unknown log value type: {value}")),
72
-
}
73
-
}
74
-
}
75
-
76
-
#[derive(Debug, Clone)]
77
-
pub struct LogUpdate {
78
-
pub new_hash: [u8; REFTABLE_HASH_SIZE_MAX],
79
-
pub old_hash: [u8; REFTABLE_HASH_SIZE_MAX],
80
-
pub name: String,
81
-
pub email: String,
82
-
pub time: u64,
83
-
pub tz_offset: i16,
84
-
pub message: String,
85
-
}
86
-
87
-
#[derive(Debug, Clone)]
88
-
pub struct ReftableLogRecord {
89
-
pub refname: String,
90
-
pub update_index: u64,
91
-
pub value: Option<LogUpdate>,
92
-
}
93
-
94
-
impl ReftableLogRecord {
95
-
pub fn equals(&self, other: &ReftableLogRecord, hash_size: u32) -> bool {
96
-
todo!()
97
-
}
98
-
}
99
-
100
-
impl PartialEq for ReftableLogRecord {
101
-
fn eq(&self, other: &ReftableLogRecord) -> bool {
102
-
self.equals(other, REFTABLE_HASH_SIZE_MAX as u32)
103
-
}
104
-
}
105
-
106
-
#[derive(Debug, Clone)]
107
-
pub struct ReftableObjRecord {
108
-
pub hash_prefix: Vec<u8>,
109
-
pub offsets: Vec<u64>,
110
-
}
111
-
112
-
impl PartialEq for ReftableObjRecord {
113
-
fn eq(&self, other: &Self) -> bool {
114
-
self.hash_prefix == other.hash_prefix && self.offsets == other.offsets
115
-
}
116
-
}
117
-
118
-
#[derive(Debug, Clone)]
119
-
pub struct ReftableIndexRecord {
120
-
pub offset: u64,
121
-
pub last_key: ReftableBuf,
122
-
}
123
-
124
-
impl PartialEq for ReftableIndexRecord {
125
-
fn eq(&self, other: &Self) -> bool {
126
-
self.offset == other.offset && self.last_key.as_slice() == other.last_key.as_slice()
127
-
}
128
-
}
129
-
130
-
#[derive(Debug, Clone)]
131
-
pub enum ReftableRecord {
132
-
Ref(ReftableRefRecord),
133
-
Log(ReftableLogRecord),
134
-
Obj(ReftableObjRecord),
135
-
Index(ReftableIndexRecord),
136
-
}
137
-
138
-
impl PartialEq for ReftableRecord {
139
-
fn eq(&self, other: &Self) -> bool {
140
-
match (self, other) {
141
-
(ReftableRecord::Ref(a), ReftableRecord::Ref(b)) => a == b,
142
-
(ReftableRecord::Log(a), ReftableRecord::Log(b)) => a == b,
143
-
(ReftableRecord::Obj(a), ReftableRecord::Obj(b)) => a == b,
144
-
(ReftableRecord::Index(a), ReftableRecord::Index(b)) => a == b,
145
-
_ => false,
146
-
}
147
-
}
148
-
}
···
REVERTED
src/reftable/stack.rs
REVERTED
src/reftable/stack.rs
REVERTED
src/reftable/system.rs
REVERTED
src/reftable/system.rs
REVERTED
src/reftable/table.rs
REVERTED
src/reftable/table.rs
REVERTED
src/reftable/tree.rs
REVERTED
src/reftable/tree.rs
REVERTED
src/reftable/write.rs
REVERTED
src/reftable/write.rs
NEW
src/reftable/reftable_table.rs
NEW
src/reftable/reftable_table.rs
···
···
1
+
pub struct ReftableTable {
2
+
pub name: String,
3
+
pub source: ReftableBlockSource,
4
+
pub size: u64,
5
+
pub hash_id: ReftableHash,
6
+
pub block_size: u32,
7
+
pub min_update_index: u64,
8
+
pub max_update_index: u64,
9
+
pub object_id_len: i32, // TODO: is this the right integer size? (originally was int)
10
+
pub version: i32, // TODO: is this the right integer size? (originally was int)
11
+
pub ref_offsets: ReftableTableOffsets,
12
+
pub obj_offsets: ReftableTableOffsets,
13
+
pub log_offsets: ReftableTableOffsets,
14
+
}