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

Method put_change

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

Source from the content-addressed store, hash-verified

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