Sunshine v2025.628.4510
Self-hosted game stream host for Moonlight.
process.cpp File Reference

Definitions for the startup and shutdown of the apps started by a streaming Session. More...

#include <filesystem>
#include <string>
#include <thread>
#include <vector>
#include <boost/algorithm/string.hpp>
#include <boost/crc.hpp>
#include <boost/filesystem.hpp>
#include <boost/program_options/parsers.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <boost/property_tree/ptree.hpp>
#include <openssl/evp.h>
#include <openssl/sha.h>
#include "config.h"
#include "crypto.h"
#include "display_device.h"
#include "logging.h"
#include "platform/common.h"
#include "process.h"
#include "system_tray.h"
#include "utility.h"
#include "platform/windows/misc.h"
#include <share.h>
Include dependency graph for process.cpp:

Classes

class  proc::deinit_t
 

Macros

#define BOOST_BIND_GLOBAL_PLACEHOLDERS
 
#define DEFAULT_APP_IMAGE_PATH   SUNSHINE_ASSETS_DIR "/box.png"
 

Functions

std::tuple< std::string, std::string > proc::calculate_app_id (const std::string &app_name, std::string app_image_path, int index)
 Calculate a stable id based on name and image data.
 
uint32_t proc::calculate_crc32 (const std::string &input)
 
std::optional< std::string > proc::calculate_sha256 (const std::string &filename)
 
std::string_view::iterator proc::find_match (std::string_view::iterator begin, std::string_view::iterator end)
 
boost::filesystem::path proc::find_working_directory (const std::string &cmd, boost::process::v1::environment &env)
 
std::unique_ptr< platf::deinit_tproc::init ()
 Initialize proc functions.
 
std::optional< proc::proc_tproc::parse (const std::string &file_name)
 
std::string proc::parse_env_val (boost::process::v1::native_environment &env, const std::string_view &val_raw)
 
void proc::refresh (const std::string &file_name)
 
void proc::terminate_process_group (boost::process::v1::child &proc, boost::process::v1::group &group, std::chrono::seconds exit_timeout)
 Terminates all child processes in a process group.
 
std::string proc::validate_app_image_path (std::string app_image_path)
 

Variables

proc_t proc::proc
 

Detailed Description

Definitions for the startup and shutdown of the apps started by a streaming Session.

Function Documentation

◆ calculate_app_id()

std::tuple< std::string, std::string > proc::calculate_app_id ( const std::string & app_name,
std::string app_image_path,
int index )

Calculate a stable id based on name and image data.

Returns
Tuple of id calculated without index (for use if no collision) and one with.

◆ init()

std::unique_ptr< platf::deinit_t > proc::init ( )

Initialize proc functions.

Returns
Unique pointer to deinit_t to manage cleanup

◆ terminate_process_group()

void proc::terminate_process_group ( boost::process::v1::child & proc,
boost::process::v1::group & group,
std::chrono::seconds exit_timeout )

Terminates all child processes in a process group.

Parameters
procThe child process itself.
groupThe group of all children in the process tree.
exit_timeoutThe timeout to wait for the process group to gracefully exit.