Example #1
0
/**
 * Starts a HTTP server which serves the given HTTP easy routes.
 *
 * @param sched Pointer to a scheduler
 * @param ip Ip address to bind
 * @param port Port to bind
 * @param routes Array of HTTP easy route to server
 * @param size Number of routes
 *
 * @return 0 on success, or -1 if an error occurs
 */
int rinoohttp_easy_server(t_rinoosched *sched, t_ip *ip, uint16_t port, t_rinoohttp_route *routes, int size)
{
	t_rinoosocket *server;
	t_rinoohttp_easy_context *context;

	if (routes == NULL) {
		return -1;
	}
	server = rinoo_tcp_server(sched, ip, port);
	if (server == NULL) {
		return -1;
	}
	context = malloc(sizeof(*context));
	if (context == NULL) {
		return -1;
	}
	context->socket = server;
	context->routes = routes;
	context->nbroutes = size;
	if (rinoo_task_start(sched, rinoohttp_easy_server_process, context) != 0) {
		free(context);
		return -1;
	}
	return 0;
}
Example #2
0
void task_server(void *sched)
{
	t_socket *server;
	t_socket *client;

	server = rinoo_tcp_server(sched, IP_ANY, 4242);
	while ((client = rinoo_tcp_accept(server, NULL, NULL)) != NULL) {
		rinoo_task_start(sched, task_client, client);
	}
	rinoo_socket_destroy(server);
}
Example #3
0
void server_func(void *unused(arg))
{
	t_socket *server;
	t_socket *client;

	server = rinoo_tcp_server(rinoo_sched_self(), IP_ANY, 4242);
	XTEST(server != NULL);
	client = rinoo_tcp_accept(server, NULL, NULL);
	XTEST(client != NULL);
	rinoo_log("client accepted");
	rinoo_task_start(rinoo_sched_self(), process_client, client);
	rinoo_socket_destroy(server);
}
Example #4
0
File: http.c Project: dyu/librinoo
void http_server(void *sched)
{
	t_ip ip;
	uint16_t port;
	t_socket *server;
	t_socket *client;

	server = rinoo_tcp_server(sched, IP_ANY, 4242);
	XTEST(server != NULL);
	client = rinoo_tcp_accept(server, &ip, &port);
	XTEST(client != NULL);
	rinoo_log("server - accepting client (%s:%d)", inet_ntoa(*(struct in_addr *) &ip), port);
	rinoo_task_start(sched, http_server_process, client);
	rinoo_socket_destroy(server);
}