/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Audio { class Buffer; class ClientConnection : public IPC::ServerConnection , public AudioClientEndpoint { C_OBJECT(ClientConnection) public: ClientConnection(); virtual void handshake() override; void enqueue(const Buffer&); bool try_enqueue(const Buffer&); bool get_muted(); void set_muted(bool); int get_main_mix_volume(); void set_main_mix_volume(int); int get_remaining_samples(); int get_played_samples(); int get_playing_buffer(); void set_paused(bool paused); void clear_buffer(bool paused = false); Function on_finish_playing_buffer; Function on_muted_state_change; Function on_main_mix_volume_change; private: virtual void handle(const Messages::AudioClient::FinishedPlayingBuffer&) override; virtual void handle(const Messages::AudioClient::MutedStateChanged&) override; virtual void handle(const Messages::AudioClient::MainMixVolumeChanged&) override; }; }