@@ -162,13 +162,13 @@ func Create(req *rpc.CreateRequest) (*rpc.CreateResponse, *status.Status) {
162
162
}
163
163
164
164
// Init loads installed libraries and Platforms in CoreInstance with specified ID,
165
- // an gRPC status error is returned if the CoreInstance doesn't exist.
165
+ // a gRPC status error is returned if the CoreInstance doesn't exist.
166
+ // All responses are sent through responseCallback, can be nil to ignore all responses.
166
167
// Failures don't stop the loading process, in case of loading failure the Platform or library
167
- // is simply skipped and an error gRPC status is sent in the returned channel.
168
- // Channel is closed when loading is finished.
169
- func Init (req * rpc.InitRequest , resp func (r * rpc.InitResponse )) * status.Status {
170
- if resp == nil {
171
- resp = func (r * rpc.InitResponse ) {}
168
+ // is simply skipped and an error gRPC status is sent to responseCallback.
169
+ func Init (req * rpc.InitRequest , responseCallback func (r * rpc.InitResponse )) * status.Status {
170
+ if responseCallback == nil {
171
+ responseCallback = func (r * rpc.InitResponse ) {}
172
172
}
173
173
instance := instances [req .Instance .Id ]
174
174
if instance == nil {
@@ -182,7 +182,7 @@ func Init(req *rpc.InitRequest, resp func(r *rpc.InitResponse)) *status.Status {
182
182
URL , err := utils .URLParse (u )
183
183
if err != nil {
184
184
s := status .Newf (codes .InvalidArgument , "Invalid additional URL: %v" , err )
185
- resp (& rpc.InitResponse {
185
+ responseCallback (& rpc.InitResponse {
186
186
Message : & rpc.InitResponse_Error {
187
187
Error : s .Proto (),
188
188
},
@@ -196,7 +196,7 @@ func Init(req *rpc.InitRequest, resp func(r *rpc.InitResponse)) *status.Status {
196
196
_ , err := instance .PackageManager .LoadPackageIndexFromFile (indexFile )
197
197
if err != nil {
198
198
s := status .Newf (codes .FailedPrecondition , "Loading index file: %v" , err )
199
- resp (& rpc.InitResponse {
199
+ responseCallback (& rpc.InitResponse {
200
200
Message : & rpc.InitResponse_Error {
201
201
Error : s .Proto (),
202
202
},
@@ -207,7 +207,7 @@ func Init(req *rpc.InitRequest, resp func(r *rpc.InitResponse)) *status.Status {
207
207
208
208
if err := instance .PackageManager .LoadPackageIndex (URL ); err != nil {
209
209
s := status .Newf (codes .FailedPrecondition , "Loading index file: %v" , err )
210
- resp (& rpc.InitResponse {
210
+ responseCallback (& rpc.InitResponse {
211
211
Message : & rpc.InitResponse_Error {
212
212
Error : s .Proto (),
213
213
},
@@ -219,15 +219,15 @@ func Init(req *rpc.InitRequest, resp func(r *rpc.InitResponse)) *status.Status {
219
219
// otherwise we wouldn't find them and reinstall them each time
220
220
// and they would never get reloaded.
221
221
for _ , err := range instance .PackageManager .LoadHardware () {
222
- resp (& rpc.InitResponse {
222
+ responseCallback (& rpc.InitResponse {
223
223
Message : & rpc.InitResponse_Error {
224
224
Error : err .Proto (),
225
225
},
226
226
})
227
227
}
228
228
229
229
taskCallback := func (msg * rpc.TaskProgress ) {
230
- resp (& rpc.InitResponse {
230
+ responseCallback (& rpc.InitResponse {
231
231
Message : & rpc.InitResponse_InitProgress {
232
232
InitProgress : & rpc.InitResponse_Progress {
233
233
TaskProgress : msg ,
@@ -237,7 +237,7 @@ func Init(req *rpc.InitRequest, resp func(r *rpc.InitResponse)) *status.Status {
237
237
}
238
238
239
239
downloadCallback := func (msg * rpc.DownloadProgress ) {
240
- resp (& rpc.InitResponse {
240
+ responseCallback (& rpc.InitResponse {
241
241
Message : & rpc.InitResponse_InitProgress {
242
242
InitProgress : & rpc.InitResponse_Progress {
243
243
DownloadProgress : msg ,
@@ -251,7 +251,7 @@ func Init(req *rpc.InitRequest, resp func(r *rpc.InitResponse)) *status.Status {
251
251
ctagsTool , err := getBuiltinCtagsTool (instance .PackageManager )
252
252
if err != nil {
253
253
s := status .Newf (codes .Internal , err .Error ())
254
- resp (& rpc.InitResponse {
254
+ responseCallback (& rpc.InitResponse {
255
255
Message : & rpc.InitResponse_Error {
256
256
Error : s .Proto (),
257
257
},
@@ -261,7 +261,7 @@ func Init(req *rpc.InitRequest, resp func(r *rpc.InitResponse)) *status.Status {
261
261
toolHasBeenInstalled = toolHasBeenInstalled || ctagsInstalled
262
262
if err != nil {
263
263
s := status .Newf (codes .Internal , err .Error ())
264
- resp (& rpc.InitResponse {
264
+ responseCallback (& rpc.InitResponse {
265
265
Message : & rpc.InitResponse_Error {
266
266
Error : s .Proto (),
267
267
},
@@ -272,7 +272,7 @@ func Init(req *rpc.InitRequest, resp func(r *rpc.InitResponse)) *status.Status {
272
272
serialDiscoveryTool , _ := getBuiltinSerialDiscoveryTool (instance .PackageManager )
273
273
if err != nil {
274
274
s := status .Newf (codes .Internal , err .Error ())
275
- resp (& rpc.InitResponse {
275
+ responseCallback (& rpc.InitResponse {
276
276
Message : & rpc.InitResponse_Error {
277
277
Error : s .Proto (),
278
278
},
@@ -282,7 +282,7 @@ func Init(req *rpc.InitRequest, resp func(r *rpc.InitResponse)) *status.Status {
282
282
toolHasBeenInstalled = toolHasBeenInstalled || serialDiscoveryToolInstalled
283
283
if err != nil {
284
284
s := status .Newf (codes .Internal , err .Error ())
285
- resp (& rpc.InitResponse {
285
+ responseCallback (& rpc.InitResponse {
286
286
Message : & rpc.InitResponse_Error {
287
287
Error : s .Proto (),
288
288
},
@@ -294,7 +294,7 @@ func Init(req *rpc.InitRequest, resp func(r *rpc.InitResponse)) *status.Status {
294
294
// We installed at least one new tool after loading hardware
295
295
// so we must reload again otherwise we would never found them.
296
296
for _ , err := range instance .PackageManager .LoadHardware () {
297
- resp (& rpc.InitResponse {
297
+ responseCallback (& rpc.InitResponse {
298
298
Message : & rpc.InitResponse_Error {
299
299
Error : err .Proto (),
300
300
},
@@ -313,7 +313,7 @@ func Init(req *rpc.InitRequest, resp func(r *rpc.InitResponse)) *status.Status {
313
313
314
314
if err := instance .lm .LoadIndex (); err != nil {
315
315
s := status .Newf (codes .FailedPrecondition , "Loading index file: %v" , err )
316
- resp (& rpc.InitResponse {
316
+ responseCallback (& rpc.InitResponse {
317
317
Message : & rpc.InitResponse_Error {
318
318
Error : s .Proto (),
319
319
},
@@ -322,7 +322,7 @@ func Init(req *rpc.InitRequest, resp func(r *rpc.InitResponse)) *status.Status {
322
322
323
323
for _ , err := range instance .lm .RescanLibraries () {
324
324
s := status .Newf (codes .FailedPrecondition , "Loading libraries: %v" , err )
325
- resp (& rpc.InitResponse {
325
+ responseCallback (& rpc.InitResponse {
326
326
Message : & rpc.InitResponse_Error {
327
327
Error : s .Proto (),
328
328
},
0 commit comments