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.
int
runApplication
(
scope void delegate
(
string[]
)
args_out = null
)

Parameters

args_out void delegate
(
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) { conn.pipe(conn); });

	// 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) { conn.pipe(conn); });

	// 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