Simple log file
This commit is contained in:
parent
84e5e3343a
commit
ccf033eeed
1190
Cargo.lock
generated
1190
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -10,4 +10,9 @@ futures-util = { version = "0.3.28" }
|
|||||||
futures = { version = "0.3.28" }
|
futures = { version = "0.3.28" }
|
||||||
futures-async-runtime = { version = "0.2.1" }
|
futures-async-runtime = { version = "0.2.1" }
|
||||||
tracing = { version = "0" }
|
tracing = { version = "0" }
|
||||||
serde = { version = "1.0.162" }
|
serde = { version = "1.0.162", features = ['derive'] }
|
||||||
|
flumedb = "*"
|
||||||
|
serde_json = "*"
|
||||||
|
async-std = { version = "*", features = ["attributes"] }
|
||||||
|
tide = "*"
|
||||||
|
gumdrop = "*"
|
||||||
|
@ -1,3 +1,60 @@
|
|||||||
fn main() {
|
use flumedb::*;
|
||||||
println!("Hello, world!");
|
use gumdrop::Options;
|
||||||
|
|
||||||
|
#[derive(Debug, thiserror::Error)]
|
||||||
|
enum Error {}
|
||||||
|
|
||||||
|
#[derive(Options)]
|
||||||
|
struct Opts {
|
||||||
|
help: bool,
|
||||||
|
log_path: String,
|
||||||
|
bind: String,
|
||||||
|
listen_port: u16,
|
||||||
|
broadcast_port: u16,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[async_std::main]
|
||||||
|
async fn main() -> Result<(), Error> {
|
||||||
|
let path = {
|
||||||
|
let args = std::env::args();
|
||||||
|
let mut iter = args.into_iter();
|
||||||
|
iter
|
||||||
|
.next();
|
||||||
|
iter.next()
|
||||||
|
.expect("Log file path not found. Please privide path to log file")
|
||||||
|
};
|
||||||
|
eprintln!("File: {path}");
|
||||||
|
|
||||||
|
let mut log = OffsetLog::<u32>::from_file(
|
||||||
|
std::fs::OpenOptions::new()
|
||||||
|
.append(true)
|
||||||
|
.create(true)
|
||||||
|
.write(true)
|
||||||
|
.read(true)
|
||||||
|
.open(&path)
|
||||||
|
.expect("Failed to open log file"),
|
||||||
|
)
|
||||||
|
.expect("Failed to open log file");
|
||||||
|
|
||||||
|
let len = log.iter().count();
|
||||||
|
|
||||||
|
log.append(&len.to_le_bytes()).expect("Failed to write");
|
||||||
|
|
||||||
|
// Read the entry at offset 0
|
||||||
|
let r = log.read(0).expect("Failed to read at 0");
|
||||||
|
// `r.data` is a json string in a standard ssb log.
|
||||||
|
// `r.next` is the offset of the next entry.
|
||||||
|
let r = log.read(r.next);
|
||||||
|
|
||||||
|
log.iter().map(|r| {
|
||||||
|
eprintln!("{r:?}");
|
||||||
|
let (vec, _) = r.data.split_at(std::mem::size_of::<usize>());
|
||||||
|
usize::from_le_bytes(vec.try_into().unwrap())
|
||||||
|
})
|
||||||
|
.for_each(|v| eprintln!("value {v:?}"));
|
||||||
|
// log.iter()
|
||||||
|
// .map(|e| serde_json::from_slice::<serde_json::Value>(&e.data).unwrap())
|
||||||
|
// .for_each(|v| println!("{}", serde_json::to_string_pretty(&v).unwrap()));
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user