1616package libraries
1717
1818import (
19- "bytes"
2019 "encoding/binary"
2120 "errors"
2221 "fmt"
@@ -93,18 +92,17 @@ func (library *Library) String() string {
9392 return library .Name + "@" + library .Version .String ()
9493}
9594
96- func (library * Library ) MarshalBinary () ([]byte , error ) {
97- buffer := bytes .NewBuffer (make ([]byte , 0 , 4096 ))
95+ func (library * Library ) MarshalBinary (out io.Writer ) error {
9896 writeString := func (in string ) error {
9997 inBytes := []byte (in )
100- if err := binary .Write (buffer , binary .NativeEndian , uint16 (len (inBytes ))); err != nil {
98+ if err := binary .Write (out , binary .NativeEndian , uint16 (len (inBytes ))); err != nil {
10199 return err
102100 }
103- _ , err := buffer .Write (inBytes )
101+ _ , err := out .Write (inBytes )
104102 return err
105103 }
106104 writeStringArray := func (in []string ) error {
107- if err := binary .Write (buffer , binary .NativeEndian , uint16 (len (in ))); err != nil {
105+ if err := binary .Write (out , binary .NativeEndian , uint16 (len (in ))); err != nil {
108106 return err
109107 }
110108 for _ , i := range in {
@@ -115,14 +113,14 @@ func (library *Library) MarshalBinary() ([]byte, error) {
115113 return nil
116114 }
117115 writeMap := func (in map [string ]bool ) error {
118- if err := binary .Write (buffer , binary .NativeEndian , uint16 (len (in ))); err != nil {
116+ if err := binary .Write (out , binary .NativeEndian , uint16 (len (in ))); err != nil {
119117 return err
120118 }
121119 for k , v := range in {
122120 if err := writeString (k ); err != nil {
123121 return err
124122 }
125- if err := binary .Write (buffer , binary .NativeEndian , v ); err != nil {
123+ if err := binary .Write (out , binary .NativeEndian , v ); err != nil {
126124 return err
127125 }
128126 }
@@ -136,89 +134,89 @@ func (library *Library) MarshalBinary() ([]byte, error) {
136134 }
137135 }
138136 if err := writeString (library .Name ); err != nil {
139- return nil , err
137+ return err
140138 }
141139 if err := writeString (library .Author ); err != nil {
142- return nil , err
140+ return err
143141 }
144142 if err := writeString (library .Maintainer ); err != nil {
145- return nil , err
143+ return err
146144 }
147145 if err := writeString (library .Sentence ); err != nil {
148- return nil , err
146+ return err
149147 }
150148 if err := writeString (library .Paragraph ); err != nil {
151- return nil , err
149+ return err
152150 }
153151 if err := writeString (library .Website ); err != nil {
154- return nil , err
152+ return err
155153 }
156154 if err := writeString (library .Category ); err != nil {
157- return nil , err
155+ return err
158156 }
159157 if err := writeStringArray (library .Architectures ); err != nil {
160- return nil , err
158+ return err
161159 }
162160 if err := writeStringArray (library .Types ); err != nil {
163- return nil , err
161+ return err
164162 }
165163 if err := writePath (library .InstallDir ); err != nil {
166- return nil , err
164+ return err
167165 }
168166 if err := writeString (library .DirName ); err != nil {
169- return nil , err
167+ return err
170168 }
171169 if err := writePath (library .SourceDir ); err != nil {
172- return nil , err
170+ return err
173171 }
174172 if err := writePath (library .UtilityDir ); err != nil {
175- return nil , err
173+ return err
176174 }
177- if err := binary .Write (buffer , binary .NativeEndian , int32 (library .Location )); err != nil {
178- return nil , err
175+ if err := binary .Write (out , binary .NativeEndian , int32 (library .Location )); err != nil {
176+ return err
179177 }
180178 // library.ContainerPlatform *cores.PlatformRelease `json:""`
181- if err := binary .Write (buffer , binary .NativeEndian , int32 (library .Layout )); err != nil {
182- return nil , err
179+ if err := binary .Write (out , binary .NativeEndian , int32 (library .Layout )); err != nil {
180+ return err
183181 }
184- if err := binary .Write (buffer , binary .NativeEndian , library .DotALinkage ); err != nil {
185- return nil , err
182+ if err := binary .Write (out , binary .NativeEndian , library .DotALinkage ); err != nil {
183+ return err
186184 }
187- if err := binary .Write (buffer , binary .NativeEndian , library .Precompiled ); err != nil {
188- return nil , err
185+ if err := binary .Write (out , binary .NativeEndian , library .Precompiled ); err != nil {
186+ return err
189187 }
190- if err := binary .Write (buffer , binary .NativeEndian , library .PrecompiledWithSources ); err != nil {
191- return nil , err
188+ if err := binary .Write (out , binary .NativeEndian , library .PrecompiledWithSources ); err != nil {
189+ return err
192190 }
193191 if err := writeString (library .LDflags ); err != nil {
194- return nil , err
192+ return err
195193 }
196- if err := binary .Write (buffer , binary .NativeEndian , library .IsLegacy ); err != nil {
197- return nil , err
194+ if err := binary .Write (out , binary .NativeEndian , library .IsLegacy ); err != nil {
195+ return err
198196 }
199- if err := binary .Write (buffer , binary .NativeEndian , library .InDevelopment ); err != nil {
200- return nil , err
197+ if err := binary .Write (out , binary .NativeEndian , library .InDevelopment ); err != nil {
198+ return err
201199 }
202200 if err := writeString (library .Version .String ()); err != nil {
203- return nil , err
201+ return err
204202 }
205203 if err := writeString (library .License ); err != nil {
206- return nil , err
204+ return err
207205 }
208206 //writeStringArray(library.Properties.AsSlice())
209207 if err := writeStringArray (library .Examples .AsStrings ()); err != nil {
210- return nil , err
208+ return err
211209 }
212210 if err := writeStringArray (library .declaredHeaders ); err != nil {
213- return nil , err
211+ return err
214212 }
215213 if err := writeStringArray (library .sourceHeaders ); err != nil {
216- return nil , err
214+ return err
217215 }
218216 if err := writeMap (library .CompatibleWith ); err != nil {
219- return nil , err
217+ return err
220218 }
221- return buffer . Bytes (), nil
219+ return nil
222220}
223221
224222func (library * Library ) UnmarshalBinary (in io.Reader ) error {
0 commit comments