chakra-core / chakra-core/ChakraCore
No way to pass user data to thread service callback
- Dominant language
- JavaScript
- Stars
- 9.3k
- Forks
- 1.2k
- PR merge metrics
- No merged PRs in 30d
Description
Customarily, callbacks take an additional user data parameter so that closures can be used as callbacks. This is the case with, for example, `JsMemoryAllocationCallback`. However, `JsThreadServiceCallback` takes no such parameter (do not confuse this with its `callbackState` parameter, which is not _user_ data rather engine-provided data for the work item callback).
Ideally the API would be:
```c
typedef bool (CALLBACK *JsThreadServiceCallback)(
_In_ JsBackgroundWorkItemCallback workItemCallback,
_In_opt_ void *workItemCallbackState,
_In_opt_ void *threadServiceCallbackState
);
STDAPI_(JsErrorCode) JsCreateRuntime(
_In_ JsRuntimeAttributes attributes,
_In_opt_ JsThreadServiceCallback threadService,
_In_opt_ void *threadServiceCallbackState
_Out_ JsRuntimeHandle *runtime
);
```
where the runtime would pass `threadServiceCallbackState` to `threadService` whenever it’s called.
Contributor guide
Assessment
This issue has not been assessed yet.