X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=afs.h;h=b1606493a05f047afb1e8ecb0fdd0a5bbcbafcfe;hb=HEAD;hp=a6394fa6b512364e6c4658361687d85a5eb32520;hpb=9055c71be97f1095dcdbd83da305b600f204f763;p=paraslash.git diff --git a/afs.h b/afs.h index a6394fa6..e8b8c865 100644 --- a/afs.h +++ b/afs.h @@ -169,6 +169,8 @@ struct afs_callback_arg { }; /** + * The "top half" of an afs command. + * * Afs command handlers run as a process which is not related to the afs * process, i.e. they can not change the address space of afs directly. * Therefore afs commands typically consist of two functions: The command @@ -179,9 +181,13 @@ struct afs_callback_arg { typedef int afs_callback(struct afs_callback_arg *aca); /** + * Dispatch the output of an afs callback. + * * Some AFS callbacks need to send data back to the command handler. Pointers * to this type of function are passed to \ref send_callback_request() and - * related functions to dispatch the data in the command handler process. + * related functions to dispatch the data in the command handler process. Most + * (but not all) afs commands pass \ref afs_cb_result_handler(), which sends + * the output of the callback to the connected client. */ typedef int callback_result_handler(struct osl_object *result, uint8_t band, void *private); int afs_cb_result_handler(struct osl_object *result, uint8_t band, void *private); @@ -225,15 +231,19 @@ int send_callback_request(afs_callback *f, struct osl_object *query, int send_lls_callback_request(afs_callback *f, const struct lls_command * const cmd, struct lls_parse_result *lpr, void *private_result_data); +__printf_2_3 void afs_error(const struct afs_callback_arg *aca, + const char *fmt,...); int string_compare(const struct osl_object *obj1, const struct osl_object *obj2); int for_each_matching_row(struct pattern_match_data *pmd); /* score */ extern const struct afs_table_operations score_ops; -int score_loop(osl_rbtree_loop_func *func, void *data); +void score_open(struct osl_table **result); +void score_close(struct osl_table *t); +int score_loop(osl_rbtree_loop_func *func, struct osl_table *t, void *data); 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_add(const struct osl_row *aft_row, long score, struct osl_table *t); int score_update(const struct osl_row *aft_row, long new_score); int score_delete(const struct osl_row *aft_row); void score_clear(void); @@ -260,13 +270,17 @@ int aft_check_callback(struct afs_callback_arg *aca); void free_status_items(void); /* mood */ -int mood_load(const char *mood_name, char **msg); -void mood_unload(void); +struct mood_instance; +int mood_load(const char *mood_name, struct mood_instance **result, char **msg); +int mood_loop(struct mood_instance *m, osl_rbtree_loop_func *func, void *data); +void mood_unload(struct mood_instance *m); int mood_check_callback(struct afs_callback_arg *aca); /* playlist */ -int playlist_load(const char *name, char **msg); -void playlist_unload(void); +struct playlist_instance; +int playlist_load(const char *name, struct playlist_instance **result, char **msg); +int playlist_loop(struct playlist_instance *pi, osl_rbtree_loop_func *func, void *data); +void playlist_unload(struct playlist_instance *pi); int playlist_check_callback(struct afs_callback_arg *aca); /** evaluates to 1 if x < y, to -1 if x > y and to 0 if x == y */