X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.h;h=8de691ca321bd49db2d7c25398537f31b7d03a0c;hp=c248f5202138aa53c856eec9fc8e0751a5717c94;hb=e0e0da08c77df028c261e27f3ab0b6250fbaa3bc;hpb=97fbaf879847d77a91faf40fb7e515df23eb9ba3 diff --git a/server.h b/server.h index c248f520..8de691ca 100644 --- a/server.h +++ b/server.h @@ -1,77 +1,64 @@ /* - * Copyright (C) 1997-2007 Andre Noll + * Copyright (C) 1997 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ /** \file server.h Common server data structures. */ - /** 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. - */ -struct server_command { - /** The name of the command. */ - const char *name; - /** 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. */ - unsigned int perms; - /** One-line description of the command. */ - const char *description; - /** Summary of the command line options. */ - const char *usage; - /** The long help text. */ - const char *help; -}; +/** The maximum length of the host component in an URL */ +#define MAX_HOSTLEN 256 -/** 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. */ + +/** Arguments for the sender command. */ +struct sender_command_data { + /** Greater than zero indicates that a sender cmd is already queued. */ int cmd_num; /** The number of the sender in question. */ int sender_num; /** Used for the allow/deny/add/remove subcommands. */ - struct in_addr addr; + char host[MAX_HOSTLEN]; /** Used for allow/deny. */ int netmask; /** The port number for add/remove. */ int port; + /** Maximal slice size. */ + uint16_t max_slice_bytes; + /** Number of data slices plus redundant slices. */ + uint8_t slices_per_group; + /** Number of slices minus number of redundant slices. */ + uint8_t data_slices_per_group; }; /** - * 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 - * area is serialized via mmd_lock() and mmd_unlock(). There are two - * reasons for a variable to be included here: + * Miscellaneous data for communication between server and command handlers. * - * - At least one command (i.e. child of the server) must be able to - * change its value. + * There's only one instance of this structure which lives in a shared memory + * area. Command handlers communicate with the server process through this + * area. Changes made by the command handlers stay after the command handler + * exits. Conversely, changes made by the server process propagate to the + * command handlers. Access to this area is serialized via mmd_lock() and + * mmd_unlock(). * - * or - * - * - The contents are listed in the stat command and have to be up to - * date. + * There are two reasons for a variable to be included here: (a) at least one + * command handler changes its value, or (b) updates by the server must + * propagate to the stat command handlers. */ struct misc_meta_data { /** The size of the current audio file in bytes. */ size_t size; - /** The last modification time of the current audio file. */ - time_t mtime; /** 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 so far. */ long unsigned chunks_sent; /** Set by the jmp/ff commands to the new position in chunks. */ long unsigned repos_request; - /** The number of the chunk currently sent out. */ + /** The number of the chunk currently being sent. */ long unsigned current_chunk; /** The milliseconds that have been skipped of the current audio file. */ long offset; @@ -80,8 +67,8 @@ struct misc_meta_data { /** * The event counter. * - * Commands may increase this to force a status update to be sent to all - * connected clients. + * Commands may increase this to force a status update to be sent to + * all connected stat clients. */ unsigned int events; /** The number of audio files already sent. */ @@ -92,8 +79,8 @@ struct misc_meta_data { unsigned int num_connects; /** The number of connections currently active. */ unsigned int active_connections; - /** The process id of para_server. */ - pid_t server_pid; + /** 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. */ @@ -105,9 +92,6 @@ struct misc_meta_data { /** 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); -void mmd_unlock(void); -void mmd_lock(void); +__noreturn void handle_connect(int fd, const char *peername); +void parse_config_or_die(int override); +char *server_get_tasks(void);