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

Method put_change

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

Source from the content-addressed store, hash-verified

1078 }
1079
1080 fn put_change(
1081 &mut self,
1082 view: &mut ViewState,
1083 change_id: NodeId,
1084 change_hash: &Hash,
1085 ) -> PristineResult<u64> {
1086 let seq = view.change_count;
1087
1088 // Add to change log
1089 {
1090 let mut table = self.txn.open_table(VIEW_CHANGES)?;
1091 let key = encode_view_seq(view.id, seq);
1092 table.insert(&key, change_id.get())?;
1093 }
1094
1095 // Add reverse mapping
1096 {
1097 let mut table = self.txn.open_table(REV_VIEW_CHANGES)?;
1098 let key = encode_view_seq(view.id, change_id.get());
1099 table.insert(&key, seq)?;
1100 }
1101
1102 // Update merkle state
1103 view.state = view.state.next(change_hash);
1104 view.change_count += 1;
1105
1106 // Store the merkle state at this sequence
1107 {
1108 let mut table = self.txn.open_table(MERKLE_CHAIN)?;
1109 let key = encode_view_seq(view.id, seq);
1110 table.insert(&key, view.state.as_bytes())?;
1111 }
1112
1113 // Store state -> sequence mapping
1114 {
1115 let mut table = self.txn.open_table(STATES)?;
1116 let key = encode_view_merkle(view.id, view.state.as_bytes());
1117 table.insert(&key, seq)?;
1118 }
1119
1120 Ok(seq)
1121 }
1122
1123 fn del_change(
1124 &mut self,

Callers 14

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
split_viewMethod · 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