AClientConnection.cpp 923 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include <LibAudio/ABuffer.h>
  2. #include <LibAudio/AClientConnection.h>
  3. #include <SharedBuffer.h>
  4. AClientConnection::AClientConnection()
  5. : Connection("/tmp/asportal")
  6. {
  7. }
  8. void AClientConnection::handshake()
  9. {
  10. auto response = send_sync<ASAPI_Client::Greeting>(getpid());
  11. set_server_pid(response.server_pid());
  12. set_my_client_id(response.your_client_id());
  13. }
  14. void AClientConnection::enqueue(const ABuffer& buffer)
  15. {
  16. for (;;) {
  17. const_cast<ABuffer&>(buffer).shared_buffer().share_with(server_pid());
  18. auto response = send_sync<ASAPI_Client::EnqueueBuffer>(buffer.shared_buffer_id());
  19. if (response.success())
  20. break;
  21. sleep(1);
  22. }
  23. }
  24. int AClientConnection::get_main_mix_volume()
  25. {
  26. return send_sync<ASAPI_Client::GetMainMixVolume>().volume();
  27. }
  28. void AClientConnection::set_main_mix_volume(int volume)
  29. {
  30. send_sync<ASAPI_Client::SetMainMixVolume>(volume);
  31. }