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 }