コード例 #1
0
ファイル: server.c プロジェクト: Narthorn/oio-sds
void
stop_server(void)
{
	DEBUG("Stopping the server...");

	if (sock_unix >= 0) {
		remove_fd_from_io_scheduler(&worker_unix, NULL);
		metautils_pclose(&sock_unix);
		unlink(unix_socket_path);
	}

	if (sock_inet >= 0) {
		remove_fd_from_io_scheduler(&worker_inet, NULL);
		metautils_pclose(&sock_inet);
	}

	DEBUG("The server is stopped.");
}
コード例 #2
0
ファイル: server.c プロジェクト: amogrid/redcurrant
void
stop_server(void)
{
	DEBUG("Stopping the server...");

	if (usock>=0) {
		remove_fd_from_io_scheduler(&worker_unix, NULL);
		metautils_pclose(&usock);
	}

	if (sock_inet>=0) {
		remove_fd_from_io_scheduler(&worker_inet, NULL);
		metautils_pclose(&sock_inet);
	}

	unlink(AGENT_SOCK_PATH);
	DEBUG("The server is stopped.");
}
コード例 #3
0
ファイル: services_task_check.c プロジェクト: korween/oio-sds
/**
 * This function is passed as the worker callback but does nothing
 * else that closing the connection. At this point, the objective
 * has been reached.
 */
static int
_check_tcp_service_worker_func(worker_t *worker, GError **error)
{
	struct workerdata_checksrv_s *wdata;

	(void) error;
	wdata = worker->data.session;
	wdata->flag_connected = TRUE;

	remove_fd_from_io_scheduler(worker, NULL);
	worker->func = agent_worker_default_func;

	_check_tcp_service_worker_cleaner(worker);
	g_free(worker);
	return 1;
}
コード例 #4
0
int read_response_body(worker_t *worker, GError **error) {
        ssize_t rl;
        worker_data_t *data = NULL;
        http_session_t *http_session = NULL;

        TRACE("Executing read_response_body worker");

        data = &(worker->data);
        http_session = (http_session_t*)data->session;

        if (data->done >= data->buffer_size) {  /* All content was read */

		http_session->body = g_strndup(data->buffer, data->buffer_size);

		DEBUG("HTTP response body : [%s]", http_session->body);

                /* Remove fd from sched to close connection */
                remove_fd_from_io_scheduler(worker, error);

                /* Clean data */
                CLEAR_WORKER_DATA(data);

		return(http_session->response_handler(worker, error));

        } else {

                rl = read(data->fd, data->buffer + data->done, data->buffer_size - data->done);
                if (rl < 0) {
                        GSETERROR(error, "Read on socket failed with error : %s", strerror(errno));
                        goto error_read;
                }

                if (rl == 0 && data->done < data->buffer_size) {
                        GSETERROR(error, "Connection closed while parsing rawx status");
                        goto error_read;
                }

                data->done += rl;
        }

	return(1);

error_read:

        return(http_session->error_handler(worker, error));
}