/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Audio { class Buffer; } namespace AudioServer { class BufferQueue; class Mixer; class ClientConnection final : public IPC::ClientConnection , public AudioServerEndpoint { C_OBJECT(ClientConnection) public: explicit ClientConnection(NonnullRefPtr, int client_id, Mixer& mixer); ~ClientConnection() override; void did_finish_playing_buffer(Badge, int buffer_id); void did_change_muted_state(Badge, bool muted); void did_change_main_mix_volume(Badge, int volume); virtual void die() override; static void for_each(Function); private: virtual OwnPtr handle(const Messages::AudioServer::Greet&) override; virtual OwnPtr handle(const Messages::AudioServer::GetMainMixVolume&) override; virtual OwnPtr handle(const Messages::AudioServer::SetMainMixVolume&) override; virtual OwnPtr handle(const Messages::AudioServer::EnqueueBuffer&) override; virtual OwnPtr handle(const Messages::AudioServer::GetRemainingSamples&) override; virtual OwnPtr handle(const Messages::AudioServer::GetPlayedSamples&) override; virtual OwnPtr handle(const Messages::AudioServer::SetPaused&) override; virtual OwnPtr handle(const Messages::AudioServer::ClearBuffer&) override; virtual OwnPtr handle(const Messages::AudioServer::GetPlayingBuffer&) override; virtual OwnPtr handle(const Messages::AudioServer::GetMuted&) override; virtual OwnPtr handle(const Messages::AudioServer::SetMuted&) override; Mixer& m_mixer; RefPtr m_queue; }; }