Skip to content

Commit e359bd5

Browse files
committed
move query code to different crate
1 parent 03bac06 commit e359bd5

File tree

9 files changed

+81
-30
lines changed

9 files changed

+81
-30
lines changed

Cargo.lock

Lines changed: 26 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[workspace]
22
resolver = "2"
3-
members = ["example", "gui", "entrace_core", "bench"]
3+
members = ["example", "gui", "entrace_core", "bench", "entrace_query"]
44

55
[profile.profiling]
66
inherits = 'release'

entrace_core/src/log_provider.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::{ops::Deref, sync::Arc};
2+
13
use crate::{
24
Header, MetadataRefContainer,
35
remote::{FileIETError, RemoteLogProviderError},

entrace_query/Cargo.toml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[package]
2+
name = "entrace_query"
3+
version = "0.1.1"
4+
edition = "2024"
5+
6+
[dependencies]
7+
mlua = { version = "0.10.5", features = ["error-send", "luajit"] }
8+
entrace_core = { version = "0.1.1", path = "../entrace_core/" }
9+
anyhow = "1.0.100"
10+
memchr = "2.7.6"
11+
thiserror = "2.0.17"

entrace_query/src/lib.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
use entrace_core::LogProvider;
2+
3+
pub mod lua_api;
4+
pub mod lua_value;
5+
6+
pub(crate) type TraceProvider = Box<dyn LogProvider + Send + Sync>;
7+
#[derive(thiserror::Error, Debug, Clone)]
8+
pub enum QueryError {
9+
#[error("Index out of bounds. Tried to access element {index} of a container of size {actual}")]
10+
OutOfBounds { index: u32, actual: u32 },
11+
#[error(
12+
"The thread running your query died. This usually means an error in entrace, and not in \
13+
your code."
14+
)]
15+
QueryDied,
16+
#[error("Error while running your query")]
17+
LuaError(#[source] mlua::Error),
18+
#[error(
19+
"Failed to coerce the result of your query to Vec<u32>. Make sure to return a list from \
20+
the query!"
21+
)]
22+
FailedToCoerce(#[source] mlua::Error),
23+
}
Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,23 @@ use std::{
88
};
99

1010
use anyhow::bail;
11-
use entrace_core::{EnValue, EnValueRef, LogProviderError, MetadataRefContainer};
11+
use entrace_core::{EnValue, EnValueRef, LevelContainer, LogProviderError, MetadataRefContainer};
1212
use memchr::memmem::Finder;
1313
use mlua::{ExternalError, IntoLua, Lua, Table, Value};
1414

1515
use crate::{
16-
LevelRepr, TraceProvider,
17-
search::{LuaValueRef, LuaValueRefRef, QueryError},
16+
QueryError, TraceProvider,
17+
lua_value::{LuaValueRef, LuaValueRefRef},
1818
};
19-
19+
fn level_to_u8(level: &entrace_core::LevelContainer) -> u8 {
20+
match level {
21+
LevelContainer::Trace => 1,
22+
LevelContainer::Debug => 2,
23+
LevelContainer::Info => 3,
24+
LevelContainer::Warn => 4,
25+
LevelContainer::Error => 5,
26+
}
27+
}
2028
fn make_oob_error(index: u32, len: usize) -> mlua::Error {
2129
let actual = len as u32;
2230
let e = QueryError::OutOfBounds { index, actual };
@@ -70,7 +78,7 @@ pub fn en_metadata(
7078

7179
let table = lua.create_table()?;
7280
table.set("name", name)?;
73-
table.set("level", level.index())?;
81+
table.set("level", level_to_u8(&level))?;
7482
table.set("file", file)?;
7583
table.set("line", line)?;
7684
table.set("target", target)?;
@@ -97,7 +105,7 @@ pub fn en_metadata_level(
97105
let tcc = trace_provider.read().unwrap();
98106
let c = tcc.meta(id).map_err(to_lua_error)?;
99107
let MetadataRefContainer { level, .. } = c;
100-
Ok(level.index())
108+
Ok(level_to_u8(&level))
101109
}
102110
}
103111

gui/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ egui = "0.32.0"
1717
egui_extras = { version = "0.32.0", features = ["all_loaders"] }
1818
egui_material_icons = "0.4.0"
1919
entrace_core = { version = "0.1.1", path = "../entrace_core/" }
20+
entrace_query = { version = "0.1.1", path = "../entrace_query/" }
2021
memchr = "2.7.5"
2122
mimalloc = "0.1.47"
2223
mlua = { version = "0.10.5", features = ["error-send", "luajit"] }

gui/src/search/mod.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
pub mod lua_api;
2-
mod lua_value;
3-
pub use lua_value::*;
41
pub mod query_window;
52
use std::{
63
cell::RefCell,
@@ -14,18 +11,15 @@ use std::{
1411
};
1512

1613
use crate::{
17-
LogState, TraceProvider,
18-
enbitvec::EnBitVec,
19-
notifications::draw_x,
20-
rect,
21-
search::{lua_api::setup_lua, query_window::QueryLayoutCache},
22-
spawn_task,
14+
LogState, TraceProvider, enbitvec::EnBitVec, notifications::draw_x, rect,
15+
search::query_window::QueryLayoutCache, spawn_task,
2316
};
2417
use crossbeam::channel::Receiver;
2518
use egui::{
2619
Color32, CornerRadius, Margin, Pos2, Rect, Response, RichText, Sense, Separator, Shape, Stroke,
2720
TextEdit, Ui, epaint::RectShape, pos2, vec2,
2821
};
22+
use entrace_query::lua_api::setup_lua;
2923
use mlua::{FromLua, Lua, Value};
3024
use tracing::{error, info};
3125
#[derive(Debug, Clone)]

0 commit comments

Comments
 (0)