X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.h;h=84338e92aa5956560a5659ffc5dd073b1eccef17;hp=cb7a716a1ef6eb17221bcea561ccdc59fee1cd3a;hb=f0380a05616524b149fa34f4a0873d9063ca2a95;hpb=a551870e3ac31ff77e1757f226d3e307e4ef83fc diff --git a/server.h b/server.h index cb7a716a..84338e92 100644 --- a/server.h +++ b/server.h @@ -4,46 +4,46 @@ * Licensed under the GPL v2. For licencing details see COPYING. */ -/** \file server.h common server data structures */ +/** \file server.h Common server data structures. */ -/** size of the selector_info and audio_file info strings of struct misc_meta_data */ +/** Size of the selector_info and audio_file info strings of struct misc_meta_data. */ #define MMD_INFO_SIZE 16384 /** - * defines one command of para_server + * Defines one command of para_server. */ struct server_command { -/** the name of the command */ + /** The name of the command. */ const char *name; -/** pointer to the function that handles the command */ + /** Pointer to the function that handles the command. */ int (*handler)(int, int, char * const * const); -/** the privileges a user must have to execute this command */ + /** The privileges a user must have to execute this command. */ unsigned int perms; -/** one-line description of the command */ + /** One-line description of the command. */ const char *description; -/** summary of the command line options */ + /** Summary of the command line options. */ const char *usage; -/** the long help text */ + /** The long help text. */ const char *help; }; -/** holds the arguments for the para_server's sender command */ +/** Holds the arguments for the para_server's sender command. */ struct sender_command_data{ -/** greater than 0 indicates that a sender cmd is already queued */ + /** Greater than 0 indicates that a sender cmd is already queued. */ int cmd_num; -/** the number of the sender in question */ + /** The number of the sender in question. */ int sender_num; -/** used for the allow/deny/add/remove subcommands */ + /** Used for the allow/deny/add/remove subcommands. */ struct in_addr addr; -/** used for allow/deny */ + /** Used for allow/deny. */ int netmask; -/** the portnumber for add/remove */ + /** The port number for add/remove. */ int port; }; /** - * used for parent-child communication + * Used for parent-child communication. * * There's only one struct of this type which lives in shared memory * for communication between the server instances. Access to this @@ -59,29 +59,23 @@ struct sender_command_data{ * date. */ struct misc_meta_data { - /** information on the current audio file */ - struct audio_format_info afi; - /** the size of the current audio file in bytes */ + /** The size of the current audio file in bytes. */ size_t size; - /** the full path of the current audio file */ - char filename[_POSIX_PATH_MAX]; - /** the last modification file of the current audio file */ + /** The last modification time of the current audio file. */ time_t mtime; - /** the number of the current audio format */ - int audio_format; - /** the "old" status flags -- commands may only read them */ + /** The "old" status flags -- commands may only read them. */ unsigned int vss_status_flags; /** The new status flags -- commands may set them. */ unsigned int new_vss_status_flags; - /** the number of data chunks sent for the current audio file */ + /** The number of data chunks sent for the current audio file. */ long unsigned chunks_sent; - /** set by the jmp/ff commands to the new position in chunks */ + /** Set by the jmp/ff commands to the new position in chunks. */ long unsigned repos_request; /** The number of the chunk currently sent out. */ long unsigned current_chunk; - /** the milliseconds that have been skipped of the current audio file */ + /** The milliseconds that have been skipped of the current audio file. */ long offset; - /** the time para_server started to stream */ + /** The time para_server started to stream. */ struct timeval stream_start; /** * The event counter. @@ -90,28 +84,30 @@ struct misc_meta_data { * connected clients. */ unsigned int events; - /** the number of audio files already sent */ + /** The number of audio files already sent. */ unsigned int num_played; - /** the number of executed commands */ + /** The number of executed commands. */ unsigned int num_commands; - /** the number of connections para_server received so far */ + /** The number of connections para_server received so far. */ unsigned int num_connects; - /** the number of connections currently active */ + /** The number of connections currently active. */ unsigned int active_connections; - /** the process id of para_server */ + /** The process id of para_server. */ pid_t server_pid; - /** a string that gets filled in by the current audio file selector */ + /** This gets updated by afs and contains its current mode. */ char afs_mode_string[MAXLINE]; - /** commands set this to non-zero to change the current selector */ - int selector_change; - /** used by the sender command */ + /** Used by the sender command. */ struct sender_command_data sender_cmd_data; + /** Describes the current audio file. */ struct audio_file_data afd; }; +/** Command line options for para_server. */ extern struct server_args_info conf; + +/** Socket for afs-server communication. */ extern int afs_socket; -int handle_connect(int fd, struct sockaddr_in *addr); +int handle_connect(int fd, const char *peername); void mmd_unlock(void); void mmd_lock(void);