On Sun, 2018-01-28 at 18:40 +0100, Georg Chini wrote: > This patch adds a new feature to the core which allows to send messages > to objects. An object can register/unregister a message handler with > pa_message_handler_{register, unregister}() while a message can be sent > to the handler using the pa_message_handler_send_message() function. > A message has 4 arguments (apart from passing the core): > > object_path: The path identifying the object that will receive the message > message: message command > message_parameters: A string containing additional parameters > response: Pointer to a response string that will be filled by the > message handler. The caller is responsible to free the string. > > The patch is a precondition for the following patches that allow clients > to send messages to pulseaudio objects. > > There is no restriction on object names, except that an object path > always starts with a "/". The intention is to use a path-like syntax, > for example /core/sink_1 for a sink or /name/instances/index for modules. > The exact naming convention still needs to be agreed. > --- > src/Makefile.am | 1 + > src/pulsecore/core.c | 4 ++ > src/pulsecore/core.h | 2 +- > src/pulsecore/message-handler.c | 104 ++++++++++++++++++++++++++++++++++++++++ > src/pulsecore/message-handler.h | 50 +++++++++++++++++++ > 5 files changed, 160 insertions(+), 1 deletion(-) > create mode 100644 src/pulsecore/message-handler.c > create mode 100644 src/pulsecore/message-handler.h > diff --git a/src/pulsecore/message-handler.c b/src/pulsecore/message-handler.c > new file mode 100644 > index 00000000..84ecf1ea > --- /dev/null > +++ b/src/pulsecore/message-handler.c > @@ -0,0 +1,104 @@ > +/*** > + This file is part of PulseAudio. > + > + PulseAudio is free software; you can redistribute it and/or modify > + it under the terms of the GNU Lesser General Public License as published > + by the Free Software Foundation; either version 2.1 of the License, > + or (at your option) any later version. > + > + PulseAudio is distributed in the hope that it will be useful, but > + WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public License > + along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. > +***/ > + > +#ifdef HAVE_CONFIG_H > +#include <config.h> > +#endif > + > +#include <stdlib.h> > +#include <stdio.h> > + > +#include <pulse/xmalloc.h> > + > +#include <pulsecore/core.h> > +#include <pulsecore/core-util.h> > +#include <pulsecore/log.h> > +#include <pulsecore/macro.h> > + > +#include "message-handler.h" > + > +/* Message handler functions */ > + > +/* Register message handler for the specified objct. object_path must be a unique name starting with "/". */ Typo: "objct". Looks good otherwise. -- Tanu https://liberapay.com/tanuk https://www.patreon.com/tanuk