From 7436b3d1517e69bc4f83f1f4060a1765d6b4dd19 Mon Sep 17 00:00:00 2001 From: Johann Latocha Date: Mon, 30 Jan 2012 14:54:49 +0100 Subject: [SERVER] Some refactoring --- src/client/client.c | 2 +- src/server/hashtable.c | 8 ++++---- src/server/hashtable.h | 8 ++++---- src/server/server.c | 29 ++++++++++++++++------------- src/server/utils.c | 24 ++++++++++++------------ src/server/utils.h | 12 ++++++------ 6 files changed, 43 insertions(+), 40 deletions(-) diff --git a/src/client/client.c b/src/client/client.c index 54535a3..814c5d0 100644 --- a/src/client/client.c +++ b/src/client/client.c @@ -60,7 +60,7 @@ int main(int argc, char *argv[]) int opt = 0; int longIndex = 0; - static const char *optString = "H:p:i:d:D:c:hv?"; + static const char *optString = "H:p:i:d:c:hv?"; static const struct option longOpts[] = { { "host", required_argument, NULL, 'H' }, diff --git a/src/server/hashtable.c b/src/server/hashtable.c index b6272f2..423e7d2 100644 --- a/src/server/hashtable.c +++ b/src/server/hashtable.c @@ -30,19 +30,19 @@ char value_buf[MAX_NUMBER_IMAGES * MAX_FILE_NAME]; char *key_ptr = key_buf; char *val_ptr = value_buf; -void ht_create() +void dnbd3_ht_create() { (void) hcreate(MAX_NUMBER_IMAGES); } -void ht_destroy() +void dnbd3_ht_destroy() { key_ptr = key_buf; val_ptr = value_buf; hdestroy(); } -int ht_insert(char* key, char* value) +int dnbd3_ht_insert(char* key, char* value) { if (strlen(key) > MAX_FILE_ID) return -1; if (strlen(value) > MAX_FILE_NAME) return -2; @@ -62,7 +62,7 @@ int ht_insert(char* key, char* value) return 0; } -char* ht_search(char* key) +char* dnbd3_ht_search(char* key) { ENTRY *result; diff --git a/src/server/hashtable.h b/src/server/hashtable.h index 3851d96..2483bbe 100644 --- a/src/server/hashtable.h +++ b/src/server/hashtable.h @@ -21,12 +21,12 @@ #ifndef HASHTABLE_H_ #define HASHTABLE_H_ -void ht_create (); +void dnbd3_ht_create (); -void ht_destroy(); +void dnbd3_ht_destroy(); -int ht_insert(char* key, char* value); +int dnbd3_ht_insert(char* key, char* value); -char* ht_search(char* key); +char* dnbd3_ht_search(char* key); #endif /* HASHTABLE_H_ */ diff --git a/src/server/server.c b/src/server/server.c index 4dbeb7f..33e93f1 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -66,6 +66,13 @@ void print_version() exit(0); } +void cleanup() +{ + close(_sock); + dnbd3_delete_pid_file(); + exit(EXIT_SUCCESS); +} + void handle_sigpipe(int signum) { printf("ERROR: Received signal SIGPIPE, Broken pipe (errno: %i)\n", errno); @@ -77,16 +84,14 @@ void handle_sighup(int signum) printf("INFO: SIGHUP received!\n"); printf("INFO: Reloading configuration...\n"); pthread_spin_lock(&spinlock); - reload_config(config_file_name); + dnbd3_reload_config(config_file_name); pthread_spin_unlock(&spinlock); } void handle_sigterm(int signum) { printf("INFO: SIGTERM or SIGINT received!\n"); - close(_sock); - delete_pid_file(); - exit(EXIT_SUCCESS); + cleanup(); } void *handle_query(void *client_socket) @@ -105,7 +110,7 @@ void *handle_query(void *client_socket) { case CMD_GET_SIZE: pthread_spin_lock(&spinlock); // because of reloading config - image_file = open(ht_search(request.image_id), O_RDONLY); + image_file = open(dnbd3_ht_search(request.image_id), O_RDONLY); pthread_spin_unlock(&spinlock); if (image_file < 0) { @@ -145,7 +150,7 @@ void *handle_query(void *client_socket) } close(sock); - printf("Client exit.\n"); + printf("INFO: Client exit.\n"); pthread_exit((void *) 0); } @@ -178,11 +183,11 @@ int main(int argc, char* argv[]) break; case 'r': printf("INFO: Reloading configuration file...\n"); - send_signal(SIGHUP); + dnbd3_send_signal(SIGHUP); return EXIT_SUCCESS; case 's': printf("INFO: Stopping running server...\n"); - send_signal(SIGTERM); + dnbd3_send_signal(SIGTERM); return EXIT_SUCCESS; case 'h': print_help(argv[0]); @@ -200,7 +205,7 @@ int main(int argc, char* argv[]) daemon(1,0); pthread_spin_init(&spinlock, PTHREAD_PROCESS_PRIVATE); - load_config(config_file_name); + dnbd3_load_config(config_file_name); // setup signal handler signal(SIGPIPE, handle_sigpipe); @@ -241,7 +246,7 @@ int main(int argc, char* argv[]) exit(EXIT_FAILURE); } - write_pid_file(getpid()); + dnbd3_write_pid_file(getpid()); printf("INFO: Server is ready...\n"); while (1) @@ -261,7 +266,5 @@ int main(int argc, char* argv[]) pthread_detach(thread); } - close(_sock); - delete_pid_file(); - return EXIT_SUCCESS; + cleanup(); } diff --git a/src/server/utils.c b/src/server/utils.c index e0bbecf..ab0d29d 100644 --- a/src/server/utils.c +++ b/src/server/utils.c @@ -25,7 +25,7 @@ #include #include -void write_pid_file(pid_t pid) +void dnbd3_write_pid_file(pid_t pid) { FILE *f = fopen(SERVER_PID_FILE, "w"); if(f != NULL) @@ -39,7 +39,7 @@ void write_pid_file(pid_t pid) } } -pid_t read_pid_file() +pid_t dnbd3_read_pid_file() { pid_t pid = 0; @@ -57,7 +57,7 @@ pid_t read_pid_file() return pid; } -void delete_pid_file() +void dnbd3_delete_pid_file() { if (unlink(SERVER_PID_FILE) != 0) { @@ -66,9 +66,9 @@ void delete_pid_file() } -void load_config(char* config_file_name) +void dnbd3_load_config(char* config_file_name) { - ht_create(); + dnbd3_ht_create(); FILE *config_file = fopen(config_file_name, "r"); if (config_file == NULL) @@ -84,7 +84,7 @@ void load_config(char* config_file_name) while (fgets(line, sizeof(line), config_file) != NULL) { sscanf(line, "%as %as", &image_name, &image_id); - if (ht_insert(image_id, image_name) < 0) + if (dnbd3_ht_insert(image_id, image_name) < 0) { printf("ERROR: Image name or ID is too big\n"); exit(EXIT_FAILURE); @@ -93,21 +93,21 @@ void load_config(char* config_file_name) fclose(config_file); } -void reload_config(char* config_file_name) +void dnbd3_reload_config(char* config_file_name) { - ht_destroy(); - load_config(config_file_name); + dnbd3_ht_destroy(); + dnbd3_load_config(config_file_name); } -void send_signal(int signum) +void dnbd3_send_signal(int signum) { - pid_t pid = read_pid_file(); + pid_t pid = dnbd3_read_pid_file(); if (pid != 0) { if (kill(pid, signum) != 0) { printf("ERROR: dnbd3-server is not running\n"); - delete_pid_file(); + dnbd3_delete_pid_file(); } } else diff --git a/src/server/utils.h b/src/server/utils.h index f9d6896..67a5444 100644 --- a/src/server/utils.h +++ b/src/server/utils.h @@ -26,13 +26,13 @@ #ifndef UTILS_H_ #define UTILS_H_ -void write_pid_file(pid_t pid); -pid_t read_pid_file(); -void delete_pid_file(); +void dnbd3_write_pid_file(pid_t pid); +pid_t dnbd3_read_pid_file(); +void dnbd3_delete_pid_file(); -void load_config(char* config_file_name); -void reload_config(char* config_file_name); +void dnbd3_load_config(char* config_file_name); +void dnbd3_reload_config(char* config_file_name); -void send_signal(int signum); +void dnbd3_send_signal(int signum); #endif /* UTILS_H_ */ -- cgit v1.2.3-55-g7522