mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 06:58:11 +00:00

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 :^)
34 lines
848 B
C++
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;
|
|
};
|