Let afs_event() return int.
[paraslash.git] / afs.h
diff --git a/afs.h b/afs.h
index 7a3f963..8fd8313 100644 (file)
--- a/afs.h
+++ b/afs.h
@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007 Andre Noll <maan@tuebingen.mpg.de>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -104,42 +104,12 @@ enum play_mode {
        PLAY_MODE_PLAYLIST,
 };
 
        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 hash value of audio file data. */
-       unsigned char *hash;
-};
-
-/** Data about the current audio file, passed from afs to server. */
-struct audio_file_data {
-       /** The open file descriptor to the current audio file. */
-       int fd;
-       /** Vss needs this for streaming. */
-       struct afh_info afhi;
-       /** Size of the largest chunk. */
-       uint32_t max_chunk_size;
-       /** Needed to get the audio file header. */
-       uint8_t audio_format_id;
-};
-
 /**
  * Codes used for communication between the server and the afs process.
  *
  * Before forking the afs child, para_server creates a bidirectional pipe
  * through which both processes communicate. Usually para_server requests a new
 /**
  * Codes used for communication between the server and the afs process.
  *
  * Before forking the afs child, para_server creates a bidirectional pipe
  * through which both processes communicate. Usually para_server requests a new
- * audio in order to start streaming or when the end of the current audio file
+ * audio file in order to start streaming or when the end of the current audio file
  * has been reached.  The afs process responds to such a request by sending
  * back an eight byte buffer. The first four bytes is the uint32_t
  * representation of the code, usually \p NEXT_AUDIO_FILE if an admissible
  * has been reached.  The afs process responds to such a request by sending
  * back an eight byte buffer. The first four bytes is the uint32_t
  * representation of the code, usually \p NEXT_AUDIO_FILE if an admissible
@@ -196,7 +166,7 @@ struct pattern_match_data {
  *
  * \sa send_callback_request().
  */
  *
  * \sa send_callback_request().
  */
-typedef void callback_function(int fd, const struct osl_object *);
+typedef int callback_function(int fd, const struct osl_object *);
 
 /**
  * Callbacks send chunks to data back to the command handler. Pointers to
 
 /**
  * Callbacks send chunks to data back to the command handler. Pointers to
@@ -239,7 +209,7 @@ _static_inline_ int afs_max_size_handler(char *buf, size_t size, void *private)
 }
 
 __noreturn void afs_init(uint32_t cookie, int socket_fd);
 }
 
 __noreturn void afs_init(uint32_t cookie, int socket_fd);
-void afs_event(enum afs_events event, struct para_buffer *pb,
+__must_check int afs_event(enum afs_events event, struct para_buffer *pb,
        void *data);
 int send_callback_request(callback_function *f, struct osl_object *query,
                callback_result_handler *result_handler,
        void *data);
 int send_callback_request(callback_function *f, struct osl_object *query,
                callback_result_handler *result_handler,
@@ -253,11 +223,11 @@ int send_standard_callback_request(int argc,  char * const * const argv,
                void *private_result_data);
 int string_compare(const struct osl_object *obj1, const struct osl_object *obj2);
 int for_each_matching_row(struct pattern_match_data *pmd);
                void *private_result_data);
 int string_compare(const struct osl_object *obj1, const struct osl_object *obj2);
 int for_each_matching_row(struct pattern_match_data *pmd);
+void flush_and_free_pb(struct para_buffer *pb);
 
 /* score */
 void score_init(struct afs_table *t);
 int admissible_file_loop(void *data, osl_rbtree_loop_func *func);
 
 /* score */
 void score_init(struct afs_table *t);
 int admissible_file_loop(void *data, osl_rbtree_loop_func *func);
-int admissible_file_loop_reverse(void *data, osl_rbtree_loop_func *func);
 int score_get_best(struct osl_row **aft_row, long *score);
 int get_score_and_aft_row(struct osl_row *score_row, long *score, struct osl_row **aft_row);
 int score_add(const struct osl_row *row, long score);
 int score_get_best(struct osl_row **aft_row, long *score);
 int get_score_and_aft_row(struct osl_row *score_row, long *score, struct osl_row **aft_row);
 int score_add(const struct osl_row *row, long score);
@@ -276,19 +246,18 @@ 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);
 /* 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, long score,
-       struct audio_file_data *afd);
+int open_and_update_audio_file(struct audio_file_data *afd);
 int load_afd(int shmid, struct audio_file_data *afd);
 int get_afsi_of_row(const struct osl_row *row, struct afs_info *afsi);
 int get_afhi_of_row(const struct osl_row *row, struct afh_info *afhi);
 int get_audio_file_path_of_row(const struct osl_row *row, char **path);
 int audio_file_loop(void *private_data, osl_rbtree_loop_func *func);
 int load_afd(int shmid, struct audio_file_data *afd);
 int get_afsi_of_row(const struct osl_row *row, struct afs_info *afsi);
 int get_afhi_of_row(const struct osl_row *row, struct afh_info *afhi);
 int get_audio_file_path_of_row(const struct osl_row *row, char **path);
 int audio_file_loop(void *private_data, osl_rbtree_loop_func *func);
-void aft_check_callback(int fd, __a_unused const struct osl_object *query);
+int aft_check_callback(int fd, __a_unused const struct osl_object *query);
 
 /* playlist */
 int playlist_open(char *name);
 void playlist_close(void);
 
 /* playlist */
 int playlist_open(char *name);
 void playlist_close(void);
-void playlist_check_callback(int fd, __a_unused const struct osl_object *query);
+int playlist_check_callback(int fd, __a_unused const struct osl_object *query);
 
 /** evaluates to 1 if x < y, to -1 if x > y and to 0 if x == y */
 #define NUM_COMPARE(x, y) ((int)((x) < (y)) - (int)((x) > (y)))
 
 /** evaluates to 1 if x < y, to -1 if x > y and to 0 if x == y */
 #define NUM_COMPARE(x, y) ((int)((x) < (y)) - (int)((x) > (y)))