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

Method put_change

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

Source from the content-addressed store, hash-verified

510 }
511
512 fn put_change(
513 &mut self,
514 view: &mut ViewState,
515 change_id: NodeId,
516 change_hash: &Hash,
517 ) -> PristineResult<u64> {
518 let seq = view.change_count;
519
520 // Add to change log
521 {
522 let mut table = self.txn.open_table(VIEW_CHANGES)?;
523 let key = encode_view_seq(view.id, seq);
524 table.insert(&key, change_id.get())?;
525 }
526
527 // Add reverse mapping
528 {
529 let mut table = self.txn.open_table(REV_VIEW_CHANGES)?;
530 let key = encode_view_seq(view.id, change_id.get());
531 table.insert(&key, seq)?;
532 }
533
534 // Update merkle state
535 view.state = view.state.next(change_hash);
536 view.change_count += 1;
537
538 // Store the merkle state at this sequence
539 {
540 let mut table = self.txn.open_table(MERKLE_CHAIN)?;
541 let key = encode_view_seq(view.id, seq);
542 table.insert(&key, view.state.as_bytes())?;
543 }
544
545 // Store state -> sequence mapping
546 {
547 let mut table = self.txn.open_table(STATES)?;
548 let key = encode_view_merkle(view.id, view.state.as_bytes());
549 table.insert(&key, seq)?;
550 }
551
552 Ok(seq)
553 }
554
555 fn del_change(
556 &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