소스 검색

image: stream img JSON & Decode in LoadImage

Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)
unclejack 10 년 전
부모
커밋
4dbbe4f51a
1개의 변경된 파일7개의 추가작업 그리고 3개의 파일을 삭제
  1. 7 3
      image/image.go

+ 7 - 3
image/image.go

@@ -38,14 +38,18 @@ type Image struct {
 }
 }
 
 
 func LoadImage(root string) (*Image, error) {
 func LoadImage(root string) (*Image, error) {
-	// Load the json data
-	jsonData, err := ioutil.ReadFile(jsonPath(root))
+	// Open the JSON file to decode by streaming
+	jsonSource, err := os.Open(jsonPath(root))
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
+	defer jsonSource.Close()
+
 	img := &Image{}
 	img := &Image{}
+	dec := json.NewDecoder(jsonSource)
 
 
-	if err := json.Unmarshal(jsonData, img); err != nil {
+	// Decode the JSON data
+	if err := dec.Decode(img); err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
 	if err := utils.ValidateID(img.ID); err != nil {
 	if err := utils.ValidateID(img.ID); err != nil {