UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
InstallerSharedContext.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "HAL/Runnable.h"
8
9namespace BuildPatchServices
10{
16 , public FRunnable
17 {
18 enum class EMsg : uint8
19 {
20 None = 0,
21 RunTask = (1 << 0),
22 Exit = (1 << 1)
23 };
25
26 struct FMsg
27 {
28 FMsg() = default;
29 FMsg(TUniqueFunction<void()> InTask, EMsg InMsg)
30 : Task(MoveTemp(InTask))
31 , Msg(InMsg)
32 {}
33
34 TUniqueFunction<void()> Task;
35 EMsg Msg = EMsg::None;
36 };
37
38 public:
40
41 bool StartThread(const TCHAR* DebugName);
42
43 // IBuildInstallerThread interface begin
44 virtual void RunTask(TUniqueFunction<void()> Task) override;
45 // IBuildInstallerThread interface end
46
47 // FRunnable interface begin
48 virtual uint32 Run() override;
49 virtual void Stop() override;
50 // FRunnable interface end
51
52 private:
53 FEvent* DoWorkEvent = nullptr;
54 FRunnableThread* Thread = nullptr;
55 TMpscQueue<FMsg> MsgQueue;
56 };
57
62 {
63 public:
66
67 // IBuildInstallerSharedContext interface begin
68 virtual IBuildInstallerThread* CreateThread() override;
69 virtual void ReleaseThread(IBuildInstallerThread* Thread) override;
70 virtual void PreallocateThreads(uint32 NumThreads) override;
71 virtual uint32 NumThreadsPerInstaller(bool bUseChunkDBs, bool bHasInstallSource) const override;
72 // IBuildInstallerSharedContext interface end
73
74 private:
75 IBuildInstallerThread* CreateThreadInternal();
76
77 private:
78 TArray<IBuildInstallerThread*> ThreadFreeList;
79 FCriticalSection ThreadFreeListCS;
80 const TCHAR* DebugName;
81 uint32 ThreadCount = 0;
82 bool bWarnOnCreateThread = false;
83 };
84
89 {
90 public:
95 static IBuildInstallerSharedContextRef Create(const TCHAR* DebugName);
96 };
97}
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define FRIEND_ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:17
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition InstallerSharedContext.h:89
Definition InstallerSharedContext.h:62
virtual void PreallocateThreads(uint32 NumThreads) override
Definition InstallerSharedContext.cpp:103
virtual IBuildInstallerThread * CreateThread() override
Definition InstallerSharedContext.cpp:167
virtual uint32 NumThreadsPerInstaller(bool bUseChunkDBs, bool bHasInstallSource) const override
Definition InstallerSharedContext.cpp:123
~FBuildInstallerSharedContext()
Definition InstallerSharedContext.cpp:140
FBuildInstallerSharedContext(const TCHAR *InDebugName)
Definition InstallerSharedContext.h:64
virtual void ReleaseThread(IBuildInstallerThread *Thread) override
Definition InstallerSharedContext.cpp:185
Definition InstallerSharedContext.h:17
virtual void RunTask(TUniqueFunction< void()> Task) override
Definition InstallerSharedContext.cpp:39
virtual void Stop() override
Definition InstallerSharedContext.cpp:75
bool StartThread(const TCHAR *DebugName)
Definition InstallerSharedContext.cpp:28
~FBuildInstallerThread()
Definition InstallerSharedContext.cpp:16
virtual uint32 Run() override
Definition InstallerSharedContext.cpp:48
Definition IBuildInstallerSharedContext.h:14
Definition Event.h:21
Definition RunnableThread.h:20
Definition Runnable.h:20
virtual void Exit()
Definition Runnable.h:61
Definition IBuildInstallerSharedContext.h:33
Definition Array.h:670
Definition MpscQueue.h:18
Definition SharedPointer.h:153
Definition FunctionFwd.h:19
Definition BuildPatchFileConstructor.h:28