X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.h;h=1852dd50962b78a72d270bb1d20e61eb0d9911c4;hp=8de691ca321bd49db2d7c25398537f31b7d03a0c;hb=263cda6ee386b9c5d409ca02798632ca67282796;hpb=dfc7d7868b3b5a4fd6916fd96c12a079db5497c5 diff --git a/server.h b/server.h index 8de691ca..1852dd50 100644 --- a/server.h +++ b/server.h @@ -1,8 +1,4 @@ -/* - * Copyright (C) 1997 Andre Noll - * - * Licensed under the GPL v2. For licencing details see COPYING. - */ +/* Copyright (C) 1997 Andre Noll , see file COPYING. */ /** \file server.h Common server data structures. */ @@ -48,8 +44,6 @@ struct sender_command_data { * propagate to the stat command handlers. */ struct misc_meta_data { - /** The size of the current audio file in bytes. */ - size_t size; /** The "old" status flags -- commands may only read them. */ unsigned int vss_status_flags; /** The new status flags -- commands may set them. */ @@ -79,8 +73,6 @@ struct misc_meta_data { unsigned int num_connects; /** The number of connections currently active. */ unsigned int active_connections; - /** The process id of the audio file selector. */ - pid_t afs_pid; /** This gets updated by afs and contains its current mode. */ char afs_mode_string[MAXLINE]; /** Used by the sender command. */ @@ -89,9 +81,38 @@ struct misc_meta_data { struct audio_file_data afd; }; -/** Command line options for para_server. */ -extern struct server_args_info conf; +extern pid_t afs_pid; +extern struct lls_parse_result *server_lpr; + +/** + * Get a reference to the supercommand of para_server. + * + * This is needed for parsing the command line and for the ENUM_STRING_VAL() + * macro below. The latter macro is used in command.c, so CMD_PTR() can not + * be made local to server.c. + */ +#define CMD_PTR (lls_cmd(0, server_suite)) + +/** Get the parse result of an option to para_server. */ +#define OPT_RESULT(_name) (lls_opt_result( \ + LSG_SERVER_PARA_SERVER_OPT_ ## _name, server_lpr)) + +/** How many times a server option was given. */ +#define OPT_GIVEN(_name) (lls_opt_given(OPT_RESULT(_name))) + +/** The (first) argument to a server option of type string. */ +#define OPT_STRING_VAL(_name) (lls_string_val(0, OPT_RESULT(_name))) + +/** The (first) argument to a server option of type uint32. */ +#define OPT_UINT32_VAL(_name) (lls_uint32_val(0, OPT_RESULT(_name))) + +/** The (first) argument to a server option of type int32. */ +#define OPT_INT32_VAL(_name) (lls_int32_val(0, OPT_RESULT(_name))) + +/** Get the string which corresponds to an enum constant. */ +#define ENUM_STRING_VAL(_name) (lls_enum_string_val(OPT_UINT32_VAL(_name), \ + lls_opt(LSG_SERVER_PARA_SERVER_OPT_ ## _name, CMD_PTR))) -__noreturn void handle_connect(int fd, const char *peername); -void parse_config_or_die(int override); +__noreturn void handle_connect(int fd); +void parse_config_or_die(bool reload); char *server_get_tasks(void);