1616package libraries
1717
1818import (
19- "bytes"
2019"encoding/binary"
2120"errors"
2221"fmt"
@@ -93,18 +92,17 @@ func (library *Library) String() string {
9392return 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 {
9896writeString := func (in string )error {
9997inBytes := []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 {
10199return err
102100}
103- _ ,err := buffer .Write (inBytes )
101+ _ ,err := out .Write (inBytes )
104102return err
105103}
106104writeStringArray := 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 {
108106return err
109107}
110108for _ ,i := range in {
@@ -115,14 +113,14 @@ func (library *Library) MarshalBinary() ([]byte, error) {
115113return nil
116114}
117115writeMap := 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 {
119117return err
120118}
121119for k ,v := range in {
122120if err := writeString (k );err != nil {
123121return err
124122}
125- if err := binary .Write (buffer ,binary .NativeEndian ,v );err != nil {
123+ if err := binary .Write (out ,binary .NativeEndian ,v );err != nil {
126124return err
127125}
128126}
@@ -136,89 +134,89 @@ func (library *Library) MarshalBinary() ([]byte, error) {
136134}
137135}
138136if err := writeString (library .Name );err != nil {
139- return nil , err
137+ return err
140138}
141139if err := writeString (library .Author );err != nil {
142- return nil , err
140+ return err
143141}
144142if err := writeString (library .Maintainer );err != nil {
145- return nil , err
143+ return err
146144}
147145if err := writeString (library .Sentence );err != nil {
148- return nil , err
146+ return err
149147}
150148if err := writeString (library .Paragraph );err != nil {
151- return nil , err
149+ return err
152150}
153151if err := writeString (library .Website );err != nil {
154- return nil , err
152+ return err
155153}
156154if err := writeString (library .Category );err != nil {
157- return nil , err
155+ return err
158156}
159157if err := writeStringArray (library .Architectures );err != nil {
160- return nil , err
158+ return err
161159}
162160if err := writeStringArray (library .Types );err != nil {
163- return nil , err
161+ return err
164162}
165163if err := writePath (library .InstallDir );err != nil {
166- return nil , err
164+ return err
167165}
168166if err := writeString (library .DirName );err != nil {
169- return nil , err
167+ return err
170168}
171169if err := writePath (library .SourceDir );err != nil {
172- return nil , err
170+ return err
173171}
174172if 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}
193191if 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}
202200if err := writeString (library .Version .String ());err != nil {
203- return nil , err
201+ return err
204202}
205203if err := writeString (library .License );err != nil {
206- return nil , err
204+ return err
207205}
208206//writeStringArray(library.Properties.AsSlice())
209207if err := writeStringArray (library .Examples .AsStrings ());err != nil {
210- return nil , err
208+ return err
211209}
212210if err := writeStringArray (library .declaredHeaders );err != nil {
213- return nil , err
211+ return err
214212}
215213if err := writeStringArray (library .sourceHeaders );err != nil {
216- return nil , err
214+ return err
217215}
218216if 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 {