Skip to content

Commit

Permalink
DefaultMetricSearcher impl MetricSearcher
Browse files Browse the repository at this point in the history
  • Loading branch information
flearc authored and Forsworns committed Feb 3, 2024
1 parent 47057f6 commit 0ff9b05
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 23 deletions.
9 changes: 7 additions & 2 deletions sentinel-core/src/core/log/metric/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,16 @@ pub trait MetricLogWriter {
// MetricSearcher searches metric items from the metric log file under given condition.
pub trait MetricSearcher {
fn find_by_time_and_resource(
&self,
begin_time_ms: u64,
end_time_ms: u64,
resource: &str,
) -> Result<MetricItem>;
fn find_from_time_with_max_lines(begin_time_ms: u64, max_lines: u32) -> Result<MetricItem>;
) -> Result<MetricItemVec>;
fn find_from_time_with_max_lines(
&self,
begin_time_ms: u64,
max_lines: usize,
) -> Result<MetricItemVec>;
}

// Generate the metric file name from the service name.
Expand Down
44 changes: 23 additions & 21 deletions sentinel-core/src/core/log/metric/searcher.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,28 +30,12 @@ pub struct DefaultMetricSearcher {
pub cached_pos: Mutex<FilePosition>,
}

impl DefaultMetricSearcher {
pub fn new(base_dir: String, base_filename: String) -> Result<Self> {
if base_dir.is_empty() {
return Err(Error::msg("empty base directory"));
}
if base_filename.is_empty() {
return Err(Error::msg("empty base filename pattern"));
}
let reader = DefaultMetricLogReader::new();
Ok(DefaultMetricSearcher {
base_dir: PathBuf::from(base_dir),
base_filename: PathBuf::from(base_filename),
reader,
cached_pos: Mutex::new(FilePosition::default()),
})
}

pub fn find_by_time_and_resource(
impl MetricSearcher for DefaultMetricSearcher {
fn find_by_time_and_resource(
&self,
begin_time_ms: u64,
end_time_ms: u64,
resource: String,
resource: &str,
) -> Result<MetricItemVec> {
self.search_offset_and_read(begin_time_ms, &move |filenames: Vec<PathBuf>,
file_no: usize,
Expand All @@ -63,12 +47,12 @@ impl DefaultMetricSearcher {
offset,
begin_time_ms,
end_time_ms,
resource.clone(),
resource.to_owned(),
)
})
}

pub fn find_from_time_with_max_lines(
fn find_from_time_with_max_lines(
&self,
begin_time_ms: u64,
max_lines: usize,
Expand All @@ -81,6 +65,24 @@ impl DefaultMetricSearcher {
.read_metrics(filenames, file_no, offset, max_lines)
})
}
}

impl DefaultMetricSearcher {
pub fn new(base_dir: String, base_filename: String) -> Result<Self> {
if base_dir.is_empty() {
return Err(Error::msg("empty base directory"));
}
if base_filename.is_empty() {
return Err(Error::msg("empty base filename pattern"));
}
let reader = DefaultMetricLogReader::new();
Ok(DefaultMetricSearcher {
base_dir: PathBuf::from(base_dir),
base_filename: PathBuf::from(base_filename),
reader,
cached_pos: Mutex::new(FilePosition::default()),
})
}

pub fn search_offset_and_read(
&self,
Expand Down

0 comments on commit 0ff9b05

Please sign in to comment.