| 408 | } |
| 409 | |
| 410 | func (d *NapiGoInstanceAsyncWorkData) CreateAsyncWork( |
| 411 | env Env, |
| 412 | asyncResource, asyncResourceName Value, |
| 413 | execute AsyncExecuteCallback, |
| 414 | complete AsyncCompleteCallback, |
| 415 | ) (AsyncWork, Status) { |
| 416 | d.Lock.Lock() |
| 417 | defer d.Lock.Unlock() |
| 418 | |
| 419 | asyncWorkState := d.insert(execute, complete) |
| 420 | |
| 421 | result := AsyncWork{ |
| 422 | ID: asyncWorkState.ID, |
| 423 | } |
| 424 | status := Status(C.napi_create_async_work( |
| 425 | C.napi_env(env), |
| 426 | C.napi_value(asyncResource), |
| 427 | C.napi_value(asyncResourceName), |
| 428 | C.napi_async_execute_callback(C.ExecuteAsyncExecuteCallback), |
| 429 | C.napi_async_complete_callback(C.ExecuteAsyncCompleteCallback), |
| 430 | unsafe.Pointer(&asyncWorkState.ID), |
| 431 | (*C.napi_async_work)(unsafe.Pointer(&result.Handle)), |
| 432 | )) |
| 433 | |
| 434 | return result, status |
| 435 | } |
| 436 | |
| 437 | func (d *NapiGoInstanceAsyncWorkData) GetAsyncWork( |
| 438 | id NapiGoAsyncWorkID, |