EpicGames.UBA
Base interface for all classes that have unmanaged resources.
Returns the handle to an unmanaged object
An unmanaged handle
Struct containing results from artifact fetch
Is set to true if succeeded in fetching artifacts
Contains log lines if any
Struct containing results from artifact fetch
Is set to true if succeeded in fetching artifacts
Contains log lines if any
Is set to true if succeeded in fetching artifacts
Contains log lines if any
Base interface for a cache client
Connect to cache server
Cache server address
Cache server port
Number of tcp connections we want
True if successful
Disconnect from cache server
Register path with string that will be hashed. All files under this path will be ignored and instead refer to this path hash
Path that will represent all files under that path
String that is unique to the content of data under path
Write to cache
Bucket to store cache entry
Process
Input files
Input files size
Output files
Output files size
True if successful
Fetch from cache
handle for roots
Bucket to search for cache entry
Process start info
True if successful
Request the connected server to shutdown
Reason for shutdown
Create a ICacheClient object
The session
Output reason for cache miss to log.
Enable crypto by using a 32 character crypto string (representing a 16 byte value)
string that will show in cache server log
The ICacheClient
Base interface for uba config file
Load a config file
The name of the config file
The IConfig
Load a config file
The name of the table where the property is added
The name of the property
The value of the property
The verbosity of a log entry
Error verbosity
Warning verbosity
Info verbosity
Info verbosity
Info verbosity
Base interface for logging functionality
Begin logging scope
End logging scope
Log message
entry verbosity
the message to log
Create a ILogger object
The Microsoft.Extensions.Logging.ILogger to wrap
The ILogger
Information needed to create a process
Common configs for processes to run
MSVC based compiler
Clang based compiler
The path to the application binary
The working directory
The command line arguments
A text description of the process
Which configuration to use
The process priority of the created process
If input should be tracked
A path to a log file, or null for not log file
Arbitary user data to pass along with the process
RootsHandle for process used to convert paths
Base interface for process start info
Create a IProcessStartInfo object
The start info for the process
Set to true if exit callback is used
The IProcessStartInfo
Event args for exited event
The process to pull data from
Event args for exited event
The process to pull data from
Process exit code
The remote host that ran the process, if run remotely
Captured output lines
Total time spent for the processor
Total wall time spent
Total wall time spent
Interface for a process instance
Delegate for Exited events
The sender object
The event args
Exited event handler
Process exit code
The remote host that ran the process, if run remotely
Captured output lines
Total time spent for the processor
Total wall time spent
Unique hash for this process (not stable between runs)
Arbitary user data
Cancel the running process
If the process should be force terminated
Create a IProcess object
unmanaged pointer to the process
the processes start info
Optional callback when the process exits
Arbitary user data
The IProcess
Type of execution used for process
Process executed locally without detouring
Process executed locally with detouring enabled
Process executed on a remote session
Process was never executed and instead downloaded from cache
Process was skipped and never executed
Type of execution
Process exit code
Captured output lines
The remote host that ran the process, if run remotely
Total time spent for the processor
Total wall time spent
Peak memory used, requires a job object so will only be non-zero for Windows hosts.
UserData that was provided in EnqueueProcess
Native uba handle to process.
None means that nothing should be done
RerunLocal means that we want to re-run the process locally with detouring enabled
RerunNative means that we want to re-run the process locally without detouring
Base interface for uba config file
Start the scheduler. It will start processing enqueued processes straight away
Queue process.
Cancel all active processes and skip queued ones
Returns true if no processes are running or queued
Accumulated weight of all processes that are Queued and can run right now (dependencies are done)
Set callback for when process has finished
Allows uba to disable remote execution if running out of processes that can execute remotely
Create a scheduler
Session
List of cache clients
Max number of local processes scheduler can run in parallel
Force all processes that can to run remote
Base interface for a server instance
Start the server
Ip address or host name
The port to use, -1 for default
Enable crypto by using a 32 character crypto string (representing a 16 byte value)
Stop the server
Add a named connection to the server
The name of the connection
Success
Adds a client that server will try to connect one or more tcp connections to
The ip of the listening client
The port of the listening client
Enable crypto by using a 32 character crypto string (representing a 16 byte value)
Success
Create a IServer object
Maximum number of workers
Send size in bytes
The logger
Use Quic protocol instead of tcp for communication between host and helpers
The IServer
Information needed to create a session server
Root directory to store content addressable data
Path to a trace file that records the build
If the custom allocator should be disabled
If the visualizer should be launched
If the content addressable storage should be reset
If intermediate/output files should be written to disk
More detailed trace information
Wait for memory before starting new processes
Kill processes when close to run out of memory
Store .obj files compressed on disk
Information needed to create a session server
Root directory to store content addressable data
Path to a trace file that records the build
If the custom allocator should be disabled
If the visualizer should be launched
If the content addressable storage should be reset
If intermediate/output files should be written to disk
More detailed trace information
Wait for memory before starting new processes
Kill processes when close to run out of memory
Store .obj files compressed on disk
Root directory to store content addressable data
Path to a trace file that records the build
If the custom allocator should be disabled
If the visualizer should be launched
If the content addressable storage should be reset
If intermediate/output files should be written to disk
More detailed trace information
Wait for memory before starting new processes
Kill processes when close to run out of memory
Store .obj files compressed on disk
Base interface for session server create info
Create a ISessionServerCreateInfo object
The storage server
The client
The logger
The session create info
The ISessionServerCreateInfo
Event args for remote process slot available event
Is true if the available remote process slot is on a cross architecture machine
Event args for remote process slot available event
Is true if the available remote process slot is on a cross architecture machine
Is true if the available remote process slot is on a cross architecture machine
Event args for remote process returned event
The process being returned
Event args for remote process returned event
The process being returned
The remote process that was returned
Base interface for a session server instance
Degeate for remote process slot available events
The sender object
The event args
Degeate for remote process returned events
The sender object
The event args
Remote process slot available event handler
Remote process returned event handler
Add more info about session that show in visualizer
Will tell all remote machines that they can disconnect once their active processes are done
Will also stop listening for new remote machines
Set max number of processes that can be executed remotely.
Setting this can let the backend disconnect remote workers earlier
Run a local process
Process start info
If the process should be run async
Optional callback when the process exits
Should be true unless process does not work being detoured (And in that case we need to manually register file system changes)
The process being run
Run a remote process
Process start info
Optional callback when the process exits
Number of cores this process uses
Optionally contains input that we know process will need. Memory block containing zero-terminated strings with an extra termination in the end.
Number of strings in known inputs
True means that this process can run on a different architecture and expects a mapping to exist
The remote process being run
Register roots data and get handle back
Buffer containing roots used for cache and vfs. Format is multiples of byte/utf8string/utf8string. rootindex/vfspath/localpath
Size of buffer in bytes
The remote process being run
Refresh cached information about directories
The directories to refresh
Registers external files write to session caches
The files to register
Registers virtual files that are part of other files (mapped into sections of existing file)
Name of the virtual file
Name of the source file
Offset inside the source file
Size of the segment inside the source file
Registers the start of an external process
The description of the process
The process id that should be sent into EndExternalProcess
Registers the end of an external process
The id returned by BeginExternalProcess
The exit code of the external process
Writes external status to the uba trace stream which can then be visualized by ubavisualizer
Total processes in session
Processes done in session
Number of errors in session
Set a custom cas key for a process's tracked inputs
The file to track
The working directory
The process to get tracked inputs from
Cancel all processes
Print summary information to the logger
Get the trace for this session
Create a ISessionServer object
The session server create info
The ISessionServer
Information needed to create a storage server
The root directory for the storage
The capacity of the storage in bytes
If the storage should be stored as compressed
The geographical zone this machine belongs to. Can be empty
Information needed to create a storage server
The root directory for the storage
The capacity of the storage in bytes
If the storage should be stored as compressed
The geographical zone this machine belongs to. Can be empty
The root directory for the storage
The capacity of the storage in bytes
If the storage should be stored as compressed
The geographical zone this machine belongs to. Can be empty
Base interface for a storage server instance
Save tge content addressable storage table
Register disallowed paths for clients to download
Create a IStorageServer object
The server
The logger
The storage create info
The IStorageServer
Trace interface
Begin task. Will create a bar in uba visualizer
Description showing on bar in visualizer
Details showing when hovering over bar in visualizer
Task id
Add hint to task.. will show with milliseconds since start or previous hint
Task id returned by TaskBegin
Hint text
End task.
Task id returned by TaskBegin
Writes external status to the uba trace stream which can then be visualized by ubavisualizer
Row of status text. Reuse one index to show one line in visualizer
The identation of status name that will be shown in visualizer
The status text that will be shown in visualizer
The status type
Optional hyperlink that can be used to make text clickable in visualizer
Writes trace to file. Only works if created with ITrace.Create
Creates a new trace
Helper type to track task in scope
Will create a bar in uba visualizer
Trace used for this task scope
Description showing on bar in visualizer
Details showing when hovering over bar in visualizer
End task
Threaded logging for use by UBAExecutor
Constructor
The logger
Destructor
Protected dispose
Finish logging async
Utils
Is UBA available?
Paths that are not allowed to be transferred over the network for UBA remote agents.
IEnumerable of disallowed paths
Mapping of binary paths for cross architecture host binaries, to allow for using helpers of a different architecture.
IEnumerable of binary mappings, where the key is the binary for the current host architecture
Mapping of a folder path to a single hash, to allow for hashing an entire folder so each individual file does not need to be processed.
Registers a path that is not allowed to be transferred over the network for UBA remote agents.
The paths to add to the disallowed list
Registers a path mapping for cross architecture binaries
host architecture path
cross architecture path
Registers a hash for a path
The path string
The hash string
Delegate for registering a remote disallowed path
collection that is being changed
event args containing which paths were added
Delegate for registering a cross architecture path
collection that is being changed
event args containing which path was added
Delegate for registering a path hash
collection that is being changed
event args containing which path was added
Remote disallowed path registered event handler
Cross architecture path registered event handler
Remote disallowed path registered event handler
Get the path to the p/invoke library that would be loaded
The path to the library
If the operating system is not supported
Event args for registering a remote disallowed path
Event args for registering a remote disallowed path
The paths being registered
Event args for registering a cross architecture path
Event args for registering a cross architecture path
The host architecture path being registered
The cross architecture path being registered
Event args for registering a path hash
Event args for registering a path hash
The path being registered
The hash for the path being registered