Generate and apply patches, routing them through message queue

This commit is contained in:
Lucien Greathouse
2019-10-01 13:59:10 -07:00
parent 5b7037550d
commit 3dff4d1061

View File

@@ -64,22 +64,23 @@ impl ChangeProcessor {
log::trace!("Imfs event: {:?}", event); log::trace!("Imfs event: {:?}", event);
let patch_set = { let applied_patches = {
let mut imfs = imfs.lock().unwrap(); let mut imfs = imfs.lock().unwrap();
imfs.commit_change(&event).expect("Error applying IMFS change"); imfs.commit_change(&event).expect("Error applying IMFS change");
let tree = tree.lock().unwrap(); let mut tree = tree.lock().unwrap();
let mut applied_patches = Vec::new();
match event { match event {
ImfsEvent::Created(path) | ImfsEvent::Modified(path) | ImfsEvent::Removed(path) => { ImfsEvent::Created(path) | ImfsEvent::Modified(path) | ImfsEvent::Removed(path) => {
let affected_ids = tree.get_ids_at_path(&path); let affected_ids = tree.get_ids_at_path(&path).to_vec();
if affected_ids.len() == 0 { if affected_ids.len() == 0 {
log::info!("No instances were affected by this change."); log::info!("No instances were affected by this change.");
continue; continue;
} }
for &id in affected_ids { for id in affected_ids {
let metadata = tree.get_metadata(id) let metadata = tree.get_metadata(id)
.expect("metadata missing for instance present in tree"); .expect("metadata missing for instance present in tree");
@@ -100,7 +101,14 @@ impl ChangeProcessor {
.expect("snapshot failed") .expect("snapshot failed")
.expect("snapshot did not return an instance"); .expect("snapshot did not return an instance");
println!("Snapshot: {:?}", snapshot); log::trace!("Computed snapshot: {:#?}", snapshot);
let patch_set = compute_patch_set(&snapshot, &tree, id);
let applied_patch_set = apply_patch_set(&mut tree, patch_set);
log::trace!("Applied patch: {:#?}", applied_patch_set);
applied_patches.push(applied_patch_set);
} }
} }
ImfsEvent::Removed(path) => { ImfsEvent::Removed(path) => {
@@ -108,13 +116,11 @@ impl ChangeProcessor {
} }
} }
// TODO: Apply changes to tree based on IMFS and applied_patches
// calculate applied patch set from it.
AppliedPatchSet::new()
}; };
{ {
message_queue.push_messages(&[patch_set]); message_queue.push_messages(&applied_patches);
} }
}, },
recv(shutdown_receiver) -> _ => { recv(shutdown_receiver) -> _ => {