github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/gossip/emitter/prev_action_files.go (about)

     1  package emitter
     2  
     3  import (
     4  	"io"
     5  
     6  	"github.com/unicornultrafoundation/go-helios/hash"
     7  	"github.com/unicornultrafoundation/go-helios/native/idx"
     8  	"github.com/unicornultrafoundation/go-u2u/log"
     9  
    10  	"github.com/unicornultrafoundation/go-u2u/utils"
    11  )
    12  
    13  var openPrevActionFile = utils.OpenFile
    14  
    15  func (em *Emitter) writeLastEmittedEventID(id hash.Event) {
    16  	if em.emittedEventFile == nil {
    17  		return
    18  	}
    19  	_, err := em.emittedEventFile.WriteAt(id.Bytes(), 0)
    20  	if err != nil {
    21  		log.Crit("Failed to write event file", "file", em.config.PrevEmittedEventFile.Path, "err", err)
    22  	}
    23  }
    24  
    25  func (em *Emitter) readLastEmittedEventID() *hash.Event {
    26  	if em.emittedEventFile == nil {
    27  		return nil
    28  	}
    29  	buf := make([]byte, 32)
    30  	_, err := em.emittedEventFile.ReadAt(buf, 0)
    31  	if err != nil {
    32  		if err == io.EOF {
    33  			return nil
    34  		}
    35  		log.Crit("Failed to read event file", "file", em.config.PrevEmittedEventFile.Path, "err", err)
    36  	}
    37  	v := hash.BytesToEvent(buf)
    38  	return &v
    39  }
    40  
    41  func (em *Emitter) writeLastEmittedBlockVotes(b idx.Block) {
    42  	if em.emittedBvsFile == nil {
    43  		return
    44  	}
    45  	_, err := em.emittedBvsFile.WriteAt(b.Bytes(), 0)
    46  	if err != nil {
    47  		log.Crit("Failed to write BVs file", "file", em.config.PrevBlockVotesFile.Path, "err", err)
    48  	}
    49  }
    50  
    51  func (em *Emitter) readLastBlockVotes() *idx.Block {
    52  	if em.emittedBvsFile == nil {
    53  		return nil
    54  	}
    55  	buf := make([]byte, 8)
    56  	_, err := em.emittedBvsFile.ReadAt(buf, 0)
    57  	if err != nil {
    58  		if err == io.EOF {
    59  			return nil
    60  		}
    61  		log.Crit("Failed to read BVs file", "file", em.config.PrevBlockVotesFile.Path, "err", err)
    62  	}
    63  	v := idx.BytesToBlock(buf)
    64  	return &v
    65  }
    66  
    67  func (em *Emitter) writeLastEmittedEpochVote(e idx.Epoch) {
    68  	if em.emittedEvFile == nil {
    69  		return
    70  	}
    71  	_, err := em.emittedEvFile.WriteAt(e.Bytes(), 0)
    72  	if err != nil {
    73  		log.Crit("Failed to write BVs file", "file", em.config.PrevEpochVoteFile.Path, "err", err)
    74  	}
    75  }
    76  
    77  func (em *Emitter) readLastEpochVote() *idx.Epoch {
    78  	if em.emittedEvFile == nil {
    79  		return nil
    80  	}
    81  	buf := make([]byte, 4)
    82  	_, err := em.emittedEvFile.ReadAt(buf, 0)
    83  	if err != nil {
    84  		if err == io.EOF {
    85  			return nil
    86  		}
    87  		log.Crit("Failed to read EV file", "file", em.config.PrevEpochVoteFile.Path, "err", err)
    88  	}
    89  	v := idx.BytesToEpoch(buf)
    90  	return &v
    91  }