MCPcopy
hub / github.com/hyperledger/fabric / Next

Method Next

core/transientstore/store.go:507–550  ·  view source on GitHub ↗

Next moves the iterator to the next key/value pair. It returns when the iterator is exhausted.

()

Source from the content-addressed store, hash-verified

505// Next moves the iterator to the next key/value pair.
506// It returns <nil, nil> when the iterator is exhausted.
507func (scanner *RwsetScanner) Next() (*EndorserPvtSimulationResults, error) {
508 if !scanner.dbItr.Next() {
509 return nil, nil
510 }
511 dbKey := scanner.dbItr.Key()
512 dbVal := scanner.dbItr.Value()
513 _, blockHeight, err := splitCompositeKeyOfPvtRWSet(dbKey)
514 if err != nil {
515 return nil, err
516 }
517
518 txPvtRWSet := &rwset.TxPvtReadWriteSet{}
519 txPvtRWSetWithConfig := &transientstore.TxPvtReadWriteSetWithConfigInfo{}
520
521 var filteredTxPvtRWSet *rwset.TxPvtReadWriteSet
522 if dbVal[0] == nilByte {
523 // new proto, i.e., TxPvtReadWriteSetWithConfigInfo
524 if err := proto.Unmarshal(dbVal[1:], txPvtRWSetWithConfig); err != nil {
525 return nil, err
526 }
527
528 // trim the tx rwset based on the current collection filter,
529 // nil will be returned to filteredTxPvtRWSet if the transient store txid entry does not contain the data for the collection
530 filteredTxPvtRWSet = trimPvtWSet(txPvtRWSetWithConfig.GetPvtRwset(), scanner.filter)
531 configs, err := trimPvtCollectionConfigs(txPvtRWSetWithConfig.CollectionConfigs, scanner.filter)
532 if err != nil {
533 return nil, err
534 }
535 txPvtRWSetWithConfig.CollectionConfigs = configs
536 } else {
537 // old proto, i.e., TxPvtReadWriteSet
538 if err := proto.Unmarshal(dbVal, txPvtRWSet); err != nil {
539 return nil, err
540 }
541 filteredTxPvtRWSet = trimPvtWSet(txPvtRWSet, scanner.filter)
542 }
543
544 txPvtRWSetWithConfig.PvtRwset = filteredTxPvtRWSet
545
546 return &EndorserPvtSimulationResults{
547 ReceivedAtBlockHeight: blockHeight,
548 PvtSimulationResultsWithConfig: txPvtRWSetWithConfig,
549 }, nil
550}
551
552// Close releases resource held by the iterator
553func (scanner *RwsetScanner) Close() {

Callers

nothing calls this directly

Calls 7

trimPvtWSetFunction · 0.85
trimPvtCollectionConfigsFunction · 0.85
NextMethod · 0.65
KeyMethod · 0.65
ValueMethod · 0.65
UnmarshalMethod · 0.65

Tested by

no test coverage detected