Sunshine master
Self-hosted game stream host for Moonlight.
main.cpp File Reference

Definitions for the main entry point for Sunshine. More...

#include <codecvt>
#include <csignal>
#include <filesystem>
#include <fstream>
#include <iostream>
#include <mach-o/dyld.h>
#include <rs.h>
#include "confighttp.h"
#include "display_device.h"
#include "entry_handler.h"
#include "globals.h"
#include "httpcommon.h"
#include "logging.h"
#include "main.h"
#include "nvhttp.h"
#include "process.h"
#include "system_tray.h"
#include "upnp.h"
#include "video.h"
Include dependency graph for main.cpp:

Functions

WINAPI BOOL ConsoleCtrlHandler (DWORD type)
 Handle Windows console control events for shutdown.
 
int main (int argc, char *argv[])
 Run the main application or worker loop.
 
void mainThreadLoop (const std::shared_ptr< safe::event_t< bool > > &shutdown_event)
 Run the main event loop until Sunshine is asked to exit.
 
template<class FN >
void on_signal (int sig, FN &&fn)
 Register the handler invoked for a POSIX signal.
 
void on_signal_forwarder (int sig)
 Forward a POSIX signal to the registered Sunshine handler.
 
LRESULT CALLBACK SessionMonitorWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 Handle Windows session-change messages for the monitor window.
 

Variables

std::map< std::string_view, std::function< int(const char *name, int argc, char **argv)> > cmd_to_func
 Cmd to func.
 
std::map< int, std::function< void()> > signal_handlers
 Signal handlers.
 
constexpr bool tray_is_enabled = true
 Compile-time flag indicating tray support is enabled.
 

Detailed Description

Definitions for the main entry point for Sunshine.

Function Documentation

◆ ConsoleCtrlHandler()

WINAPI BOOL ConsoleCtrlHandler ( DWORD type)

Handle Windows console control events for shutdown.

Parameters
typeProtocol, message, or resource type selector.
Returns
Process or platform callback exit code.

◆ main()

int main ( int argc,
char * argv[] )

Run the main application or worker loop.

Main application entry point.

Parameters
argcThe number of arguments.
argvThe arguments.
Returns
Process or platform callback exit code.

◆ mainThreadLoop()

void mainThreadLoop ( const std::shared_ptr< safe::event_t< bool > > & shutdown_event)

Run the main event loop until Sunshine is asked to exit.

Parameters
shutdown_eventShutdown event.

◆ on_signal()

template<class FN >
void on_signal ( int sig,
FN && fn )

Register the handler invoked for a POSIX signal.

Parameters
sigNative signal number being handled.
fnSignal handler function to install.

◆ on_signal_forwarder()

void on_signal_forwarder ( int sig)

Forward a POSIX signal to the registered Sunshine handler.

Parameters
sigNative signal number being handled.

◆ SessionMonitorWindowProc()

LRESULT CALLBACK SessionMonitorWindowProc ( HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam )

Handle Windows session-change messages for the monitor window.

Parameters
hwndWindow handle receiving the Windows control event.
uMsgU msg.
wParamW param.
lParamL param.
Returns
Process or platform callback exit code.

Variable Documentation

◆ cmd_to_func

std::map<std::string_view, std::function<int(const char *name, int argc, char **argv)> > cmd_to_func
Initial value:
{
{"creds"sv, [](const char *name, int argc, char **argv) {
return args::creds(name, argc, argv);
}},
{"help"sv, [](const char *name, int argc, char **argv) {
return args::help(name);
}},
{"version"sv, [](const char *name, int argc, char **argv) {
return args::version();
}},
{"restore-nvprefs-undo"sv, [](const char *name, int argc, char **argv) {
}},
}
ptr_t< char > name
Current service name, updated when Avahi reports a collision.
Definition publish.cpp:403
int creds(const char *name, int argc, char *argv[])
Reset the user credentials.
Definition entry_handler.cpp:38
int version()
Print the version to stdout, then exit.
Definition entry_handler.cpp:53
int restore_nvprefs_undo()
Restore global NVIDIA control panel settings. If Sunshine was improperly terminated,...
Definition entry_handler.cpp:59
int help(const char *name)
Print help to stdout, then exit.
Definition entry_handler.cpp:48
char ** argv
Command-line argument vector.
Definition entry_handler.cpp:70

Cmd to func.