Skip to content

Commit

Permalink
AudioServer: Port to the new generated IPC mechanism
Browse files Browse the repository at this point in the history
Fork the IPC Connection classes into Server:: and Client::ConnectionNG.
The new IPC messages are serialized very snugly instead of using the
same generic data structure for all messages.

Remove ASAPI.h since we now generate all of it from AudioServer.ipc :^)
  • Loading branch information
awesomekling committed Aug 3, 2019
1 parent 3519b6c commit 8e684f0
Show file tree
Hide file tree
Showing 14 changed files with 319 additions and 321 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -28,3 +28,4 @@ Toolchain/Local
.vscode
compile_commands.json
.clang_complete
*Endpoint.h
2 changes: 1 addition & 1 deletion Applications/Makefile.common
Expand Up @@ -3,7 +3,7 @@ DEFINES += -DUSERLAND
all: $(APP)

$(APP): $(OBJS)
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lgui -ldraw -laudio -lcore -lc
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lgui -ldraw -laudio -lipc -lcore -lc

.cpp.o:
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<
Expand Down
2 changes: 1 addition & 1 deletion Kernel/makeall.sh
Expand Up @@ -21,11 +21,11 @@ build_targets="$build_targets ../Libraries/LibM"
build_targets="$build_targets ../Libraries/LibCore"
build_targets="$build_targets ../Libraries/LibIPC"
build_targets="$build_targets ../Libraries/LibDraw"
build_targets="$build_targets ../Libraries/LibAudio"
build_targets="$build_targets ../Servers/SystemServer"
build_targets="$build_targets ../Servers/LookupServer"
build_targets="$build_targets ../Servers/WindowServer"
build_targets="$build_targets ../Servers/AudioServer"
build_targets="$build_targets ../Libraries/LibAudio"
build_targets="$build_targets ../Libraries/LibGUI"
build_targets="$build_targets ../Libraries/LibHTML"
build_targets="$build_targets ../Userland"
Expand Down
16 changes: 8 additions & 8 deletions Libraries/LibAudio/AClientConnection.cpp
Expand Up @@ -3,34 +3,34 @@
#include <SharedBuffer.h>

AClientConnection::AClientConnection()
: Connection("/tmp/asportal")
: ConnectionNG("/tmp/asportal")
{
}

void AClientConnection::handshake()
{
auto response = send_sync<ASAPI_Client::Greeting>(getpid());
set_server_pid(response.server_pid());
set_my_client_id(response.your_client_id());
auto response = send_sync<AudioServer::Greet>(getpid());
set_server_pid(response->server_pid());
set_my_client_id(response->client_id());
}

void AClientConnection::enqueue(const ABuffer& buffer)
{
for (;;) {
const_cast<ABuffer&>(buffer).shared_buffer().share_with(server_pid());
auto response = send_sync<ASAPI_Client::EnqueueBuffer>(buffer.shared_buffer_id());
if (response.success())
auto response = send_sync<AudioServer::EnqueueBuffer>(buffer.shared_buffer_id());
if (response->success())
break;
sleep(1);
}
}

int AClientConnection::get_main_mix_volume()
{
return send_sync<ASAPI_Client::GetMainMixVolume>().volume();
return send_sync<AudioServer::GetMainMixVolume>()->volume();
}

void AClientConnection::set_main_mix_volume(int volume)
{
send_sync<ASAPI_Client::SetMainMixVolume>(volume);
send_sync<AudioServer::SetMainMixVolume>(volume);
}
6 changes: 2 additions & 4 deletions Libraries/LibAudio/AClientConnection.h
@@ -1,20 +1,18 @@
#pragma once

#include <LibAudio/ASAPI.h>
#include <AudioServer/AudioServerEndpoint.h>
#include <LibCore/CoreIPCClient.h>

class ABuffer;

class AClientConnection : public IPC::Client::Connection<ASAPI_ServerMessage, ASAPI_ClientMessage> {
class AClientConnection : public IPC::Client::ConnectionNG<AudioServerEndpoint> {
C_OBJECT(AClientConnection)
public:
AClientConnection();

virtual void handshake() override;
void enqueue(const ABuffer&);

virtual void postprocess_bundles(Vector<IncomingMessageBundle>&) override {}

int get_main_mix_volume();
void set_main_mix_volume(int);
};
250 changes: 0 additions & 250 deletions Libraries/LibAudio/ASAPI.h

This file was deleted.

0 comments on commit 8e684f0

Please sign in to comment.