153a5a1b3Sopenharmony_ci#ifndef foocoremessageshfoo
253a5a1b3Sopenharmony_ci#define foocoremessageshfoo
353a5a1b3Sopenharmony_ci
453a5a1b3Sopenharmony_ci/***
553a5a1b3Sopenharmony_ci  This file is part of PulseAudio.
653a5a1b3Sopenharmony_ci
753a5a1b3Sopenharmony_ci  PulseAudio is free software; you can redistribute it and/or modify
853a5a1b3Sopenharmony_ci  it under the terms of the GNU Lesser General Public License as published
953a5a1b3Sopenharmony_ci  by the Free Software Foundation; either version 2.1 of the License,
1053a5a1b3Sopenharmony_ci  or (at your option) any later version.
1153a5a1b3Sopenharmony_ci
1253a5a1b3Sopenharmony_ci  PulseAudio is distributed in the hope that it will be useful, but
1353a5a1b3Sopenharmony_ci  WITHOUT ANY WARRANTY; without even the implied warranty of
1453a5a1b3Sopenharmony_ci  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1553a5a1b3Sopenharmony_ci  General Public License for more details.
1653a5a1b3Sopenharmony_ci
1753a5a1b3Sopenharmony_ci  You should have received a copy of the GNU Lesser General Public License
1853a5a1b3Sopenharmony_ci  along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
1953a5a1b3Sopenharmony_ci***/
2053a5a1b3Sopenharmony_ci
2153a5a1b3Sopenharmony_ci#include <pulsecore/core.h>
2253a5a1b3Sopenharmony_ci#include <pulsecore/json.h>
2353a5a1b3Sopenharmony_ci
2453a5a1b3Sopenharmony_ci/* Message handler types and functions */
2553a5a1b3Sopenharmony_ci
2653a5a1b3Sopenharmony_ci/* Prototype for message callback */
2753a5a1b3Sopenharmony_citypedef int (*pa_message_handler_cb_t)(
2853a5a1b3Sopenharmony_ci        const char *object_path,
2953a5a1b3Sopenharmony_ci        const char *message,
3053a5a1b3Sopenharmony_ci        const pa_json_object *parameters,
3153a5a1b3Sopenharmony_ci        char **response,
3253a5a1b3Sopenharmony_ci        void *userdata);
3353a5a1b3Sopenharmony_ci
3453a5a1b3Sopenharmony_ci/* Message handler object */
3553a5a1b3Sopenharmony_cistruct pa_message_handler {
3653a5a1b3Sopenharmony_ci    char *object_path;
3753a5a1b3Sopenharmony_ci    char *description;
3853a5a1b3Sopenharmony_ci    pa_message_handler_cb_t callback;
3953a5a1b3Sopenharmony_ci    void *userdata;
4053a5a1b3Sopenharmony_ci};
4153a5a1b3Sopenharmony_ci
4253a5a1b3Sopenharmony_ci/* Handler registration */
4353a5a1b3Sopenharmony_civoid pa_message_handler_register(pa_core *c, const char *object_path, const char *description, pa_message_handler_cb_t cb, void *userdata);
4453a5a1b3Sopenharmony_civoid pa_message_handler_unregister(pa_core *c, const char *object_path);
4553a5a1b3Sopenharmony_ci
4653a5a1b3Sopenharmony_ci/* Send message to the specified object path */
4753a5a1b3Sopenharmony_ciint pa_message_handler_send_message(pa_core *c, const char *object_path, const char *message, const char *message_parameters, char **response);
4853a5a1b3Sopenharmony_ci
4953a5a1b3Sopenharmony_ci/* Set handler description */
5053a5a1b3Sopenharmony_ciint pa_message_handler_set_description(pa_core *c, const char *object_path, const char *description);
5153a5a1b3Sopenharmony_ci#endif
52