Пример #1
0
int main(int argc, char* argv[])
{
	new LoggerSystem();
	new ComponentFactory();
	entityx::EntityX ex;

	GameObject drone(ex.entities.create());
	drone.addComponent(ComponentType::MOVEMENT, ComponentFactory::getInstance()->assignComponent(drone.getEntity(), ComponentType::MOVEMENT));

	drone.move(vec2(1, 0));
	const std::string serialStr = network::marshal(drone, 0);

	GameObject drone2(ex.entities.create());
	network::unmarshal(drone2, serialStr, 0);

#if defined(CLIENT_SIDE) && defined(SERVER_SIDE)
	if (strcmp(argv[1], CLIENT_START_CODE) == 0)
	{
		return clientMain(argc, argv);
	}
	else if (strcmp(argv[1], CLIENT_THICK_START_CODE) == 0)
	{
		return clientMain(argc, argv, true);
	}
	else if (strcmp(argv[1], SERVER_START_CODE) == 0)
	{
		return serverMain(argc, argv);
	}
	std::cout << "Bad argument. Possible ones are: " << CLIENT_START_CODE << " " << CLIENT_THICK_START_CODE << " " << SERVER_START_CODE;
#elif defined(CLIENT_SIDE)
	return clientMain(argc, argv);
#elif defined(SERVER_SIDE)
	return serverMain(argc, argv);
#endif
}
Пример #2
0
int main( int argc, char **argv ) {

	bool isClient = argc > 1 && 0==strcmp(argv[1], "client" ) ;
	bool isServer = argc > 1 && 0==strcmp( argv[1], "server" ) ;
	if( isClient ) return clientMain( argc, argv ) ;
	else if( isServer ) return serverMain( argc, argv ) ;
	else {
		printf( "Usage: chat client name [host [port]]\n" ) ;
		printf( "       chat server [host [port]] \n" ) ;
	    exit(1) ; }
}
Пример #3
0
int main(int argc, char *argv[]) {
	if (argc != 5 && argc != 4)
		handleError(getProperUse(argv[0]));

	if (atoi(argv[1]) == 0)
		clientMain(argc, argv);
	else if (atoi(argv[1]) == 1)
		serverMain(argc, argv);
	else
		handleError((char*)"Invalid Flag - proper flag values are\n0 - meaning client\n"
			"1 - meaning server");
}
Пример #4
0
int
main(int argc, char **argv)
{
	serverOptions(argc, argv);

	switch (server_quit) {
	case 1:
		/* Slow quit	-q */
		exit(pidKill(pid_file, SIGQUIT) != 0);

	case 2:
		/* Quit now	-q -q */
		exit(pidKill(pid_file, SIGTERM) != 0);
	default:
		/* Restart	-q -q -q
		 * Restart-If	-q -q -q -q
		 */
		if (pidKill(pid_file, SIGTERM) && 3 < server_quit) {
			fprintf(stderr, "no previous instance running: %s (%d)\n", strerror(errno), errno);
			return EXIT_FAILURE;
		}

		sleep(2);
	}

	if (daemon_mode) {
		if (daemon(1, 1)) {
			fprintf(stderr, "%s(%d): %s\n", __FILE__, __LINE__, strerror(errno));
			return EX_SOFTWARE;
		}

		if (atexit(atExitCleanUp)) {
			fprintf(stderr, "%s(%d): %s\n", __FILE__, __LINE__, strerror(errno));
			return EX_SOFTWARE;
		}

		openlog("dnsd", LOG_PID|LOG_NDELAY, LOG_DAEMON);
	} else {
		LogOpen("(standard error)");
	}

	return serverMain();
}
Пример #5
0
int
main(int argc, char **argv)
{
	/* Get this now so we can use the event log. */
	ReportInit();

	serverOptions(argc, argv);

	if (0 < server_quit) {
		pid_t pid;
		int length;
		HANDLE signal_quit;
		char event_name[128];

		pid = pidLoad(pid_file);
		length = snprintf(event_name, sizeof (event_name), "Global\\%ld-%s", (long) pid, server_quit == 1 ? "QUIT" : "TERM");
		if (sizeof (event_name) <= length) {
			ReportLog(EVENTLOG_ERROR_TYPE, "service %s pid file name too long", _NAME);
			return EX_SOFTWARE;
		}

		signal_quit = OpenEvent(EVENT_MODIFY_STATE , 0, event_name);
		if (signal_quit == NULL) {
			ReportLog(EVENTLOG_ERROR_TYPE, "service %s quit error: %s (%d)", _NAME, strerror(errno), errno);
			return EX_OSERR;
		}

		SetEvent(signal_quit);
		CloseHandle(signal_quit);
		return EXIT_SUCCESS;
	}

	if (windows_service != NULL) {
		if (winServiceInstall(*windows_service == 'a', _NAME, NULL) < 0) {
			ReportLog(EVENTLOG_ERROR_TYPE, "service %s %s error: %s (%d)", _NAME, windows_service, strerror(errno), errno);
			return EX_OSERR;
		}
		return EXIT_SUCCESS;
	}

	openlog(_NAME, LOG_PID|LOG_NDELAY, log_facility);

	if (daemon_mode) {
		if (pidSave(pid_file)) {
			syslog(LOG_ERR, log_init, SERVER_FILE_LINENO, strerror(errno), errno);
			return EX_SOFTWARE;
		}

		if (pidLock(pid_file) < 0) {
			syslog(LOG_ERR, log_init, SERVER_FILE_LINENO, strerror(errno), errno);
			return EX_SOFTWARE;
		}

		winServiceSetSignals(&signals);

		if (winServiceStart(_NAME, argc, argv) < 0) {
			ReportLog(EVENTLOG_ERROR_TYPE, "service %s start error: %s (%d)", _NAME, strerror(errno), errno);
			return EX_OSERR;
		}
		return EXIT_SUCCESS;
	}

#ifdef NOT_USED
{
	long length;
	char *cwd, *backslash, *server_root, default_root[256];

	/* Get the absolute path of this executable and set the working
	 * directory to correspond to it so that we can find the options
	 * configuration file along side the executable, when running as
	 * a service. (I hate using the registry.)
	 */
	if ((length = GetModuleFileName(NULL, default_root, sizeof default_root)) == 0 || length == sizeof default_root) {
		ReportLog(EVENTLOG_ERROR_TYPE, "failed to find default server root");
		return EXIT_FAILURE;
	}

	/* Strip off the executable filename, leaving its parent directory. */
	for (backslash = default_root+length; default_root < backslash && *backslash != '\\'; backslash--)
		;

	server_root = default_root;
	*backslash = '\0';

	/* Remember where we are in case we are running in application mode. */
	cwd = getcwd(NULL, 0);

	/* Change to the executable's directory for default configuration file. */
	if (chdir(server_root)) {
		ReportLog(EVENTLOG_ERROR_TYPE, "failed to change directory to '%s': %s (%d)\n", server_root, strerror(errno), errno);
		exit(EX_OSERR);
	}

	if (cwd != NULL) {
		(void) chdir(cwd);
		free(cwd);
	}
}
#endif

	return serverMain();
}