1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 06:58:11 +00:00
serenity/Libraries/LibAudio/AClientConnection.h
Andreas Kling 630d5b3ffd LibIPC+AudioServer: Allow unsolicited server-to-client IPC messages
Client-side connection objects must now provide both client and server
endpoint types. When a message is received from the server side, we try
to decode it using both endpoint types and then send it to the right
place for handling.

This now makes it possible for AudioServer to send unsolicited messages
to its clients. This opens up a ton of possibilities :^)
2019-11-23 16:50:21 +01:00

34 lines
848 B
C++

#pragma once
#include <AudioServer/AudioClientEndpoint.h>
#include <AudioServer/AudioServerEndpoint.h>
#include <LibCore/CoreIPCClient.h>
class ABuffer;
class AClientConnection : public IPC::Client::ConnectionNG<AudioClientEndpoint, AudioServerEndpoint>
, public AudioClientEndpoint {
C_OBJECT(AClientConnection)
public:
AClientConnection();
virtual void handshake() override;
void enqueue(const ABuffer&);
bool try_enqueue(const ABuffer&);
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);
private:
virtual void handle(const AudioClient::FinishedPlayingBuffer&) override;
};