diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index d180a5e..cd7b60b 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -984,7 +984,8 @@ void ILibDuktape_Polyfills_timer_elapsed(void *obj) if (ptrs->timerType == ILibDuktape_Timer_Type_INTERVAL) { - ILibLifeTime_AddEx(ILibGetBaseTimer(Duktape_GetChain(ctx)), ptrs, ptrs->timeout, ILibDuktape_Polyfills_timer_elapsed, NULL); + char *metadata = ILibLifeTime_GetCurrentTriggeredMetadata(ILibGetBaseTimer(duk_ctx_chain(ctx))); + ILibLifeTime_AddEx3(ILibGetBaseTimer(Duktape_GetChain(ctx)), ptrs, ptrs->timeout, ILibDuktape_Polyfills_timer_elapsed, NULL, metadata); } else { diff --git a/microstack/ILibParsers.c b/microstack/ILibParsers.c index 3119406..e270cb1 100644 --- a/microstack/ILibParsers.c +++ b/microstack/ILibParsers.c @@ -917,6 +917,7 @@ struct ILibLifeTime long long NextTriggerTick; void *Reserved; + char *CurrentTriggeredMetaData; void *ObjectList; int ObjectCount; @@ -7456,7 +7457,10 @@ void ILibLifeTime_SetMetadata(ILibLifeTime_Token obj, char *metadata, size_t met sprintf_s(val + oldLen, ILibMemory_Size(val) - oldLen, "%s%s", oldLen>0?", ":"", metadata); data->metadata = val; } - +char *ILibLifeTime_GetCurrentTriggeredMetadata(void* LifeTimeMonitorObject) +{ + return(((struct ILibLifeTime*)LifeTimeMonitorObject)->CurrentTriggeredMetaData); +} // // An internal method used by the ILibLifeTime methods @@ -7538,7 +7542,9 @@ void ILibLifeTime_Check(void *LifeTimeMonitorObject, fd_set *readset, fd_set *wr if (removed == 0) { // Trigger the callback + LifeTimeMonitor->CurrentTriggeredMetaData = EVT->metadata; EVT->CallbackPtr(EVT->data); + LifeTimeMonitor->CurrentTriggeredMetaData = NULL; } else { diff --git a/microstack/ILibParsers.h b/microstack/ILibParsers.h index 8207ab1..3b6225b 100644 --- a/microstack/ILibParsers.h +++ b/microstack/ILibParsers.h @@ -1373,6 +1373,7 @@ int ILibIsRunningOnChainThread(void* chain); #define ILibLifeTime_Add(LifetimeMonitorObject, data, seconds, Callback, Destroy) ILibLifeTime_AddEx(LifetimeMonitorObject, data, seconds * 1000, Callback, Destroy) #define ILibLifeTime_AddEx(LifetimeMonitorObject, data, milliseconds, Callback, Destroy) ILibLifeTime_AddEx2(LifetimeMonitorObject, data, milliseconds, Callback, Destroy, __FILE__, __LINE__) void ILibLifeTime_SetMetadata(ILibLifeTime_Token obj, char *metadata, size_t metadataLen); + char *ILibLifeTime_GetCurrentTriggeredMetadata(void* LifeTimeMonitorObject); // // Removes all event triggers that contain the specified data object.