| 4475 | } |
| 4476 | |
| 4477 | static void TimeEvent_Free(void *value){ |
| 4478 | TimerData* td = value; |
| 4479 | PythonExecutionCtx pectx = PythonExecutionCtx_New(td->session, NULL); |
| 4480 | RedisGearsPy_Lock(&pectx); |
| 4481 | GearsPyDecRef(td->callback); |
| 4482 | RedisGearsPy_Unlock(&pectx); |
| 4483 | RedisModuleCtx* ctx = RedisModule_GetThreadSafeContext(NULL); |
| 4484 | RedisModule_StopTimer(ctx, td->id, NULL); |
| 4485 | PythonSessionCtx_Free(td->session); |
| 4486 | RedisModule_FreeThreadSafeContext(ctx); |
| 4487 | RG_FREE(td); |
| 4488 | } |
| 4489 | |
| 4490 | static int TimeEvent_RegisterType(RedisModuleCtx* ctx){ |
| 4491 | RedisModuleTypeMethods tm = {.version = REDISMODULE_TYPE_METHOD_VERSION, |
no test coverage detected