X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=afs.h;h=977fc40b6591dd778294ce7a796a6edcb4746f18;hp=9e1f61e07bd0ef255911eb80ac48b4c93f4651c8;hb=2bb9fcbfa99cf30a6f46ba33fd95c0a456a225cc;hpb=a5b65db9da1cd81c25494429ea8adb5d76e5b32a diff --git a/afs.h b/afs.h index 9e1f61e0..977fc40b 100644 --- a/afs.h +++ b/afs.h @@ -90,18 +90,43 @@ struct afs_table { enum play_mode {PLAY_MODE_MOOD, PLAY_MODE_PLAYLIST}; +/** + * Data about one audio file. + * + * Needed to produce ls and stat output. + */ +struct ls_data { + /** Usual audio format handler information. */ + struct afh_info afhi; + /** Audio file selector information. */ + struct afs_info afsi; + /** The full path of the audio file. */ + char *path; + /** The score value (if -a was given). */ + long score; + /** The sha1 hash of audio file. */ + HASH_TYPE *hash; +}; +int make_status_items(struct ls_data *d, struct para_buffer *pb); +void make_empty_status_items(char *buf); + +#define VERBOSE_LS_OUTPUT_SIZE 4096 + +/* + * Data about the current audio file, passed from afs to server. + */ struct audio_file_data { - enum play_mode current_play_mode; - char attributes_string[MAXLINE]; - char path[_POSIX_PATH_MAX]; + /* Same info as ls -lv -p . */ + char verbose_ls_output[VERBOSE_LS_OUTPUT_SIZE]; + /* The open file descriptor to the current audio file. */ int fd; - long score; - struct afs_info afsi; + /* Vss needs this for streaming. */ struct afh_info afhi; }; enum afs_server_code { NEXT_AUDIO_FILE, + NO_ADMISSIBLE_FILES, AFD_CHANGE }; @@ -175,7 +200,8 @@ int get_attribute_text(uint64_t *atts, const char *delim, char **text); /* aft */ void aft_init(struct afs_table *t); int aft_get_row_of_path(const char *path, struct osl_row **row); -int open_and_update_audio_file(struct osl_row *aft_row, struct audio_file_data *afd); +int open_and_update_audio_file(struct osl_row *aft_row, long score, + struct audio_file_data *afd); int load_afd(int shmid, struct audio_file_data *afd); int load_afsi(struct afs_info *afsi, struct osl_object *obj); void save_afsi(struct afs_info *afsi, struct osl_object *obj); @@ -198,7 +224,6 @@ int mood_check_callback(__a_unused const struct osl_object *query, /* playlist */ int playlist_open(char *name); void playlist_close(void); -int playlist_update_audio_file(struct osl_row *aft_row); int playlist_check_callback(__a_unused const struct osl_object *query, struct osl_object *result);