X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.h;h=08fa11b19e8379b2e91649094d19704f3be9c752;hp=ba9b39e45359ef08deba2c2ead21d4acfc4616b2;hb=434b32087a9e2d54ca88072ca798a703a2ff629f;hpb=f6dc51ad7914b60fe71a4fc53460925bdc513a9d diff --git a/server.h b/server.h index ba9b39e4..08fa11b1 100644 --- a/server.h +++ b/server.h @@ -1,67 +1,33 @@ /* - * Copyright (C) 1997-2006 Andre Noll + * Copyright (C) 1997-2007 Andre Noll * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Licensed under the GPL v2. For licencing details see COPYING. */ /** \file server.h common server data structures */ #include "para.h" +#include "afh.h" - -/** size of the dbinfo 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 -/** - * permission flags that can be set individually for any server command - * - * - DB_READ: command reads from the database - * - DB_WRITE: command changes the contents of the database - * - AFS_READ: command reads information about the current audio stream - * - AFS_WRITE: command changes the current audio stream - */ -enum {DB_READ = 1, DB_WRITE = 2, AFS_READ = 4, AFS_WRITE = 8}; - -/** - * data needed to authenticate the user - */ -struct user{ -/** the username */ - char name[MAXLINE]; -/** full path to the public RSA key */ - char pubkey_file[_POSIX_PATH_MAX]; -/** the privileges of this user */ - unsigned int perms; -}; - /** * defines one command of para_server */ struct server_command { /** the name of the command */ - char *name; + const char *name; /** pointer to the function that handles the command */ int (*handler)(int, int, char **); /** the privileges a user must have to execute this command */ unsigned int perms; /** one-line description of the command */ - char *description; + const char *description; /** summary of the command line options */ - char *synopsis; + const char *usage; /** the long help text */ - char *help; + const char *help; }; /** holds the arguments for the para_server's sender command */ @@ -94,35 +60,31 @@ struct sender_command_data{ * - The contents are listed in the stat command and have to be up to * date. */ -struct misc_meta_data{ +struct misc_meta_data { +/** information on the current audio file */ + struct audio_format_info afi; /** the size of the current audio file in bytes */ - long unsigned int size; + 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 */ time_t mtime; -/* the number of the current audio format */ +/** the number of the current audio format */ int audio_format; /** the "old" status flags -- commands may only read them */ - unsigned int afs_status_flags; + unsigned int vss_status_flags; /** the new status flags -- commands may set them **/ - unsigned int new_afs_status_flags; + unsigned int new_vss_status_flags; /** the number of data chunks sent for the current audio file */ long unsigned chunks_sent; -/** the number of chunks this audio file contains */ - long unsigned chunks_total; /** 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 */ long offset; -/** the length of the audio file in seconds */ - int seconds_total; /** the time para_server started to stream */ struct timeval stream_start; -/** a string that gets filled in by the audio format handler */ - char audio_file_info[MMD_INFO_SIZE]; /** the event counter * * commands may increase this to force a status update to be sent to all @@ -139,18 +101,17 @@ struct misc_meta_data{ unsigned int active_connections; /** the process id of para_server */ pid_t server_pid; -/** a string that gets filled in by the current database tool */ - char dbinfo[MMD_INFO_SIZE]; -/** the number if the current database tool */ - int dbt_num; -/** commands set this to non-zero to request a database tool change */ - int dbt_change; +/** a string that gets filled in by the current audio file selector */ + char selector_info[MMD_INFO_SIZE]; +/** the number if the current audio file selector */ + int selector_num; +/** commands set this to non-zero to change the current selector */ + int selector_change; /** used by the sender command */ struct sender_command_data sender_cmd_data; -/** each dbtool has its private data pointer */ - void *private_dbtool_data[NUM_DBTOOLS]; }; +extern struct server_args_info conf; int handle_connect(int fd, struct sockaddr_in *addr); void mmd_unlock(void);