Skip to content

Commit

Permalink
Add TelemetryPolicy
Browse files Browse the repository at this point in the history
  • Loading branch information
heaths committed Apr 7, 2021
1 parent 68c423f commit 9c6cb76
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
2 changes: 2 additions & 0 deletions sdk/core/src/policies/mod.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
mod retry_policy;
mod telemetry_policy;

pub use retry_policy::{RetryOptions, RetryPolicy};
pub use telemetry_policy::{TelemetryOptions, TelemetryPolicy};
3 changes: 2 additions & 1 deletion sdk/core/src/policies/retry_policy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,14 @@ impl Policy for RetryPolicy {
request: &mut Request,
next: &[Arc<dyn Policy>],
) -> PolicyResult<Response> {
let retries = self.options.num_retries;
let mut retries = self.options.num_retries;
let mut last_result = next[0].send(ctx.clone(), request, &next[1..]).await;
loop {
if last_result.is_ok() || retries == 0 {
return last_result;
}

retries -= 1usize;
last_result = next[0].send(ctx.clone(), request, &next[1..]).await;
}
}
Expand Down
39 changes: 39 additions & 0 deletions sdk/core/src/policies/telemetry_policy.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
use crate::{Context, Policy, PolicyResult, Request, Response};

use async_trait::async_trait;
use std::sync::Arc;

#[derive(Clone, Debug)]
pub struct TelemetryOptions {
application_id: Option<String>,
}

impl TelemetryOptions {
pub fn new(application_id: Option<String>) -> Self {
Self { application_id }
}
}

#[derive(Clone, Debug)]
pub struct TelemetryPolicy {
options: TelemetryOptions,
}

impl TelemetryPolicy {
pub fn new(options: TelemetryOptions) -> Self {
Self { options }
}
}

#[async_trait]
impl Policy for TelemetryPolicy {
async fn send(
&self,
ctx: Context,
request: &mut Request,
next: &[Arc<dyn Policy>],
) -> PolicyResult<Response> {
// TODO
next[0].send(ctx.clone(), request, &next[1..]).await
}
}

0 comments on commit 9c6cb76

Please sign in to comment.