Skip to content

Commit

Permalink
Add full parameter to summary tiles.
Browse files Browse the repository at this point in the history
  • Loading branch information
elliottslaughter committed Jun 23, 2023
1 parent 0168de8 commit 97011d8
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 19 deletions.
2 changes: 1 addition & 1 deletion src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ impl Summary {
for tile_id in config.request_tiles(cx.view_interval) {
config
.data_source
.fetch_summary_tile(&self.entry_id, tile_id);
.fetch_summary_tile(&self.entry_id, tile_id, false);
self.tiles.insert(tile_id, None);
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/archive_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,8 @@ impl<T: DeferredDataSource> DataSourceArchiveWriter<T> {
match entry_id.last_index().unwrap() {
EntryIndex::Summary => {
for tile_id in tile_ids {
self.data_source.fetch_summary_tile(entry_id, *tile_id);
self.data_source
.fetch_summary_tile(entry_id, *tile_id, full);
}
}
EntryIndex::Slot(..) => {
Expand Down
18 changes: 14 additions & 4 deletions src/data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,15 +207,20 @@ pub struct SlotMetaTile {

pub trait DataSource {
fn fetch_info(&self) -> DataSourceInfo;
fn fetch_summary_tile(&self, entry_id: &EntryID, tile_id: TileID) -> SummaryTile;
fn fetch_summary_tile(&self, entry_id: &EntryID, tile_id: TileID, full: bool) -> SummaryTile;
fn fetch_slot_tile(&self, entry_id: &EntryID, tile_id: TileID, full: bool) -> SlotTile;
fn fetch_slot_meta_tile(&self, entry_id: &EntryID, tile_id: TileID, full: bool)
-> SlotMetaTile;
}

pub trait DataSourceMut {
fn fetch_info(&mut self) -> DataSourceInfo;
fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) -> SummaryTile;
fn fetch_summary_tile(
&mut self,
entry_id: &EntryID,
tile_id: TileID,
full: bool,
) -> SummaryTile;
fn fetch_slot_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) -> SlotTile;
fn fetch_slot_meta_tile(
&mut self,
Expand All @@ -229,8 +234,13 @@ impl<T: DataSource> DataSourceMut for T {
fn fetch_info(&mut self) -> DataSourceInfo {
DataSource::fetch_info(self)
}
fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) -> SummaryTile {
DataSource::fetch_summary_tile(self, entry_id, tile_id)
fn fetch_summary_tile(
&mut self,
entry_id: &EntryID,
tile_id: TileID,
full: bool,
) -> SummaryTile {
DataSource::fetch_summary_tile(self, entry_id, tile_id, full)
}
fn fetch_slot_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) -> SlotTile {
DataSource::fetch_slot_tile(self, entry_id, tile_id, full)
Expand Down
14 changes: 7 additions & 7 deletions src/deferred_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use crate::data::{
pub trait DeferredDataSource {
fn fetch_info(&mut self);
fn get_infos(&mut self) -> Vec<DataSourceInfo>;
fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID);
fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool);
fn get_summary_tiles(&mut self) -> Vec<SummaryTile>;
fn fetch_slot_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool);
fn get_slot_tiles(&mut self) -> Vec<SlotTile>;
Expand Down Expand Up @@ -42,9 +42,9 @@ impl<T: DataSourceMut> DeferredDataSource for DeferredDataSourceWrapper<T> {
std::mem::take(&mut self.infos)
}

fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) {
fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) {
self.summary_tiles
.push(self.data_source.fetch_summary_tile(entry_id, tile_id));
.push(self.data_source.fetch_summary_tile(entry_id, tile_id, full));
}

fn get_summary_tiles(&mut self) -> Vec<SummaryTile> {
Expand Down Expand Up @@ -112,9 +112,9 @@ impl<T: DeferredDataSource> DeferredDataSource for CountingDeferredDataSource<T>
self.finish_request(result)
}

fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) {
fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) {
self.start_request();
self.data_source.fetch_summary_tile(entry_id, tile_id)
self.data_source.fetch_summary_tile(entry_id, tile_id, full)
}

fn get_summary_tiles(&mut self) -> Vec<SummaryTile> {
Expand Down Expand Up @@ -153,8 +153,8 @@ impl DeferredDataSource for Box<dyn DeferredDataSource> {
self.as_mut().get_infos()
}

fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) {
self.as_mut().fetch_summary_tile(entry_id, tile_id)
fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) {
self.as_mut().fetch_summary_tile(entry_id, tile_id, full)
}

fn get_summary_tiles(&mut self) -> Vec<SummaryTile> {
Expand Down
5 changes: 3 additions & 2 deletions src/http/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,14 @@ impl DeferredDataSource for HTTPClientDataSource {
std::mem::take(&mut self.infos.lock().unwrap())
}

fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) {
fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) {
let req = TileRequestRef { entry_id, tile_id };
let url = self
let mut url = self
.baseurl
.join("summary_tile/")
.and_then(|u| u.join(&req.to_slug()))
.expect("invalid baseurl");
url.set_query(Some(&format!("full={}", full)));
self.request::<SummaryTile>(url, self.summary_tiles.clone());
}

Expand Down
3 changes: 2 additions & 1 deletion src/http/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,15 @@ async fn fetch_info(state: web::Data<AppState>) -> Result<impl Responder> {
#[get("/summary_tile/{entry_id}/{tile_id}")]
async fn fetch_summary_tile(
path: web::Path<TileRequestPath>,
query: web::Query<TileQuery>,
state: web::Data<AppState>,
) -> Result<impl Responder> {
let path = path
.parse()
.map_err(|e| error::ErrorBadRequest(format!("bad request: {}", e)))?;
let result = state
.data_source
.fetch_summary_tile(&path.entry_id, path.tile_id);
.fetch_summary_tile(&path.entry_id, path.tile_id, query.full);
encode(result)
}

Expand Down
7 changes: 6 additions & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,12 @@ impl DataSourceMut for RandomDataSource {
self.info.clone()
}

fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) -> SummaryTile {
fn fetch_summary_tile(
&mut self,
entry_id: &EntryID,
tile_id: TileID,
_full: bool,
) -> SummaryTile {
let utilization = self.generate_summary(entry_id);

let mut tile_utilization = Vec::new();
Expand Down
4 changes: 2 additions & 2 deletions src/parallel_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ impl<T: DataSource + Send + Sync + 'static> DeferredDataSource for ParallelDefer
std::mem::take(&mut self.infos.lock().unwrap())
}

fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) {
fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) {
let entry_id = entry_id.clone();
let data_source = self.data_source.clone();
let summary_tiles = self.summary_tiles.clone();
rayon::spawn(move || {
let result = data_source.fetch_summary_tile(&entry_id, tile_id);
let result = data_source.fetch_summary_tile(&entry_id, tile_id, full);
summary_tiles.lock().unwrap().push(result);
});
}
Expand Down

0 comments on commit 97011d8

Please sign in to comment.