github.com/avahowell/sia@v0.5.1-beta.0.20160524050156-83dcc3d37c94/modules/renter/contractor/persist.go (about) 1 package contractor 2 3 import ( 4 "github.com/NebulousLabs/Sia/modules" 5 "github.com/NebulousLabs/Sia/types" 6 ) 7 8 // contractorPersist defines what Contractor data persists across sessions. 9 type contractorPersist struct { 10 Allowance modules.Allowance 11 BlockHeight types.BlockHeight 12 Contracts []modules.RenterContract 13 LastChange modules.ConsensusChangeID 14 RenewHeight types.BlockHeight 15 // metrics 16 DownloadSpending types.Currency 17 StorageSpending types.Currency 18 UploadSpending types.Currency 19 } 20 21 // persistData returns the data in the Contractor that will be saved to disk. 22 func (c *Contractor) persistData() contractorPersist { 23 data := contractorPersist{ 24 Allowance: c.allowance, 25 BlockHeight: c.blockHeight, 26 LastChange: c.lastChange, 27 RenewHeight: c.renewHeight, 28 DownloadSpending: c.downloadSpending, 29 StorageSpending: c.storageSpending, 30 UploadSpending: c.uploadSpending, 31 } 32 for _, contract := range c.contracts { 33 data.Contracts = append(data.Contracts, contract) 34 } 35 return data 36 } 37 38 // load loads the Contractor persistence data from disk. 39 func (c *Contractor) load() error { 40 var data contractorPersist 41 err := c.persist.load(&data) 42 if err != nil { 43 return err 44 } 45 c.allowance = data.Allowance 46 c.blockHeight = data.BlockHeight 47 for _, contract := range data.Contracts { 48 c.contracts[contract.ID] = contract 49 } 50 c.lastChange = data.LastChange 51 c.renewHeight = data.RenewHeight 52 c.downloadSpending = data.DownloadSpending 53 c.storageSpending = data.StorageSpending 54 c.uploadSpending = data.UploadSpending 55 return nil 56 } 57 58 // save saves the Contractor persistence data to disk. 59 func (c *Contractor) save() error { 60 return c.persist.save(c.persistData()) 61 } 62 63 // saveSync saves the Contractor persistence data to disk and then syncs to disk. 64 func (c *Contractor) saveSync() error { 65 return c.persist.saveSync(c.persistData()) 66 }