MCPcopy Create free account
hub / github.com/Tencent/UnLua / FDeadLoopCheck

Class FDeadLoopCheck

Plugins/UnLua/Source/UnLua/Private/LuaDeadLoopCheck.h:26–76  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24 class FLuaEnv;
25
26 class FDeadLoopCheck
27 {
28 public:
29 static int32 Timeout; // in seconds
30
31 class FGuard final
32 {
33 public:
34 explicit FGuard(FDeadLoopCheck* Owner);
35
36 ~FGuard();
37
38 void SetTimeout();
39
40 private:
41 static void OnLuaLineEvent(lua_State* L, lua_Debug* ar);
42
43 FDeadLoopCheck* Owner;
44 };
45
46 class FRunner final : public FRunnable
47 {
48 public:
49 explicit FRunner();
50
51 virtual uint32 Run() override;
52
53 virtual void Stop() override;
54
55 virtual void Exit() override;
56
57 void GuardEnter(FGuard* Guard);
58
59 void GuardLeave();
60
61 private:
62 FThreadSafeBool bRunning;
63 FRunnableThread* Thread;
64 FThreadSafeCounter GuardCounter;
65 FThreadSafeCounter TimeoutCounter;
66 std::atomic<FGuard*> TimeoutGuard;
67 };
68
69 explicit FDeadLoopCheck(FLuaEnv* Env);
70
71 TUniquePtr<FGuard> MakeGuard();
72
73 private:
74 FRunner* Runner;
75 FLuaEnv* Env;
76 };
77}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected