MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / put_change

Method put_change

atomic-core/src/pristine/txn/write/mod.rs:986–1027  ·  view source on GitHub ↗
(
        &mut self,
        view: &mut ViewState,
        change_id: NodeId,
        change_hash: &Hash,
    )

Source from the content-addressed store, hash-verified

984 }
985
986 fn put_change(
987 &mut self,
988 view: &mut ViewState,
989 change_id: NodeId,
990 change_hash: &Hash,
991 ) -> PristineResult<u64> {
992 let seq = view.change_count;
993
994 // Add to change log
995 {
996 let mut table = self.txn.open_table(VIEW_CHANGES)?;
997 let key = encode_view_seq(view.id, seq);
998 table.insert(&key, change_id.get())?;
999 }
1000
1001 // Add reverse mapping
1002 {
1003 let mut table = self.txn.open_table(REV_VIEW_CHANGES)?;
1004 let key = encode_view_seq(view.id, change_id.get());
1005 table.insert(&key, seq)?;
1006 }
1007
1008 // Update merkle state
1009 view.state = view.state.next(change_hash);
1010 view.change_count += 1;
1011
1012 // Store the merkle state at this sequence
1013 {
1014 let mut table = self.txn.open_table(MERKLE_CHAIN)?;
1015 let key = encode_view_seq(view.id, seq);
1016 table.insert(&key, view.state.as_bytes())?;
1017 }
1018
1019 // Store state -> sequence mapping
1020 {
1021 let mut table = self.txn.open_table(STATES)?;
1022 let key = encode_view_merkle(view.id, view.state.as_bytes());
1023 table.insert(&key, seq)?;
1024 }
1025
1026 Ok(seq)
1027 }
1028
1029 fn del_change(
1030 &mut self,

Callers 12

test_view_operationsFunction · 0.80
test_del_viewFunction · 0.80
test_del_changeFunction · 0.80
test_reinsert_changeFunction · 0.80
create_view_fromMethod · 0.80
write_change_to_graphFunction · 0.80

Calls 6

encode_view_seqFunction · 0.85
encode_view_merkleFunction · 0.85
getMethod · 0.65
insertMethod · 0.45
nextMethod · 0.45
as_bytesMethod · 0.45

Tested by 8

test_view_operationsFunction · 0.64
test_del_viewFunction · 0.64
test_del_changeFunction · 0.64
test_reinsert_changeFunction · 0.64