Final method rename PR changes - named() / add_name()

This commit is contained in:
Francis Lalonde 2019-01-25 15:45:46 -05:00
parent bae0fa6b5a
commit 9eb41aebeb
10 changed files with 44 additions and 54 deletions

View File

@ -7,11 +7,13 @@ use std::time::Duration;
use dipstick::*; use dipstick::*;
fn main() { fn main() {
// adding a name to the bucket
let bucket = AtomicBucket::new().named("test"); let bucket = AtomicBucket::new().named("test");
// Bucket::set_default_output(to_stdout()); // adding two names to Graphite output
// metrics will be prefixed with "machine1.application.test"
bucket.drain(Graphite::send_to("localhost:2003").expect("Socket") bucket.drain(Graphite::send_to("localhost:2003").expect("Socket")
.named("machine1").named("application")); .named("machine1").add_name("application"));
bucket.flush_every(Duration::from_secs(3)); bucket.flush_every(Duration::from_secs(3));

View File

@ -4,14 +4,12 @@
extern crate dipstick; extern crate dipstick;
use std::time::Duration; use std::time::Duration;
use std::io;
use dipstick::*; use dipstick::*;
fn main() { fn main() {
let metrics = AtomicBucket::new().named("test"); let metrics = AtomicBucket::new().named("test");
// Bucket::set_default_output(to_stdout()); metrics.drain(Stream::to_stdout());
metrics.drain(Stream::write_to(io::stdout()));
metrics.flush_every(Duration::from_secs(3)); metrics.flush_every(Duration::from_secs(3));

View File

@ -4,14 +4,13 @@ extern crate dipstick;
use dipstick::*; use dipstick::*;
use std::io;
use std::time::Duration; use std::time::Duration;
use std::thread::sleep; use std::thread::sleep;
fn main() { fn main() {
let bucket = AtomicBucket::new(); let bucket = AtomicBucket::new();
AtomicBucket::default_drain(Stream::write_to(io::stdout())); AtomicBucket::default_drain(Stream::to_stdout());
let persistent_marker = bucket.marker("persistent"); let persistent_marker = bucket.marker("persistent");

View File

@ -5,12 +5,11 @@ extern crate dipstick;
use std::time::Duration; use std::time::Duration;
use dipstick::*; use dipstick::*;
use std::io;
fn main() { fn main() {
let app_metrics = AtomicBucket::new(); let app_metrics = AtomicBucket::new();
app_metrics.drain(Stream::write_to(io::stdout())); app_metrics.drain(Stream::to_stdout());
app_metrics.flush_every(Duration::from_secs(3)); app_metrics.flush_every(Duration::from_secs(3));

View File

@ -26,9 +26,9 @@ fn main() {
fifteen_minutes.flush_every(Duration::from_secs(900)); fifteen_minutes.flush_every(Duration::from_secs(900));
let all_buckets = MultiInputScope::new() let all_buckets = MultiInputScope::new()
.target(one_minute) .add_target(one_minute)
.target(five_minutes) .add_target(five_minutes)
.target(fifteen_minutes) .add_target(fifteen_minutes)
.named("machine_name"); .named("machine_name");
// send application metrics to aggregator // send application metrics to aggregator

View File

@ -8,14 +8,14 @@ use std::time::Duration;
fn main() { fn main() {
// will output metrics to graphite and to stdout // will output metrics to graphite and to stdout
let different_type_metrics = MultiInput::new() let different_type_metrics = MultiInput::new()
.target(Graphite::send_to("localhost:2003").expect("Connecting")) .add_target(Graphite::send_to("localhost:2003").expect("Connecting"))
.target(Stream::to_stdout()) .add_target(Stream::to_stdout())
.metrics(); .metrics();
// will output metrics twice, once with "both.yeah" prefix and once with "both.ouch" prefix. // will output metrics twice, once with "both.yeah" prefix and once with "both.ouch" prefix.
let same_type_metrics = MultiInput::new() let same_type_metrics = MultiInput::new()
.target(Stream::to_stderr().named("yeah")) .add_target(Stream::to_stderr().named("yeah"))
.target(Stream::to_stderr().named("ouch")) .add_target(Stream::to_stderr().named("ouch"))
.named("both") .named("both")
.metrics(); .metrics();

View File

@ -8,14 +8,14 @@ use std::time::Duration;
fn main() { fn main() {
// will output metrics to graphite and to stdout // will output metrics to graphite and to stdout
let different_type_metrics = MultiOutput::new() let different_type_metrics = MultiOutput::new()
.target(Graphite::send_to("localhost:2003").expect("Connecting")) .add_target(Graphite::send_to("localhost:2003").expect("Connecting"))
.target(Stream::to_stdout()) .add_target(Stream::to_stdout())
.metrics(); .metrics();
// will output metrics twice, once with "both.yeah" prefix and once with "both.ouch" prefix. // will output metrics twice, once with "both.yeah" prefix and once with "both.ouch" prefix.
let same_type_metrics = MultiOutput::new() let same_type_metrics = MultiOutput::new()
.target(Stream::to_stderr().named("yeah")) .add_target(Stream::to_stderr().named("yeah"))
.target(Stream::to_stderr().named("ouch")) .add_target(Stream::to_stderr().named("ouch"))
.named("both").metrics(); .named("both").metrics();
loop { loop {

View File

@ -56,11 +56,18 @@ pub trait Prefixed {
/// Returns namespace of component. /// Returns namespace of component.
fn get_prefixes(&self) -> &NameParts; fn get_prefixes(&self) -> &NameParts;
/// Extend the namespace new metrics will be defined in. /// Append a name to the existing names.
#[deprecated(since="0.7.2", note="Use named()")] /// Return a clone of the component with the updated names.
#[deprecated(since="0.7.2", note="Use add_name()")]
fn add_prefix<S: Into<String>>(&self, name: S) -> Self; fn add_prefix<S: Into<String>>(&self, name: S) -> Self;
/// Extend the namespace new metrics will be defined in. /// Append a name to the existing names.
/// Return a clone of the component with the updated names.
fn add_name<S: Into<String>>(&self, name: S) -> Self;
/// Replace any existing names with a single name.
/// Return a clone of the component with the new name.
/// If multiple names are required, `add_name` may also be used.
fn named<S: Into<String>>(&self, name: S) -> Self; fn named<S: Into<String>>(&self, name: S) -> Self;
/// Append any name parts to the name's namespace. /// Append any name parts to the name's namespace.
@ -91,17 +98,25 @@ impl<T: WithAttributes> Prefixed for T {
&self.get_attributes().naming &self.get_attributes().naming
} }
/// Adds a name part to any existing naming. /// Replace any existing names with a single name.
/// Return a clone of the component with the updated naming. /// Return a clone of the component with the new name.
/// If multiple names are required, `add_name` may also be used.
fn named<S: Into<String>>(&self, name: S) -> Self { fn named<S: Into<String>>(&self, name: S) -> Self {
let parts = NameParts::from(name);
self.with_attributes(|new_attr| new_attr.naming = parts.clone())
}
/// Append a name to the existing names.
/// Return a clone of the component with the updated names.
fn add_name<S: Into<String>>(&self, name: S) -> Self {
let name = name.into(); let name = name.into();
self.with_attributes(|new_attr| new_attr.naming.push_back(name.clone())) self.with_attributes(|new_attr| new_attr.naming.push_back(name.clone()))
} }
/// Adds a name part to any existing naming. /// Append a name to the existing names.
/// Return a clone of the component with the updated naming. /// Return a clone of the component with the updated names.
fn add_prefix<S: Into<String>>(&self, name: S) -> Self { fn add_prefix<S: Into<String>>(&self, name: S) -> Self {
self.named(name) self.add_name(name)
} }
} }

View File

@ -43,13 +43,7 @@ impl MultiInput {
} }
/// Returns a clone of the dispatch with the new target added to the list. /// Returns a clone of the dispatch with the new target added to the list.
#[deprecated(since="0.7.2", note="Use target()")]
pub fn add_target<OUT: Input + Send + Sync + 'static>(&self, out: OUT) -> Self { pub fn add_target<OUT: Input + Send + Sync + 'static>(&self, out: OUT) -> Self {
self.target(out)
}
/// Returns a clone of the dispatch with the new target added to the list.
pub fn target<OUT: Input + Send + Sync + 'static>(&self, out: OUT) -> Self {
let mut cloned = self.clone(); let mut cloned = self.clone();
cloned.outputs.push(Arc::new(out)); cloned.outputs.push(Arc::new(out));
cloned cloned
@ -79,18 +73,12 @@ impl MultiInputScope {
/// Add a target to the dispatch list. /// Add a target to the dispatch list.
/// Returns a clone of the original object. /// Returns a clone of the original object.
#[deprecated(since="0.7.2", note="Use target()")]
pub fn add_target<IN: InputScope + Send + Sync + 'static>(&self, scope: IN) -> Self { pub fn add_target<IN: InputScope + Send + Sync + 'static>(&self, scope: IN) -> Self {
self.target(scope)
}
/// Add a target to the dispatch list.
/// Returns a clone of the original object.
pub fn target<IN: InputScope + Send + Sync + 'static>(&self, scope: IN) -> Self {
let mut cloned = self.clone(); let mut cloned = self.clone();
cloned.scopes.push(Arc::new(scope)); cloned.scopes.push(Arc::new(scope));
cloned cloned
} }
} }
impl InputScope for MultiInputScope { impl InputScope for MultiInputScope {

View File

@ -46,18 +46,12 @@ impl MultiOutput {
/// Add a target to the dispatch list. /// Add a target to the dispatch list.
/// Returns a clone of the original object. /// Returns a clone of the original object.
#[deprecated(since="0.7.2", note="Use target()")]
pub fn add_target<OUT: Output + Send + Sync + 'static>(&self, out: OUT) -> Self { pub fn add_target<OUT: Output + Send + Sync + 'static>(&self, out: OUT) -> Self {
self.target(out)
}
/// Add a target to the dispatch list.
/// Returns a clone of the original object.
pub fn target<OUT: Output + Send + Sync + 'static>(&self, out: OUT) -> Self {
let mut cloned = self.clone(); let mut cloned = self.clone();
cloned.outputs.push(Arc::new(out)); cloned.outputs.push(Arc::new(out));
cloned cloned
} }
} }
impl WithAttributes for MultiOutput { impl WithAttributes for MultiOutput {
@ -82,17 +76,12 @@ impl MultiOutputScope {
} }
/// Returns a clone of the dispatch with the new output added to the list. /// Returns a clone of the dispatch with the new output added to the list.
#[deprecated(since="0.7.2", note="Use target()")]
pub fn add_target<IN: OutputScope + 'static>(&self, scope: IN) -> Self { pub fn add_target<IN: OutputScope + 'static>(&self, scope: IN) -> Self {
self.target(scope)
}
/// Returns a clone of the dispatch with the new output added to the list.
pub fn target<IN: OutputScope + 'static>(&self, scope: IN) -> Self {
let mut cloned = self.clone(); let mut cloned = self.clone();
cloned.scopes.push(Rc::new(scope)); cloned.scopes.push(Rc::new(scope));
cloned cloned
} }
} }
impl OutputScope for MultiOutputScope { impl OutputScope for MultiOutputScope {