Skip to content

Commit

Permalink
fix marco
Browse files Browse the repository at this point in the history
  • Loading branch information
jiacai2050 committed Jul 10, 2023
1 parent 1db59e0 commit ee773a2
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 25 deletions.
3 changes: 1 addition & 2 deletions analytic_engine/src/sst/parquet/async_reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -375,8 +375,7 @@ impl<'a> Reader<'a> {
file_path: self.path.to_string(),
})?;

//TODO: unstore origin value
MetaData::try_new(&parquet_meta_data, true)
MetaData::try_new(&parquet_meta_data, ignore_sst_filter)
.box_err()
.context(DecodeSstMeta)
}
Expand Down
47 changes: 25 additions & 22 deletions components/trace_metric_derive/src/builder.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Copyright 2022 CeresDB Project Authors. Licensed under Apache-2.0.

use proc_macro::TokenStream;
use proc_macro2::Span;
use quote::{quote, ToTokens, TokenStreamExt};
use syn::{DeriveInput, Field, Generics, Ident};

Expand All @@ -16,24 +17,34 @@ enum MetricOp {

impl ToTokens for MetricOp {
fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
tokens.append_all(format!("{self:?}").as_bytes());
tokens.append_all(&[Ident::new(format!("{self:?}").as_str(), Span::call_site())]);
}
}

#[derive(Debug)]
enum MetricType {
Number,
Duration,
Boolean,
}

impl ToTokens for MetricType {
fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
tokens.append_all(&[Ident::new(
format!("{self:?}").to_lowercase().as_str(),
Span::call_site(),
)]);
}
}

struct MetricMetadata {
typ: MetricType,
op: Option<MetricOp>,
}

impl MetricMetadata {
fn parse_op(s: &str) -> Option<MetricOp> {
match s {
match s.to_lowercase().as_str() {
"add" => Some(MetricOp::Add),
_ => None,
}
Expand Down Expand Up @@ -170,29 +181,21 @@ impl Builder {
let mut collect_statements = Vec::with_capacity(self.metric_fields.len());
for metric_field in self.metric_fields.iter() {
let field_name = &metric_field.field_name;
let md = &metric_field.metric_metadata;
let op = &md.op;
let metric = match md.typ {
MetricType::Number => {
quote! { ::trace_metric::Metric::number(stringify!(#field_name).to_string(),
self.#field_name,
::trace_metric::Metric::MetricOp::stringify!(#op))
}
let metadata = &metric_field.metric_metadata;
let metric_op = &metadata.op;
let metric_type = &metadata.typ;
let metric = if let Some(op) = metric_op {
quote! { ::trace_metric::Metric::#metric_type(stringify!(#field_name).to_string(),
self.#field_name,
Some(::trace_metric::metric::MetricOp::#op))
}
MetricType::Duration => {
quote! { ::trace_metric::Metric::duration(stringify!(#field_name).to_string(),
self.#field_name,
::trace_metric::Metric::MetricOp::stringify!(#op))
}
}
MetricType::Boolean => {
quote! { ::trace_metric::Metric::boolean(stringify!(#field_name).to_string(),
self.#field_name,
::trace_metric::Metric::MetricOp::stringify!(#op))

}
} else {
quote! { ::trace_metric::Metric::#metric_type(stringify!(#field_name).to_string(),
self.#field_name,
None)
}
};

let statement = quote! {
collector.collect(#metric);
};
Expand Down
2 changes: 1 addition & 1 deletion components/trace_metric_derive_tests/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use trace_metric::{MetricsCollector, TraceMetricWhenDrop};

#[derive(Debug, Clone, TraceMetricWhenDrop)]
pub struct ExampleMetrics {
#[metric(number)]
#[metric(number, add)]
pub counter: usize,
#[metric(duration)]
pub elapsed: Duration,
Expand Down

0 comments on commit ee773a2

Please sign in to comment.