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  }