| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 // Copyright 2017 The LUCI Authors. All rights reserved. | 
|  | 2 // Use of this source code is governed under the Apache License, Version 2.0 | 
|  | 3 // that can be found in the LICENSE file. | 
|  | 4 | 
|  | 5 package model | 
|  | 6 | 
|  | 7 import ( | 
|  | 8         "bytes" | 
|  | 9 | 
|  | 10         ds "github.com/luci/gae/service/datastore" | 
|  | 11         "github.com/luci/luci-go/common/data/cmpbin" | 
|  | 12 ) | 
|  | 13 | 
|  | 14 // ManifestLink is an in-MILO link to a named source manifest. | 
|  | 15 type ManifestLink struct { | 
|  | 16         // The name of the manifest as the build annotated it. | 
|  | 17         Name string | 
|  | 18 | 
|  | 19         // The manifest ID (sha256). | 
|  | 20         ID []byte | 
|  | 21 } | 
|  | 22 | 
|  | 23 var _ ds.PropertyConverter = (*ManifestLink)(nil) | 
|  | 24 | 
|  | 25 // FromProperty implements ds.PropertyConverter | 
|  | 26 func (m *ManifestLink) FromProperty(p ds.Property) (err error) { | 
|  | 27         val, err := p.Project(ds.PTBytes) | 
|  | 28         if err != nil { | 
|  | 29                 return err | 
|  | 30         } | 
|  | 31         buf := bytes.NewReader(val.([]byte)) | 
|  | 32         if m.Name, _, err = cmpbin.ReadString(buf); err != nil { | 
|  | 33                 return | 
|  | 34         } | 
|  | 35         m.ID, _, err = cmpbin.ReadBytes(buf) | 
|  | 36         return | 
|  | 37 } | 
|  | 38 | 
|  | 39 // ToProperty implements ds.PropertyConverter | 
|  | 40 func (m *ManifestLink) ToProperty() (ds.Property, error) { | 
|  | 41         buf := bytes.NewBuffer(nil) | 
|  | 42         cmpbin.WriteString(buf, m.Name) | 
|  | 43         cmpbin.WriteBytes(buf, m.ID) | 
|  | 44         return ds.MkProperty(buf.Bytes()), nil | 
|  | 45 } | 
| OLD | NEW | 
|---|