Browse Source

analytics serve

pull/25/head
Alexey Velikiy 3 years ago
parent
commit
48ad739d0b
  1. 27
      server/src/api/mod.rs
  2. 1
      server/src/services/analytic_service/analytic_client.rs
  3. 1
      server/src/services/analytic_service/analytic_service.rs

27
server/src/api/mod.rs

@ -31,9 +31,8 @@ pub struct API<'a> {
config: &'a Config, config: &'a Config,
user_service: Arc<RwLock<user_service::UserService>>, user_service: Arc<RwLock<user_service::UserService>>,
metric_service: metric_service::MetricService, metric_service: metric_service::MetricService,
data_service: segments_service::SegmentsService, segments_service: segments_service::SegmentsService,
// TODO: get analytic service as reference and create it in main
analytic_service: AnalyticService,
} }
impl API<'_> { impl API<'_> {
@ -45,8 +44,7 @@ impl API<'_> {
config: config, config: config,
user_service: Arc::new(RwLock::new(user_service::UserService::new())), user_service: Arc::new(RwLock::new(user_service::UserService::new())),
metric_service: ms.clone(), metric_service: ms.clone(),
data_service: ss.clone(), segments_service: ss.clone(),
analytic_service: AnalyticService::new(ms, ss),
}) })
} }
@ -72,6 +70,9 @@ impl API<'_> {
} }
pub async fn serve(&self) { pub async fn serve(&self) {
let mut analytic_service = AnalyticService::new(self.metric_service.clone(), self.segments_service.clone());
let not_found = let not_found =
warp::any().map(|| warp::reply::with_status("Not found", StatusCode::NOT_FOUND)); warp::any().map(|| warp::reply::with_status("Not found", StatusCode::NOT_FOUND));
let options = warp::any().and(options()).map(|| { let options = warp::any().and(options()).map(|| {
@ -82,10 +83,10 @@ impl API<'_> {
let metrics = metric::get_route(self.metric_service.clone()); let metrics = metric::get_route(self.metric_service.clone());
let login = auth::get_route(self.user_service.clone()); let login = auth::get_route(self.user_service.clone());
let segments = segments::filters::filters( let segments = segments::filters::filters(
self.data_service.clone(), self.segments_service.clone(),
self.analytic_service.get_client(), analytic_service.get_client(),
); );
let analytics = analytics::filters::filters(self.analytic_service.get_client()); let analytics = analytics::filters::filters(analytic_service.get_client());
let public = warp::fs::dir("public"); let public = warp::fs::dir("public");
println!("Start server on {} port", self.config.port); println!("Start server on {} port", self.config.port);
@ -94,8 +95,12 @@ impl API<'_> {
.and(login.or(metrics).or(segments).or(analytics).or(options)) .and(login.or(metrics).or(segments).or(analytics).or(options))
.or(public) .or(public)
.or(not_found); .or(not_found);
warp::serve(routes)
.run(([127, 0, 0, 1], self.config.port)) let s1= analytic_service.serve();
.await; let s2 = warp::serve(routes)
.run(([127, 0, 0, 1], self.config.port));
futures::future::join(s1, s2).await;
} }
} }

1
server/src/services/analytic_service/analytic_client.rs

@ -27,6 +27,7 @@ impl AnalyticClient {
pub async fn get_status(&self) -> anyhow::Result<LearningStatus> { pub async fn get_status(&self) -> anyhow::Result<LearningStatus> {
let (tx, rx) = oneshot::channel(); let (tx, rx) = oneshot::channel();
let req = AnalyticServiceMessage::Request(RequestType::GetStatus(tx)); let req = AnalyticServiceMessage::Request(RequestType::GetStatus(tx));
self.tx.send(req).await?;
let r = rx.await?; let r = rx.await?;
Ok(r) Ok(r)
} }

1
server/src/services/analytic_service/analytic_service.rs

@ -50,6 +50,7 @@ impl AnalyticService {
tx, tx,
rx, rx,
} }
} }
pub fn get_client(&self) -> AnalyticClient { pub fn get_client(&self) -> AnalyticClient {

Loading…
Cancel
Save