runApplication

Performs final initialization and runs the event loop.

This function performs three tasks:

  1. Makes sure that no unrecognized command line options are passed to the application and potentially displays command line help. See also vibe.core.args.finalizeCommandLineOptions.
  2. Performs privilege lowering if required.
  3. Runs the event loop and blocks until it finishes.
@safe
int
runApplication
(
string[]* args_out = null
)

Parameters

args_out string[]*

Optional parameter to receive unrecognized command line arguments. If left to null, an error will be reported if any unrecognized argument is passed.

Examples

A simple echo server, listening on a privileged TCP port.

import vibe.core.core;
import vibe.core.net;

int main()
{
	// first, perform any application specific setup (privileged ports still
	// available if run as root)
	listenTCP(7, (conn) {
		try conn.write(conn);
		catch (Exception e) { /* log error */ }
	});

	// then use runApplication to perform the remaining initialization and
	// to run the event loop
	return runApplication();
}

The same as above, but performing the initialization sequence manually.

This allows to skip any additional initialization (opening the listening port) if an invalid command line argument or the --help switch is passed to the application.

import vibe.core.core;
import vibe.core.net;

int main()
{
	// process the command line first, to be able to skip the application
	// setup if not required
	if (!finalizeCommandLineOptions()) return 0;

	// then set up the application
	listenTCP(7, (conn) {
		try conn.write(conn);
		catch (Exception e) { /* log error */ }
	});

	// finally, perform privilege lowering (safe to skip for non-server
	// applications)
	lowerPrivileges();

	// and start the event loop
	return runEventLoop();
}

See Also

vibe.core.args.finalizeCommandLineOptions, lowerPrivileges, runEventLoop

Meta