#include #include #include AClientConnection::AClientConnection() : IServerConnection(*this, "/tmp/portal/audio") { } void AClientConnection::handshake() { auto response = send_sync(); set_my_client_id(response->client_id()); } void AClientConnection::enqueue(const ABuffer& buffer) { for (;;) { const_cast(buffer).shared_buffer().share_with(server_pid()); auto response = send_sync(buffer.shared_buffer_id(), buffer.sample_count()); if (response->success()) break; sleep(1); } } bool AClientConnection::try_enqueue(const ABuffer& buffer) { const_cast(buffer).shared_buffer().share_with(server_pid()); auto response = send_sync(buffer.shared_buffer_id(), buffer.sample_count()); return response->success(); } bool AClientConnection::get_muted() { return send_sync()->muted(); } void AClientConnection::set_muted(bool muted) { send_sync(muted); } int AClientConnection::get_main_mix_volume() { return send_sync()->volume(); } void AClientConnection::set_main_mix_volume(int volume) { send_sync(volume); } int AClientConnection::get_remaining_samples() { return send_sync()->remaining_samples(); } int AClientConnection::get_played_samples() { return send_sync()->played_samples(); } void AClientConnection::set_paused(bool paused) { send_sync(paused); } void AClientConnection::clear_buffer(bool paused) { send_sync(paused); } int AClientConnection::get_playing_buffer() { return send_sync()->buffer_id(); } void AClientConnection::handle(const AudioClient::FinishedPlayingBuffer& message) { if (on_finish_playing_buffer) on_finish_playing_buffer(message.buffer_id()); } void AClientConnection::handle(const AudioClient::MutedStateChanged& message) { if (on_muted_state_change) on_muted_state_change(message.muted()); }