Esempio n. 1
0
int
main (int argc, char **argv)
{
	ret_t            ret;
	struct sigaction act;

	ret = check_for_python();
	if (ret != ret_ok) {
		PRINT_MSG ("ERROR: Couldn't find python.\n");
		exit (EXIT_ERROR);
	}

	/* Signal handling */
	act.sa_handler = SIG_IGN;
	sigaction (SIGPIPE, &act, NULL);

	memset(&act, 0, sizeof(act));
	act.sa_sigaction = signals_handler;
	act.sa_flags     = SA_SIGINFO;
	sigaction (SIGCHLD, &act, NULL);
	sigaction (SIGINT,  &act, NULL);
	sigaction (SIGTERM, &act, NULL);

	/* Initialize the embedded server */
	cherokee_init();
	cherokee_spawner_set_active (false);
	process_parameters (argc, argv);

	ret = cherokee_server_new (&srv);
	if (ret != ret_ok)
		exit (EXIT_ERROR);

	ret = config_server (srv);
	if (ret != ret_ok)
		exit (EXIT_ERROR);

	ret = cherokee_server_initialize (srv);
	if (ret != ret_ok)
		exit (EXIT_ERROR);

	print_connection_info();

	ret = cherokee_server_unlock_threads (srv);
	if (ret != ret_ok)
		exit (EXIT_ERROR);

	do {
		ret = cherokee_server_step (srv);
	} while (ret == ret_eagain);

	cherokee_server_stop (srv);
	cherokee_server_free (srv);

	cherokee_mrproper();
	return EXIT_OK;
}
Esempio n. 2
0
File: config.c Progetto: HFT/HFTIrc
void
config_parse(void)
{
     if(get_conf(hftirc.conf.path) == -1)
     {
          ui_print_buf(0, "parsing configuration file (%s) failed.", hftirc.conf.path);
          sprintf(hftirc.conf.path, "%s/hftirc/hftirc.conf", XDG_CONFIG_DIR);
          get_conf(hftirc.conf.path);
     }

     config_misc();
     config_ui();
     config_ignore();
     config_server();

     free_conf();

     return;
}
Esempio n. 3
0
__private_extern__
boolean_t
config_demux(mach_msg_header_t *request, mach_msg_header_t *reply)
{
	Boolean				processed = FALSE;

	/*
	 * (attempt to) process SCDynamicStore requests.
	 */
	processed = config_server(request, reply);
	if (processed) {
		return TRUE;
	}

	/*
	 * (attempt to) process (NO MORE SENDERS) notification messages.
	 */
	processed = notify_server(request, reply);
	if (processed) {
		return TRUE;
	}

	/*
	 * unknown message ID, log and return an error.
	 */
	SCLog(TRUE, LOG_ERR, CFSTR("config_demux(): unknown message ID (%d) received"), request->msgh_id);
	reply->msgh_bits        = MACH_MSGH_BITS(MACH_MSGH_BITS_REMOTE(request->msgh_bits), 0);
	reply->msgh_remote_port = request->msgh_remote_port;
	reply->msgh_size        = sizeof(mig_reply_error_t);	/* Minimal size */
	reply->msgh_local_port  = MACH_PORT_NULL;
	reply->msgh_id          = request->msgh_id + 100;
	((mig_reply_error_t *)reply)->NDR = NDR_record;
	((mig_reply_error_t *)reply)->RetCode = MIG_BAD_ID;

	return FALSE;
}
Esempio n. 4
0
int main() {
	int i;
	struct timespec start, end, diff[8];
	table* t;
	int widths[] = { 20, 20, 20 };
	machine* server;
	half_long_string hl_str;

	config_server();

	deploy(machines[0], "./rpc_times_server");
	deploy(machines[2], "./rpc_times_server");
	deploy(machines[3], "./rpc_times_server");

	sleep(5);

	// 1028 bytes arg
	for (i = 0; i < 1024; i++) {
		hl_str.str1[i] = 65 + i % 26;
		hl_str.str2[i] = 65 + i % 26;
	}

	{
		// Local call 4 bytes
		printf("Calling Local (no RPC): 4 bytes");
		fflush(stdout);
		clock_gettime(CLOCK_REALTIME, &start);
		local_call_4(1000);
		clock_gettime(CLOCK_REALTIME, &end);
		diff[0].tv_nsec = end.tv_nsec - start.tv_nsec;
		diff[0].tv_sec = end.tv_sec - start.tv_sec;

		// Local call 2048 bytes
		printf(", 2048 bytes\t\tOK\n");
		clock_gettime(CLOCK_REALTIME, &start);
		local_call_2048(hl_str);
		clock_gettime(CLOCK_REALTIME, &end);
		diff[1].tv_nsec = end.tv_nsec - start.tv_nsec;
		diff[1].tv_sec = end.tv_sec - start.tv_sec;
	}
	{
		server = machines[4];
		// Remote call 4 bytes
		printf("Calling Local RPC: 4 bytes");
		clock_gettime(CLOCK_REALTIME, &start);
		rpc_call_4(server->ip, 1000);
		clock_gettime(CLOCK_REALTIME, &end);
		diff[2].tv_nsec = end.tv_nsec - start.tv_nsec;
		diff[2].tv_sec = end.tv_sec - start.tv_sec;

		// Remote call 2048 bytes
		printf(", 2048 bytes\t\tOK\n");
		clock_gettime(CLOCK_REALTIME, &start);
		rpc_call_2048(server->ip, hl_str);
		clock_gettime(CLOCK_REALTIME, &end);
		diff[3].tv_nsec = end.tv_nsec - start.tv_nsec;
		diff[3].tv_sec = end.tv_sec - start.tv_sec;
	}
	{
		server = machines[2];
		// Remote call 4 bytes (Remote: Fedora)
		printf("Calling Remote Homogeneous: 4 bytes");
		clock_gettime(CLOCK_REALTIME, &start);
		rpc_call_4(server->ip, 1000);
		clock_gettime(CLOCK_REALTIME, &end);
		diff[4].tv_nsec = end.tv_nsec - start.tv_nsec;
		diff[4].tv_sec = end.tv_sec - start.tv_sec;

		// Remote call 2048 bytes (Remote: Fedora)
		printf(", 2048 bytes\t\tOK\n");
		clock_gettime(CLOCK_REALTIME, &start);
		rpc_call_2048(server->ip, hl_str);
		clock_gettime(CLOCK_REALTIME, &end);
		diff[5].tv_nsec = end.tv_nsec - start.tv_nsec;
		diff[5].tv_sec = end.tv_sec - start.tv_sec;
	}
	{
		server = machines[2];
		// Remote call 4 bytes (Remote: Alpha)
		printf("Calling Remote heterogeneous: 4 bytes");
		clock_gettime(CLOCK_REALTIME, &start);
		rpc_call_4(server->ip, 1000);
		clock_gettime(CLOCK_REALTIME, &end);
		diff[6].tv_nsec = end.tv_nsec - start.tv_nsec;
		diff[6].tv_sec = end.tv_sec - start.tv_sec;

		// Remote call 2048 bytes (Remote: Alpha)
		printf(", 2048 bytes\t\tOK\n");
		clock_gettime(CLOCK_REALTIME, &start);
		rpc_call_2048(server->ip, hl_str);
		clock_gettime(CLOCK_REALTIME, &end);
		diff[7].tv_nsec = end.tv_nsec - start.tv_nsec;
		diff[7].tv_sec = end.tv_sec - start.tv_sec;
	}

	printf("\nResultados\n");
	printf("==========\n");

	// Initialize table
	t = table_initialize(3, widths);
	// Write row data
	table_add_row(t);
	table_add_data(t, 0, 0, "");
	table_add_data(t, 0, 1, "4b in, 4b out");
	table_add_data(t, 0, 2, "2x1024 in, 2048 out");

	// Write row data
	table_add_row(t);
	table_add_data(t, 1, 0, "Local call");
	table_add_data(t, 1, 1, "%lis %09li ns", diff[0].tv_sec, diff[0].tv_nsec);
	table_add_data(t, 1, 2, "%lis %09li ns", diff[1].tv_sec, diff[1].tv_nsec);

	// Write row data
	table_add_row(t);
	table_add_data(t, 2, 0, "RPC (local)");
	table_add_data(t, 2, 1, "%lis %09li ns", diff[2].tv_sec, diff[2].tv_nsec);
	table_add_data(t, 2, 2, "%lis %09li ns", diff[3].tv_sec, diff[3].tv_nsec);

	// Write row data
	table_add_row(t);
	table_add_data(t, 3, 0, "RPC (remota)");
	table_add_data(t, 3, 1, "%lis %09li ns", diff[4].tv_sec, diff[4].tv_nsec);
	table_add_data(t, 3, 2, "%lis %09li ns", diff[5].tv_sec, diff[5].tv_nsec);

	// Write row data
	table_add_row(t);
	table_add_data(t, 4, 0, "RPC (hetero)");
	table_add_data(t, 4, 1, "%lis %09li ns", diff[6].tv_sec, diff[6].tv_nsec);
	table_add_data(t, 4, 2, "%lis %09li ns", diff[7].tv_sec, diff[7].tv_nsec);

	// Print table
	table_print(t);

	return 0;
}
Esempio n. 5
0
int
main (int argc, char **argv)
{
	ret_t            ret;
	struct sigaction act;

	/* Globals */
	document_root = strdup (DEFAULT_DOCUMENTROOT);
	config_file   = strdup (DEFAULT_CONFIG_FILE);
	bind_to       = strdup (DEFAULT_BIND);

	if ((!bind_to) || (!config_file) || (!document_root)) {
		PRINT_MSG ("ERROR: Couldn't allocate memory.\n");
		exit (EXIT_ERROR);
	}

	/* Python */
	ret = check_for_python();
	if (ret != ret_ok) {
		PRINT_MSG ("ERROR: Couldn't find python.\n");
		exit (EXIT_ERROR);
	}

	/* Signal handling */
	act.sa_handler = SIG_IGN;
	sigaction (SIGPIPE, &act, NULL);

	memset(&act, 0, sizeof(act));
	act.sa_sigaction = signals_handler;
	act.sa_flags     = SA_SIGINFO;
	sigaction (SIGCHLD, &act, NULL);
	sigaction (SIGINT,  &act, NULL);
	sigaction (SIGTERM, &act, NULL);

	/* Initialize the embedded server */
	cherokee_init();

	/* Seed random numbers
	 */
	cherokee_random_seed();

	cherokee_spawner_set_active (false);
	process_parameters (argc, argv);

	ret = cherokee_server_new (&srv);
	if (ret != ret_ok)
		exit (EXIT_ERROR);

	ret = config_server (srv);
	if (ret != ret_ok)
		exit (EXIT_ERROR);

	ret = cherokee_server_initialize (srv);
	if (ret != ret_ok)
		exit (EXIT_ERROR);

	print_connection_info();

	ret = cherokee_server_unlock_threads (srv);
	if (ret != ret_ok)
		exit (EXIT_ERROR);

	do {
		ret = cherokee_server_step (srv);
	} while (ret == ret_eagain);

	cherokee_server_stop (srv);
	cherokee_server_free (srv);

	cherokee_mrproper();
	return EXIT_OK;
}