#include #include #include AClientConnection::AClientConnection() : ConnectionNG("/tmp/asportal") { } void AClientConnection::handshake() { auto response = send_sync(getpid()); set_server_pid(response->server_pid()); 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(); } 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(); }