github.com/cloudfoundry-attic/garden-linux@v0.333.2-candidate/port_pool/state.go (about) 1 package port_pool 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "os" 7 ) 8 9 type State struct { 10 Offset uint32 `json:"offset"` 11 } 12 13 func LoadState(filePath string) (State, error) { 14 stateFile, err := os.Open(filePath) 15 if err != nil { 16 return State{}, fmt.Errorf("openning state file: %s", err) 17 } 18 defer stateFile.Close() 19 20 var state State 21 if err := json.NewDecoder(stateFile).Decode(&state); err != nil { 22 return State{}, fmt.Errorf("parsing state file: %s", err) 23 } 24 25 return state, nil 26 } 27 28 func SaveState(filePath string, state State) error { 29 stateFile, err := os.Create(filePath) 30 if err != nil { 31 return fmt.Errorf("creating state file: %s", err) 32 } 33 defer stateFile.Close() 34 35 json.NewEncoder(stateFile).Encode(state) 36 return nil 37 }