36 lines
634 B
Go
36 lines
634 B
Go
package logs
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
)
|
|
|
|
func ReadOffsets(path string) (map[string]int64, error) {
|
|
data, err := os.ReadFile(path)
|
|
if err != nil {
|
|
if os.IsNotExist(err) {
|
|
return map[string]int64{}, nil
|
|
}
|
|
return nil, err
|
|
}
|
|
out := map[string]int64{}
|
|
if len(data) == 0 {
|
|
return out, nil
|
|
}
|
|
if err := json.Unmarshal(data, &out); err != nil {
|
|
return nil, err
|
|
}
|
|
return out, nil
|
|
}
|
|
|
|
func WriteOffsets(path string, offsets map[string]int64) error {
|
|
if offsets == nil {
|
|
offsets = map[string]int64{}
|
|
}
|
|
data, err := json.Marshal(offsets)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return os.WriteFile(path, data, 0o600)
|
|
}
|