[prev in list] [next in list] [prev in thread] [next in thread]
List: prelude-cvslog
Subject: [prelude-cvslog] r9855 - prelude-manager/trunk/src
From: noreply () prelude-ids ! org
Date: 2007-08-23 17:43:36
Message-ID: 20070823174336.D3586E1898B () mail ! prelude-ids ! org
[Download RAW message or body]
Author: yoann
Date: 2007-08-23 19:43:34 +0200 (Thu, 23 Aug 2007)
New Revision: 9855
Modified:
prelude-manager/trunk/src/server-logic.c
Log:
Whitespace police.
Modified: prelude-manager/trunk/src/server-logic.c
===================================================================
--- prelude-manager/trunk/src/server-logic.c 2007-08-23 17:43:25 UTC (rev 9854)
+++ prelude-manager/trunk/src/server-logic.c 2007-08-23 17:43:34 UTC (rev 9855)
@@ -1,3 +1,4 @@
+
/*****
*
* Copyright (C) 2001, 2002, 2003, 2004, 2005 PreludeIDS Technologies. All Rights \
Reserved. @@ -85,14 +86,14 @@
*/
pthread_t thread;
-
+
/*
* Array containing client / file descriptor polling related data.
*/
struct pollfd *pfd;
server_logic_client_t **client;
prelude_bool_t rescan_pfd;
-
+
/*
* Index used to address free client data / pfd.
*/
@@ -107,14 +108,14 @@
pthread_mutex_t startup_mutex;
time_t last_time_used;
-
+
} server_fd_set_t;
struct server_logic {
void *sdata;
-
+
server_logic_read_t *read;
server_logic_write_t *write;
server_logic_close_t *close;
@@ -124,15 +125,15 @@
*/
unsigned int connection_max;
unsigned int connection_num;
-
+
/*
- *
+ *
*/
unsigned int thread_min;
unsigned int thread_num;
unsigned int thread_max_fd;
-
+
/*
* List of connection set associated with this server.
*/
@@ -147,27 +148,27 @@
static inline void add_connection_to_tbl(server_logic_t *server, server_fd_set_t \
*set, server_logic_client_t *client)
-{
+{
/*
* We should never enter here if there is no free fd.
*/
assert(set->used_index < server->thread_max_fd);
client->key = set->used_index;
-
+
/*
* Client fd / data should always be -1 / NULL at this time.
*/
assert(set->pfd[client->key].fd == -1);
assert(set->client[client->key] == NULL);
-
+
/*
* Setup This connection.
*/
client->set = set;
client->event_flags = LOGIC_FLAGS_READ;
set->client[client->key] = client;
-
+
set->used_index++;
set->rescan_pfd = TRUE;
}
@@ -175,10 +176,10 @@
-static void remove_connection_from_tbl(server_logic_t *server, server_fd_set_t *set, \
int cnx_key) +static void remove_connection_from_tbl(server_logic_t *server, \
server_fd_set_t *set, int cnx_key) {
int key;
-
+
key = --set->used_index;
assert(cnx_key <= key);
@@ -192,7 +193,7 @@
set->pfd[cnx_key].fd = set->pfd[key].fd;
set->pfd[cnx_key].events = set->pfd[key].events;
}
-
+
/*
* From The Single UNIX Specification, Version 2 :
*
@@ -212,9 +213,9 @@
{
if ( server->connection_max && server->connection_num == \
server->connection_max ) return -1;
-
+
server->connection_num++;
-
+
return 0;
}
@@ -232,24 +233,24 @@
-static void update_fd_set_status(server_logic_t *server, server_fd_set_t *set)
-{
+static void update_fd_set_status(server_logic_t *server, server_fd_set_t *set)
+{
/*
* If we can accept connection again, put this set into our free set list.
*/
- if ( set->used_index == (server->thread_max_fd - 1) )
- add_set_to_free_list(server, set);
+ if ( set->used_index == (server->thread_max_fd - 1) )
+ add_set_to_free_list(server, set);
}
-static int remove_connection(server_fd_set_t *set, int cnx_key)
+static int remove_connection(server_fd_set_t *set, int cnx_key)
{
int ret;
server_logic_t *server = set->parent;
dprint("removing connection\n");
-
+
/*
* Close the file descriptor associated with this set.
*/
@@ -258,16 +259,16 @@
dprint("remove connection not completed\n");
return ret;
}
-
+
/*
* As of now we need to obtain the server lock because
* we may modify shared data
*/
pthread_mutex_lock(&server->mutex);
-
+
remove_connection_from_tbl(server, set, cnx_key);
update_fd_set_status(server, set);
-
+
pthread_mutex_unlock(&server->mutex);
return 0;
@@ -282,9 +283,9 @@
static void add_connection(server_logic_t *server, server_fd_set_t *set, \
server_logic_client_t *client) {
add_connection_to_tbl(server, set, client);
-
+
dprint("Adding connection, fd=%d, key=%d\n", prelude_io_get_fd(client->fd), \
client->key);
-
+
/*
* If the set is full, remove it from out list.
* The list should be locked when this function is called !
@@ -297,10 +298,10 @@
}
-static int handle_fd_event(server_fd_set_t *set, int cnx_key)
+static int handle_fd_event(server_fd_set_t *set, int cnx_key)
{
int ret = 0;
-
+
assert(set->client[cnx_key]->key == cnx_key);
if ( set->pfd[cnx_key].revents & POLLIN ) {
@@ -321,13 +322,13 @@
dprint("thread=%ld: key=%d, fd=%d: Output possible.\n", \
pthread_self(), cnx_key, set->pfd[cnx_key].fd);
ret = set->parent->write(set->parent->sdata, set->client[cnx_key]);
}
-
+
return ret;
}
-static void poll_fd_set(server_fd_set_t *set)
+static void poll_fd_set(server_fd_set_t *set)
{
struct timeval ts, te;
int i, r = 0, ret, active_fd, index = set->used_index;
@@ -339,10 +340,10 @@
if ( active_fd < 0 ) {
if ( errno == EINTR )
return;
-
+
prelude_log(PRELUDE_LOG_ERR, "error polling fd set: %s.\n", \
strerror(errno)); }
-
+
gettimeofday(&ts, NULL);
/*
@@ -351,16 +352,16 @@
for ( i = 0; i < index; i++ ) {
/*
* This fd is currently ignored (-1).
- */
- if ( set->pfd[i].fd != -1 && ! (set->client[i]->event_flags & \
LOGIC_FLAGS_CLOSING) ) {
- ret = handle_fd_event(set, i);
+ */
+ if ( set->pfd[i].fd != -1 && ! (set->client[i]->event_flags & \
LOGIC_FLAGS_CLOSING) ) { + ret = handle_fd_event(set, i);
if ( ret > 0 )
rescan[r++] = set->client[i];
-
+
if ( ret < 0 )
set->client[i]->event_flags |= LOGIC_FLAGS_CLOSING;
}
-
+
if ( set->client[i]->event_flags & LOGIC_FLAGS_CLOSING ) {
ret = remove_connection(set, i);
if ( ret == 0 ) {
@@ -372,7 +373,7 @@
while ( r && ! set->rescan_pfd ) {
for ( i = 0; i < r; i++ ) {
- ret = handle_fd_event(set, rescan[i]->key);
+ ret = handle_fd_event(set, rescan[i]->key);
if ( ret < 0 ) {
rescan[i]->event_flags |= LOGIC_FLAGS_CLOSING;
remove_connection(set, rescan[i]->key);
@@ -381,8 +382,8 @@
if ( ret <= 0 )
rescan[i] = rescan[--r];
}
-
- gettimeofday(&te, NULL);
+
+ gettimeofday(&te, NULL);
if ( te.tv_sec != ts.tv_sec || (te.tv_usec - ts.tv_usec) > \
POLL_SLEEP_MS ) break;
}
@@ -390,61 +391,61 @@
-static void destroy_fd_set(server_logic_t *server, server_fd_set_t *set)
+static void destroy_fd_set(server_logic_t *server, server_fd_set_t *set)
{
int i;
-
+
dprint("killing thread %ld on exit request.\n", set->thread);
-
+
prelude_list_del(&set->list);
server->thread_num--;
pthread_mutex_unlock(&set->parent->mutex);
-
+
for ( i = 0; i < set->used_index; i++ )
server->close(server->sdata, set->client[i]);
-
+
pthread_cond_destroy(&set->startup_cond);
pthread_mutex_destroy(&set->startup_mutex);
-
+
free(set->pfd);
- free(set->client);
+ free(set->client);
free(set);
}
-static void *child_reader(void *ptr)
+static void *child_reader(void *ptr)
{
int i;
time_t now;
sigset_t s;
server_fd_set_t *set = ptr;
-
+
pthread_detach(set->thread);
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
sigfillset(&s);
pthread_sigmask(SIG_SETMASK, &s, NULL);
-
+
/*
* signal that we are ready to get connection.
*/
pthread_mutex_lock(&set->startup_mutex);
pthread_cond_signal(&set->startup_cond);
pthread_mutex_unlock(&set->startup_mutex);
-
+
while ( set->parent->continue_processing ) {
now = time(NULL);
-
+
pthread_mutex_lock(&set->parent->mutex);
if ( set->used_index )
set->last_time_used = now;
-
+
else if ( set->parent->thread_num > set->parent->thread_min ) {
- if ( now - set->last_time_used >= EMPTY_THREAD_TTL ) { \
+ if ( now - set->last_time_used >= EMPTY_THREAD_TTL ) {
destroy_fd_set(set->parent, set);
break;
}
@@ -452,14 +453,14 @@
if ( set->rescan_pfd ) {
dprint("Updating polled entry.\n");
-
- for ( i = 0; i < set->used_index; i++ ) { \
+
+ for ( i = 0; i < set->used_index; i++ ) {
/*
* Update the pfd events field to include latest
* modification made (possibly from another thread) \
if needed.
*/
set->pfd[i].events = 0;
-
+
if ( set->client[i]->event_flags & LOGIC_FLAGS_WRITE \
) set->pfd[i].events |= POLLOUT;
else
@@ -473,14 +474,14 @@
if ( ! (set->client[i]->event_flags & \
LOGIC_FLAGS_CLOSING) )
set->pfd[i].fd = \
prelude_io_get_fd(set->client[i]->fd); }
-
+
set->rescan_pfd = FALSE;
}
-
+
pthread_mutex_unlock(&set->parent->mutex);
poll_fd_set(set);
}
-
+
pthread_exit(NULL);
return NULL; /* not needed, but avoid a warning. */
@@ -488,11 +489,11 @@
-static server_fd_set_t *create_fd_set(server_logic_t *server)
+static server_fd_set_t *create_fd_set(server_logic_t *server)
{
int i;
server_fd_set_t *new;
-
+
new = malloc(sizeof(*new));
if ( ! new ) {
prelude_log(PRELUDE_LOG_ERR, "memory exhausted.\n");
@@ -513,11 +514,11 @@
free(new);
return NULL;
}
-
+
new->used_index = 0;
new->parent = server;
new->last_time_used = time(NULL);
-
+
pthread_cond_init(&new->startup_cond, NULL);
pthread_mutex_init(&new->startup_mutex, NULL);
@@ -530,19 +531,19 @@
pthread_mutex_lock(&server->mutex);
prelude_list_add_tail(&server->free_set_list, &new->list);
pthread_mutex_unlock(&server->mutex);
-
+
return new;
}
-static int start_fd_set_thread(server_logic_t *server, server_fd_set_t *set)
+static int start_fd_set_thread(server_logic_t *server, server_fd_set_t *set)
{
- int ret;
-
+ int ret;
+
pthread_mutex_lock(&set->startup_mutex);
-
- ret = pthread_create(&set->thread, NULL, &child_reader, set); \
+
+ ret = pthread_create(&set->thread, NULL, &child_reader, set);
if ( ret < 0 ) {
pthread_mutex_unlock(&set->startup_mutex);
prelude_log(PRELUDE_LOG_ERR, "couldn't create thread.\n");
@@ -553,7 +554,7 @@
* wait for the thread to be started.
*/
pthread_cond_wait(&set->startup_cond, &set->startup_mutex);
-
+
pthread_mutex_unlock(&set->startup_mutex);
pthread_cond_destroy(&set->startup_cond);
pthread_mutex_destroy(&set->startup_mutex);
@@ -561,7 +562,7 @@
server->thread_num++;
dprint("Created thread %ld (used=%d)\n", set->thread, set->used_index);
-
+
return 0;
}
@@ -569,7 +570,7 @@
static void logic_modify_flags(server_logic_client_t *fd, int flags)
{
server_fd_set_t *set = fd->set;
-
+
pthread_mutex_lock(&set->parent->mutex);
fd->event_flags = flags;
set->rescan_pfd = TRUE;
@@ -592,7 +593,7 @@
{
int ret;
server_fd_set_t *set;
-
+
/*
* Hold the list lock until we add the connection.
* Because adding a connection could have the side effect of modifying
@@ -600,34 +601,34 @@
* side effect).
*/
pthread_mutex_lock(&server->mutex);
-
+
if ( increase_connection_count_if_possible(server) < 0 ) {
pthread_mutex_unlock(&server->mutex);
return -1;
}
-
+
if ( ! prelude_list_is_empty(&server->free_set_list) ) {
set = prelude_list_entry(server->free_set_list.next, \
server_fd_set_t, list); add_connection(server, set, client);
pthread_mutex_unlock(&server->mutex);
-
+
} else {
pthread_mutex_unlock(&server->mutex);
-
+
set = create_fd_set(server);
- if ( ! set )
+ if ( ! set )
return -1;
-
+
add_connection(server, set, client);
-
+
ret = start_fd_set_thread(server, set);
if ( ret < 0 ) {
destroy_fd_set(server, set);
return -1;
}
}
-
+
return 0;
}
@@ -641,7 +642,7 @@
* Signal to the server thread(s) that they should stop
* processing requests.
*/
-void server_logic_stop(server_logic_t *server)
+void server_logic_stop(server_logic_t *server)
{
pthread_mutex_lock(&server->mutex);
server->continue_processing = 0;
@@ -656,7 +657,7 @@
*
* Destroy the @server object.
*
- * Warning: in the current state, server_logic_destroy() should only be
+ * Warning: in the current state, server_logic_destroy() should only be
* used if server_logic_process_requests() was not yet called.
*/
void server_logic_destroy(server_logic_t *server)
@@ -675,7 +676,7 @@
* Tell server-logic not to handle more than @max connection.
* The default is zero, meaning there is no limit.
*/
-void server_logic_set_max_connection(server_logic_t *server, unsigned int max)
+void server_logic_set_max_connection(server_logic_t *server, unsigned int max)
{
server->connection_max = max;
}
@@ -689,7 +690,7 @@
* @min:
*
*/
-void server_logic_set_min_running_thread(server_logic_t *server, unsigned int min)
+void server_logic_set_min_running_thread(server_logic_t *server, unsigned int min)
{
server->thread_min = min;
}
@@ -702,7 +703,7 @@
* @max:
*
*/
-void server_logic_set_max_fd_by_thread(server_logic_t *server, unsigned int max)
+void server_logic_set_max_fd_by_thread(server_logic_t *server, unsigned int max)
{
server->thread_max_fd = max;
}
@@ -719,7 +720,7 @@
* Returns: A pointer to a new server_logic_t, NULL on error.
*/
server_logic_t *server_logic_new(void *sdata, server_logic_read_t *s_read,
- server_logic_write_t *s_write, server_logic_close_t \
*s_close) + server_logic_write_t *s_write, \
server_logic_close_t *s_close) {
server_logic_t *new;
@@ -735,15 +736,15 @@
new->read = s_read;
new->write = s_write;
new->close = s_close;
-
+
new->thread_num = 0;
new->connection_num = 0;
-
+
new->thread_min = DEFAULT_MIN_THREAD;
new->connection_max = DEFAULT_MAX_CONNECTION;
new->thread_max_fd = DEFAULT_MAX_FD_BY_THREAD;
new->continue_processing = 1;
-
+
return new;
}
@@ -754,11 +755,11 @@
* @client:
*
*/
-int server_logic_remove_client(server_logic_client_t *client)
+int server_logic_remove_client(server_logic_client_t *client)
{
if ( client->key < 0 )
return -1;
-
+
logic_modify_flags(client, client->event_flags | LOGIC_FLAGS_CLOSING);
return 0;
}
@@ -769,9 +770,9 @@
{
logic_modify_flags(fd, fd->event_flags | LOGIC_FLAGS_WRITE);
}
-
+
void server_logic_notify_write_disable(server_logic_client_t *fd)
{
logic_modify_flags(fd, fd->event_flags & ~LOGIC_FLAGS_WRITE);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic