wpipc
This MR implements a simple libwpipc.so
library that uses sockets for inter-process communication between wireplumber and external applications. Apart from that, a new wireplumber module called ipc
is also added to handle requests coming from external wpipc
applications. Only PLAY
and STOP
requests are handled by such module. These requests will set or remove metadata that will be used by the policy to unlink or re-link endpoints with client nodes.
The above can be easily tested with the wpipc-client
example executable. To unlink all endpoint links while audio is being played, execute the client like this:
./build/tests/examples/wpipc-client /tmp/wpipc STOP
Audio should stop playing. To re-link all endpoints, execute the client like this:
./build/tests/examples/wpipc-client /tmp/wpipc PLAY
Audio should start playing again. Note that several clients can send STOP
and PLAY
requests, so the ipc
module keeps internally a counter to decided whether endpoint links should be unlinked or not. For example, if 2 clients send a PLAY
request, and another one sends a STOP
request, the endpoints won't be unlinked. You would have to send an extra STOP
request for the endpoints to be unlinked.