projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Major audio format handler cleanups.
[paraslash.git]
/
server.h
diff --git
a/server.h
b/server.h
index cb7a716a1ef6eb17221bcea561ccdc59fee1cd3a..cf17c0ef06c362bb046f9ae538dc44f297497222 100644
(file)
--- a/
server.h
+++ b/
server.h
@@
-1,49
+1,57
@@
/*
/*
- * Copyright (C) 1997-200
7
Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-200
9
Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
*
* 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
#define MMD_INFO_SIZE 16384
+/** The maximum length of the host component in an URL */
+#define MAX_HOSTLEN 256
+
/**
/**
- *
defines one command of para_server
+ *
Defines one command of para_server.
*/
struct server_command {
*/
struct server_command {
-
/** the name of the command
*/
+
/** The name of the command.
*/
const char *name;
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);
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;
unsigned int perms;
-
/** one-line description of the command
*/
+
/** One-line description of the command.
*/
const char *description;
const char *description;
-
/** summary of the command line options
*/
+
/** Summary of the command line options.
*/
const char *usage;
const char *usage;
-
/** the long help text
*/
+
/** The long help text.
*/
const char *help;
};
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{
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;
int cmd_num;
-
/** the number of the sender in question
*/
+
/** The number of the sender in question.
*/
int sender_num;
int sender_num;
-
/** used for the allow/deny/add/remove subcommands
*/
-
struct in_addr addr
;
-
/** used for allow/deny
*/
+
/** Used for the allow/deny/add/remove subcommands.
*/
+
char host[MAX_HOSTLEN]
;
+
/** Used for allow/deny.
*/
int netmask;
int netmask;
-
/** the portnumber for add/remove
*/
+
/** The port number for add/remove.
*/
int port;
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
+ *
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
*
* There's only one struct of this type which lives in shared memory
* for communication between the server instances. Access to this
@@
-59,29
+67,23
@@
struct sender_command_data{
* date.
*/
struct misc_meta_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;
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;
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;
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;
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;
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;
long offset;
- /**
the time para_server started to stream
*/
+ /**
The time para_server started to stream.
*/
struct timeval stream_start;
/**
* The event counter.
struct timeval stream_start;
/**
* The event counter.
@@
-90,28
+92,26
@@
struct misc_meta_data {
* connected clients.
*/
unsigned int events;
* connected clients.
*/
unsigned int events;
- /**
the number of audio files already sent
*/
+ /**
The number of audio files already sent.
*/
unsigned int num_played;
unsigned int num_played;
- /**
the number of executed commands
*/
+ /**
The number of executed commands.
*/
unsigned int num_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;
unsigned int num_connects;
- /**
the number of connections currently active
*/
+ /**
The number of connections currently active.
*/
unsigned int active_connections;
unsigned int active_connections;
- /**
the process id of para_server
*/
- pid_t
server
_pid;
- /**
a string that gets filled in by the current audio file selector
*/
+ /**
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];
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;
struct sender_command_data sender_cmd_data;
+ /** Describes the current audio file. */
struct audio_file_data afd;
};
struct audio_file_data afd;
};
+/** Command line options for para_server. */
extern struct server_args_info conf;
extern struct server_args_info conf;
-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);