16
16
package libraries
17
17
18
18
import (
19
- "bytes"
20
19
"encoding/binary"
21
20
"errors"
22
21
"fmt"
@@ -93,18 +92,17 @@ func (library *Library) String() string {
93
92
return library .Name + "@" + library .Version .String ()
94
93
}
95
94
96
- func (library * Library ) MarshalBinary () ([]byte , error ) {
97
- buffer := bytes .NewBuffer (make ([]byte , 0 , 4096 ))
95
+ func (library * Library ) MarshalBinary (out io.Writer ) error {
98
96
writeString := func (in string ) error {
99
97
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 {
101
99
return err
102
100
}
103
- _ , err := buffer .Write (inBytes )
101
+ _ , err := out .Write (inBytes )
104
102
return err
105
103
}
106
104
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 {
108
106
return err
109
107
}
110
108
for _ , i := range in {
@@ -115,14 +113,14 @@ func (library *Library) MarshalBinary() ([]byte, error) {
115
113
return nil
116
114
}
117
115
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 {
119
117
return err
120
118
}
121
119
for k , v := range in {
122
120
if err := writeString (k ); err != nil {
123
121
return err
124
122
}
125
- if err := binary .Write (buffer , binary .NativeEndian , v ); err != nil {
123
+ if err := binary .Write (out , binary .NativeEndian , v ); err != nil {
126
124
return err
127
125
}
128
126
}
@@ -136,89 +134,89 @@ func (library *Library) MarshalBinary() ([]byte, error) {
136
134
}
137
135
}
138
136
if err := writeString (library .Name ); err != nil {
139
- return nil , err
137
+ return err
140
138
}
141
139
if err := writeString (library .Author ); err != nil {
142
- return nil , err
140
+ return err
143
141
}
144
142
if err := writeString (library .Maintainer ); err != nil {
145
- return nil , err
143
+ return err
146
144
}
147
145
if err := writeString (library .Sentence ); err != nil {
148
- return nil , err
146
+ return err
149
147
}
150
148
if err := writeString (library .Paragraph ); err != nil {
151
- return nil , err
149
+ return err
152
150
}
153
151
if err := writeString (library .Website ); err != nil {
154
- return nil , err
152
+ return err
155
153
}
156
154
if err := writeString (library .Category ); err != nil {
157
- return nil , err
155
+ return err
158
156
}
159
157
if err := writeStringArray (library .Architectures ); err != nil {
160
- return nil , err
158
+ return err
161
159
}
162
160
if err := writeStringArray (library .Types ); err != nil {
163
- return nil , err
161
+ return err
164
162
}
165
163
if err := writePath (library .InstallDir ); err != nil {
166
- return nil , err
164
+ return err
167
165
}
168
166
if err := writeString (library .DirName ); err != nil {
169
- return nil , err
167
+ return err
170
168
}
171
169
if err := writePath (library .SourceDir ); err != nil {
172
- return nil , err
170
+ return err
173
171
}
174
172
if err := writePath (library .UtilityDir ); err != nil {
175
- return nil , err
173
+ return err
176
174
}
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
179
177
}
180
178
// 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
183
181
}
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
186
184
}
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
189
187
}
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
192
190
}
193
191
if err := writeString (library .LDflags ); err != nil {
194
- return nil , err
192
+ return err
195
193
}
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
198
196
}
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
201
199
}
202
200
if err := writeString (library .Version .String ()); err != nil {
203
- return nil , err
201
+ return err
204
202
}
205
203
if err := writeString (library .License ); err != nil {
206
- return nil , err
204
+ return err
207
205
}
208
206
//writeStringArray(library.Properties.AsSlice())
209
207
if err := writeStringArray (library .Examples .AsStrings ()); err != nil {
210
- return nil , err
208
+ return err
211
209
}
212
210
if err := writeStringArray (library .declaredHeaders ); err != nil {
213
- return nil , err
211
+ return err
214
212
}
215
213
if err := writeStringArray (library .sourceHeaders ); err != nil {
216
- return nil , err
214
+ return err
217
215
}
218
216
if err := writeMap (library .CompatibleWith ); err != nil {
219
- return nil , err
217
+ return err
220
218
}
221
- return buffer . Bytes (), nil
219
+ return nil
222
220
}
223
221
224
222
func (library * Library ) UnmarshalBinary (in io.Reader ) error {
0 commit comments