mirror of
https://github.com/RGBCube/serenity
synced 2025-08-05 07:57:34 +00:00
Userland: Rename IPC ClientConnection => ConnectionFromClient
This was done with CLion's automatic rename feature and with: find . -name ClientConnection.h | rename 's/ClientConnection\.h/ConnectionFromClient.h/' find . -name ClientConnection.cpp | rename 's/ClientConnection\.cpp/ConnectionFromClient.cpp/'
This commit is contained in:
parent
efac862570
commit
3a71748e5d
137 changed files with 896 additions and 896 deletions
|
@ -8,7 +8,7 @@ compile_ipc(AudioServer.ipc AudioServerEndpoint.h)
|
|||
compile_ipc(AudioClient.ipc AudioClientEndpoint.h)
|
||||
|
||||
set(SOURCES
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
Mixer.cpp
|
||||
main.cpp
|
||||
AudioServerEndpoint.h
|
||||
|
|
|
@ -1,166 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "ClientConnection.h"
|
||||
#include "Mixer.h"
|
||||
#include <AudioServer/AudioClientEndpoint.h>
|
||||
#include <LibAudio/Buffer.h>
|
||||
|
||||
namespace AudioServer {
|
||||
|
||||
static HashMap<int, RefPtr<ClientConnection>> s_connections;
|
||||
|
||||
void ClientConnection::for_each(Function<void(ClientConnection&)> callback)
|
||||
{
|
||||
NonnullRefPtrVector<ClientConnection> connections;
|
||||
for (auto& it : s_connections)
|
||||
connections.append(*it.value);
|
||||
for (auto& connection : connections)
|
||||
callback(connection);
|
||||
}
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id, Mixer& mixer)
|
||||
: IPC::ClientConnection<AudioClientEndpoint, AudioServerEndpoint>(*this, move(client_socket), client_id)
|
||||
, m_mixer(mixer)
|
||||
{
|
||||
s_connections.set(client_id, *this);
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
}
|
||||
|
||||
void ClientConnection::did_finish_playing_buffer(Badge<ClientAudioStream>, int buffer_id)
|
||||
{
|
||||
async_finished_playing_buffer(buffer_id);
|
||||
}
|
||||
|
||||
void ClientConnection::did_change_main_mix_muted_state(Badge<Mixer>, bool muted)
|
||||
{
|
||||
async_main_mix_muted_state_changed(muted);
|
||||
}
|
||||
|
||||
void ClientConnection::did_change_main_mix_volume(Badge<Mixer>, double volume)
|
||||
{
|
||||
async_main_mix_volume_changed(volume);
|
||||
}
|
||||
|
||||
void ClientConnection::did_change_client_volume(Badge<ClientAudioStream>, double volume)
|
||||
{
|
||||
async_client_volume_changed(volume);
|
||||
}
|
||||
|
||||
Messages::AudioServer::GetMainMixVolumeResponse ClientConnection::get_main_mix_volume()
|
||||
{
|
||||
return m_mixer.main_volume();
|
||||
}
|
||||
|
||||
void ClientConnection::set_main_mix_volume(double volume)
|
||||
{
|
||||
m_mixer.set_main_volume(volume);
|
||||
}
|
||||
|
||||
Messages::AudioServer::GetSampleRateResponse ClientConnection::get_sample_rate()
|
||||
{
|
||||
return { m_mixer.audiodevice_get_sample_rate() };
|
||||
}
|
||||
|
||||
void ClientConnection::set_sample_rate(u32 sample_rate)
|
||||
{
|
||||
m_mixer.audiodevice_set_sample_rate(sample_rate);
|
||||
}
|
||||
|
||||
Messages::AudioServer::GetSelfVolumeResponse ClientConnection::get_self_volume()
|
||||
{
|
||||
return m_queue->volume().target();
|
||||
}
|
||||
|
||||
void ClientConnection::set_self_volume(double volume)
|
||||
{
|
||||
if (m_queue)
|
||||
m_queue->set_volume(volume);
|
||||
}
|
||||
|
||||
Messages::AudioServer::EnqueueBufferResponse ClientConnection::enqueue_buffer(Core::AnonymousBuffer const& buffer, i32 buffer_id, int sample_count)
|
||||
{
|
||||
if (!m_queue)
|
||||
m_queue = m_mixer.create_queue(*this);
|
||||
|
||||
if (m_queue->is_full())
|
||||
return false;
|
||||
|
||||
// There's not a big allocation to worry about here.
|
||||
m_queue->enqueue(MUST(Audio::Buffer::create_with_anonymous_buffer(buffer, buffer_id, sample_count)));
|
||||
return true;
|
||||
}
|
||||
|
||||
Messages::AudioServer::GetRemainingSamplesResponse ClientConnection::get_remaining_samples()
|
||||
{
|
||||
int remaining = 0;
|
||||
if (m_queue)
|
||||
remaining = m_queue->get_remaining_samples();
|
||||
|
||||
return remaining;
|
||||
}
|
||||
|
||||
Messages::AudioServer::GetPlayedSamplesResponse ClientConnection::get_played_samples()
|
||||
{
|
||||
int played = 0;
|
||||
if (m_queue)
|
||||
played = m_queue->get_played_samples();
|
||||
|
||||
return played;
|
||||
}
|
||||
|
||||
void ClientConnection::set_paused(bool paused)
|
||||
{
|
||||
if (m_queue)
|
||||
m_queue->set_paused(paused);
|
||||
}
|
||||
|
||||
void ClientConnection::clear_buffer(bool paused)
|
||||
{
|
||||
if (m_queue)
|
||||
m_queue->clear(paused);
|
||||
}
|
||||
|
||||
Messages::AudioServer::GetPlayingBufferResponse ClientConnection::get_playing_buffer()
|
||||
{
|
||||
int id = -1;
|
||||
if (m_queue)
|
||||
id = m_queue->get_playing_buffer();
|
||||
return id;
|
||||
}
|
||||
|
||||
Messages::AudioServer::IsMainMixMutedResponse ClientConnection::is_main_mix_muted()
|
||||
{
|
||||
return m_mixer.is_muted();
|
||||
}
|
||||
|
||||
void ClientConnection::set_main_mix_muted(bool muted)
|
||||
{
|
||||
m_mixer.set_muted(muted);
|
||||
}
|
||||
|
||||
Messages::AudioServer::IsSelfMutedResponse ClientConnection::is_self_muted()
|
||||
{
|
||||
if (m_queue)
|
||||
return m_queue->is_muted();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void ClientConnection::set_self_muted(bool muted)
|
||||
{
|
||||
if (m_queue)
|
||||
m_queue->set_muted(muted);
|
||||
}
|
||||
}
|
166
Userland/Services/AudioServer/ConnectionFromClient.cpp
Normal file
166
Userland/Services/AudioServer/ConnectionFromClient.cpp
Normal file
|
@ -0,0 +1,166 @@
|
|||
/*
|
||||
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "ConnectionFromClient.h"
|
||||
#include "Mixer.h"
|
||||
#include <AudioServer/AudioClientEndpoint.h>
|
||||
#include <LibAudio/Buffer.h>
|
||||
|
||||
namespace AudioServer {
|
||||
|
||||
static HashMap<int, RefPtr<ConnectionFromClient>> s_connections;
|
||||
|
||||
void ConnectionFromClient::for_each(Function<void(ConnectionFromClient&)> callback)
|
||||
{
|
||||
NonnullRefPtrVector<ConnectionFromClient> connections;
|
||||
for (auto& it : s_connections)
|
||||
connections.append(*it.value);
|
||||
for (auto& connection : connections)
|
||||
callback(connection);
|
||||
}
|
||||
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id, Mixer& mixer)
|
||||
: IPC::ConnectionFromClient<AudioClientEndpoint, AudioServerEndpoint>(*this, move(client_socket), client_id)
|
||||
, m_mixer(mixer)
|
||||
{
|
||||
s_connections.set(client_id, *this);
|
||||
}
|
||||
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
}
|
||||
|
||||
void ConnectionFromClient::did_finish_playing_buffer(Badge<ClientAudioStream>, int buffer_id)
|
||||
{
|
||||
async_finished_playing_buffer(buffer_id);
|
||||
}
|
||||
|
||||
void ConnectionFromClient::did_change_main_mix_muted_state(Badge<Mixer>, bool muted)
|
||||
{
|
||||
async_main_mix_muted_state_changed(muted);
|
||||
}
|
||||
|
||||
void ConnectionFromClient::did_change_main_mix_volume(Badge<Mixer>, double volume)
|
||||
{
|
||||
async_main_mix_volume_changed(volume);
|
||||
}
|
||||
|
||||
void ConnectionFromClient::did_change_client_volume(Badge<ClientAudioStream>, double volume)
|
||||
{
|
||||
async_client_volume_changed(volume);
|
||||
}
|
||||
|
||||
Messages::AudioServer::GetMainMixVolumeResponse ConnectionFromClient::get_main_mix_volume()
|
||||
{
|
||||
return m_mixer.main_volume();
|
||||
}
|
||||
|
||||
void ConnectionFromClient::set_main_mix_volume(double volume)
|
||||
{
|
||||
m_mixer.set_main_volume(volume);
|
||||
}
|
||||
|
||||
Messages::AudioServer::GetSampleRateResponse ConnectionFromClient::get_sample_rate()
|
||||
{
|
||||
return { m_mixer.audiodevice_get_sample_rate() };
|
||||
}
|
||||
|
||||
void ConnectionFromClient::set_sample_rate(u32 sample_rate)
|
||||
{
|
||||
m_mixer.audiodevice_set_sample_rate(sample_rate);
|
||||
}
|
||||
|
||||
Messages::AudioServer::GetSelfVolumeResponse ConnectionFromClient::get_self_volume()
|
||||
{
|
||||
return m_queue->volume().target();
|
||||
}
|
||||
|
||||
void ConnectionFromClient::set_self_volume(double volume)
|
||||
{
|
||||
if (m_queue)
|
||||
m_queue->set_volume(volume);
|
||||
}
|
||||
|
||||
Messages::AudioServer::EnqueueBufferResponse ConnectionFromClient::enqueue_buffer(Core::AnonymousBuffer const& buffer, i32 buffer_id, int sample_count)
|
||||
{
|
||||
if (!m_queue)
|
||||
m_queue = m_mixer.create_queue(*this);
|
||||
|
||||
if (m_queue->is_full())
|
||||
return false;
|
||||
|
||||
// There's not a big allocation to worry about here.
|
||||
m_queue->enqueue(MUST(Audio::Buffer::create_with_anonymous_buffer(buffer, buffer_id, sample_count)));
|
||||
return true;
|
||||
}
|
||||
|
||||
Messages::AudioServer::GetRemainingSamplesResponse ConnectionFromClient::get_remaining_samples()
|
||||
{
|
||||
int remaining = 0;
|
||||
if (m_queue)
|
||||
remaining = m_queue->get_remaining_samples();
|
||||
|
||||
return remaining;
|
||||
}
|
||||
|
||||
Messages::AudioServer::GetPlayedSamplesResponse ConnectionFromClient::get_played_samples()
|
||||
{
|
||||
int played = 0;
|
||||
if (m_queue)
|
||||
played = m_queue->get_played_samples();
|
||||
|
||||
return played;
|
||||
}
|
||||
|
||||
void ConnectionFromClient::set_paused(bool paused)
|
||||
{
|
||||
if (m_queue)
|
||||
m_queue->set_paused(paused);
|
||||
}
|
||||
|
||||
void ConnectionFromClient::clear_buffer(bool paused)
|
||||
{
|
||||
if (m_queue)
|
||||
m_queue->clear(paused);
|
||||
}
|
||||
|
||||
Messages::AudioServer::GetPlayingBufferResponse ConnectionFromClient::get_playing_buffer()
|
||||
{
|
||||
int id = -1;
|
||||
if (m_queue)
|
||||
id = m_queue->get_playing_buffer();
|
||||
return id;
|
||||
}
|
||||
|
||||
Messages::AudioServer::IsMainMixMutedResponse ConnectionFromClient::is_main_mix_muted()
|
||||
{
|
||||
return m_mixer.is_muted();
|
||||
}
|
||||
|
||||
void ConnectionFromClient::set_main_mix_muted(bool muted)
|
||||
{
|
||||
m_mixer.set_muted(muted);
|
||||
}
|
||||
|
||||
Messages::AudioServer::IsSelfMutedResponse ConnectionFromClient::is_self_muted()
|
||||
{
|
||||
if (m_queue)
|
||||
return m_queue->is_muted();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void ConnectionFromClient::set_self_muted(bool muted)
|
||||
{
|
||||
if (m_queue)
|
||||
m_queue->set_muted(muted);
|
||||
}
|
||||
}
|
|
@ -9,7 +9,7 @@
|
|||
#include <AK/HashMap.h>
|
||||
#include <AudioServer/AudioClientEndpoint.h>
|
||||
#include <AudioServer/AudioServerEndpoint.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
|
||||
namespace Audio {
|
||||
class Buffer;
|
||||
|
@ -20,10 +20,10 @@ namespace AudioServer {
|
|||
class ClientAudioStream;
|
||||
class Mixer;
|
||||
|
||||
class ClientConnection final : public IPC::ClientConnection<AudioClientEndpoint, AudioServerEndpoint> {
|
||||
C_OBJECT(ClientConnection)
|
||||
class ConnectionFromClient final : public IPC::ConnectionFromClient<AudioClientEndpoint, AudioServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient)
|
||||
public:
|
||||
~ClientConnection() override;
|
||||
~ConnectionFromClient() override;
|
||||
|
||||
void did_finish_playing_buffer(Badge<ClientAudioStream>, int buffer_id);
|
||||
void did_change_client_volume(Badge<ClientAudioStream>, double volume);
|
||||
|
@ -32,10 +32,10 @@ public:
|
|||
|
||||
virtual void die() override;
|
||||
|
||||
static void for_each(Function<void(ClientConnection&)>);
|
||||
static void for_each(Function<void(ConnectionFromClient&)>);
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id, Mixer& mixer);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id, Mixer& mixer);
|
||||
|
||||
virtual Messages::AudioServer::GetMainMixVolumeResponse get_main_mix_volume() override;
|
||||
virtual void set_main_mix_volume(double) override;
|
|
@ -10,7 +10,7 @@
|
|||
#include <AK/Array.h>
|
||||
#include <AK/MemoryStream.h>
|
||||
#include <AK/NumericLimits.h>
|
||||
#include <AudioServer/ClientConnection.h>
|
||||
#include <AudioServer/ConnectionFromClient.h>
|
||||
#include <AudioServer/Mixer.h>
|
||||
#include <LibCore/ConfigFile.h>
|
||||
#include <LibCore/Timer.h>
|
||||
|
@ -48,7 +48,7 @@ Mixer::~Mixer()
|
|||
{
|
||||
}
|
||||
|
||||
NonnullRefPtr<ClientAudioStream> Mixer::create_queue(ClientConnection& client)
|
||||
NonnullRefPtr<ClientAudioStream> Mixer::create_queue(ConnectionFromClient& client)
|
||||
{
|
||||
auto queue = adopt_ref(*new ClientAudioStream(client));
|
||||
m_pending_mutex.lock();
|
||||
|
@ -149,7 +149,7 @@ void Mixer::set_main_volume(double volume)
|
|||
m_config->write_num_entry("Master", "Volume", static_cast<int>(volume * 100));
|
||||
request_setting_sync();
|
||||
|
||||
ClientConnection::for_each([&](ClientConnection& client) {
|
||||
ConnectionFromClient::for_each([&](ConnectionFromClient& client) {
|
||||
client.did_change_main_mix_volume({}, main_volume());
|
||||
});
|
||||
}
|
||||
|
@ -163,7 +163,7 @@ void Mixer::set_muted(bool muted)
|
|||
m_config->write_bool_entry("Master", "Mute", m_muted);
|
||||
request_setting_sync();
|
||||
|
||||
ClientConnection::for_each([muted](ClientConnection& client) {
|
||||
ConnectionFromClient::for_each([muted](ConnectionFromClient& client) {
|
||||
client.did_change_main_mix_muted_state({}, muted);
|
||||
});
|
||||
}
|
||||
|
@ -199,7 +199,7 @@ void Mixer::request_setting_sync()
|
|||
}
|
||||
}
|
||||
|
||||
ClientAudioStream::ClientAudioStream(ClientConnection& client)
|
||||
ClientAudioStream::ClientAudioStream(ConnectionFromClient& client)
|
||||
: m_client(client)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include "FadingProperty.h"
|
||||
#include <AK/Atomic.h>
|
||||
#include <AK/Badge.h>
|
||||
|
@ -30,11 +30,11 @@ namespace AudioServer {
|
|||
// This is to prevent clipping when two streams with low headroom (e.g. normalized & compressed) are playing.
|
||||
constexpr double SAMPLE_HEADROOM = 0.7;
|
||||
|
||||
class ClientConnection;
|
||||
class ConnectionFromClient;
|
||||
|
||||
class ClientAudioStream : public RefCounted<ClientAudioStream> {
|
||||
public:
|
||||
explicit ClientAudioStream(ClientConnection&);
|
||||
explicit ClientAudioStream(ConnectionFromClient&);
|
||||
~ClientAudioStream() { }
|
||||
|
||||
bool is_full() const { return m_queue.size() >= 3; }
|
||||
|
@ -64,7 +64,7 @@ public:
|
|||
return true;
|
||||
}
|
||||
|
||||
ClientConnection* client() { return m_client.ptr(); }
|
||||
ConnectionFromClient* client() { return m_client.ptr(); }
|
||||
|
||||
void clear(bool paused = false)
|
||||
{
|
||||
|
@ -105,7 +105,7 @@ private:
|
|||
bool m_paused { false };
|
||||
bool m_muted { false };
|
||||
|
||||
WeakPtr<ClientConnection> m_client;
|
||||
WeakPtr<ConnectionFromClient> m_client;
|
||||
FadingProperty<double> m_volume { 1 };
|
||||
};
|
||||
|
||||
|
@ -114,7 +114,7 @@ class Mixer : public Core::Object {
|
|||
public:
|
||||
virtual ~Mixer() override;
|
||||
|
||||
NonnullRefPtr<ClientAudioStream> create_queue(ClientConnection&);
|
||||
NonnullRefPtr<ClientAudioStream> create_queue(ConnectionFromClient&);
|
||||
|
||||
// To the outside world, we pretend that the target volume is already reached, even though it may be still fading.
|
||||
double main_volume() const { return m_main_volume.target(); }
|
||||
|
|
|
@ -28,7 +28,7 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
server->on_accept = [&](NonnullOwnPtr<Core::Stream::LocalSocket> client_socket) {
|
||||
static int s_next_client_id = 0;
|
||||
int client_id = ++s_next_client_id;
|
||||
(void)IPC::new_client_connection<AudioServer::ClientConnection>(move(client_socket), client_id, *mixer);
|
||||
(void)IPC::new_client_connection<AudioServer::ConnectionFromClient>(move(client_socket), client_id, *mixer);
|
||||
};
|
||||
|
||||
TRY(Core::System::pledge("stdio recvfd thread accept cpath rpath wpath"));
|
||||
|
|
|
@ -8,7 +8,7 @@ compile_ipc(ClipboardServer.ipc ClipboardServerEndpoint.h)
|
|||
compile_ipc(ClipboardClient.ipc ClipboardClientEndpoint.h)
|
||||
|
||||
set(SOURCES
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
ClipboardClientEndpoint.h
|
||||
ClipboardServerEndpoint.h
|
||||
Storage.cpp
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <Clipboard/ClientConnection.h>
|
||||
#include <Clipboard/ClipboardClientEndpoint.h>
|
||||
#include <Clipboard/Storage.h>
|
||||
|
||||
namespace Clipboard {
|
||||
|
||||
static HashMap<int, RefPtr<ClientConnection>> s_connections;
|
||||
|
||||
void ClientConnection::for_each_client(Function<void(ClientConnection&)> callback)
|
||||
{
|
||||
for (auto& it : s_connections) {
|
||||
callback(*it.value);
|
||||
}
|
||||
}
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> socket, int client_id)
|
||||
: IPC::ClientConnection<ClipboardClientEndpoint, ClipboardServerEndpoint>(*this, move(socket), client_id)
|
||||
{
|
||||
s_connections.set(client_id, *this);
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
}
|
||||
|
||||
void ClientConnection::set_clipboard_data(Core::AnonymousBuffer const& data, String const& mime_type, IPC::Dictionary const& metadata)
|
||||
{
|
||||
Storage::the().set_data(data, mime_type, metadata.entries());
|
||||
}
|
||||
|
||||
Messages::ClipboardServer::GetClipboardDataResponse ClientConnection::get_clipboard_data()
|
||||
{
|
||||
auto& storage = Storage::the();
|
||||
return { storage.buffer(), storage.mime_type(), storage.metadata() };
|
||||
}
|
||||
|
||||
void ClientConnection::notify_about_clipboard_change()
|
||||
{
|
||||
async_clipboard_data_changed(Storage::the().mime_type());
|
||||
}
|
||||
|
||||
}
|
53
Userland/Services/Clipboard/ConnectionFromClient.cpp
Normal file
53
Userland/Services/Clipboard/ConnectionFromClient.cpp
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <Clipboard/ClipboardClientEndpoint.h>
|
||||
#include <Clipboard/ConnectionFromClient.h>
|
||||
#include <Clipboard/Storage.h>
|
||||
|
||||
namespace Clipboard {
|
||||
|
||||
static HashMap<int, RefPtr<ConnectionFromClient>> s_connections;
|
||||
|
||||
void ConnectionFromClient::for_each_client(Function<void(ConnectionFromClient&)> callback)
|
||||
{
|
||||
for (auto& it : s_connections) {
|
||||
callback(*it.value);
|
||||
}
|
||||
}
|
||||
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> socket, int client_id)
|
||||
: IPC::ConnectionFromClient<ClipboardClientEndpoint, ClipboardServerEndpoint>(*this, move(socket), client_id)
|
||||
{
|
||||
s_connections.set(client_id, *this);
|
||||
}
|
||||
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
}
|
||||
|
||||
void ConnectionFromClient::set_clipboard_data(Core::AnonymousBuffer const& data, String const& mime_type, IPC::Dictionary const& metadata)
|
||||
{
|
||||
Storage::the().set_data(data, mime_type, metadata.entries());
|
||||
}
|
||||
|
||||
Messages::ClipboardServer::GetClipboardDataResponse ConnectionFromClient::get_clipboard_data()
|
||||
{
|
||||
auto& storage = Storage::the();
|
||||
return { storage.buffer(), storage.mime_type(), storage.metadata() };
|
||||
}
|
||||
|
||||
void ConnectionFromClient::notify_about_clipboard_change()
|
||||
{
|
||||
async_clipboard_data_changed(Storage::the().mime_type());
|
||||
}
|
||||
|
||||
}
|
|
@ -9,25 +9,25 @@
|
|||
#include <AK/HashMap.h>
|
||||
#include <Clipboard/ClipboardClientEndpoint.h>
|
||||
#include <Clipboard/ClipboardServerEndpoint.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
|
||||
namespace Clipboard {
|
||||
|
||||
class ClientConnection final
|
||||
: public IPC::ClientConnection<ClipboardClientEndpoint, ClipboardServerEndpoint> {
|
||||
C_OBJECT(ClientConnection);
|
||||
class ConnectionFromClient final
|
||||
: public IPC::ConnectionFromClient<ClipboardClientEndpoint, ClipboardServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient);
|
||||
|
||||
public:
|
||||
virtual ~ClientConnection() override;
|
||||
virtual ~ConnectionFromClient() override;
|
||||
|
||||
virtual void die() override;
|
||||
|
||||
static void for_each_client(Function<void(ClientConnection&)>);
|
||||
static void for_each_client(Function<void(ConnectionFromClient&)>);
|
||||
|
||||
void notify_about_clipboard_change();
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
|
||||
virtual Messages::ClipboardServer::GetClipboardDataResponse get_clipboard_data() override;
|
||||
virtual void set_clipboard_data(Core::AnonymousBuffer const&, String const&, IPC::Dictionary const&) override;
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <Clipboard/ClientConnection.h>
|
||||
#include <Clipboard/ConnectionFromClient.h>
|
||||
#include <Clipboard/Storage.h>
|
||||
#include <LibCore/EventLoop.h>
|
||||
#include <LibCore/System.h>
|
||||
|
@ -17,10 +17,10 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
Core::EventLoop event_loop;
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
auto server = TRY(IPC::MultiServer<Clipboard::ClientConnection>::try_create());
|
||||
auto server = TRY(IPC::MultiServer<Clipboard::ConnectionFromClient>::try_create());
|
||||
|
||||
Clipboard::Storage::the().on_content_change = [&] {
|
||||
Clipboard::ClientConnection::for_each_client([&](auto& client) {
|
||||
Clipboard::ConnectionFromClient::for_each_client([&](auto& client) {
|
||||
client.notify_about_clipboard_change();
|
||||
});
|
||||
};
|
||||
|
|
|
@ -8,7 +8,7 @@ compile_ipc(ConfigServer.ipc ConfigServerEndpoint.h)
|
|||
compile_ipc(ConfigClient.ipc ConfigClientEndpoint.h)
|
||||
|
||||
set(SOURCES
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
main.cpp
|
||||
ConfigServerEndpoint.h
|
||||
ConfigClientEndpoint.h
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include <ConfigServer/ConfigClientEndpoint.h>
|
||||
#include <LibCore/ConfigFile.h>
|
||||
#include <LibCore/FileWatcher.h>
|
||||
|
@ -12,7 +12,7 @@
|
|||
|
||||
namespace ConfigServer {
|
||||
|
||||
static HashMap<int, RefPtr<ClientConnection>> s_connections;
|
||||
static HashMap<int, RefPtr<ConnectionFromClient>> s_connections;
|
||||
|
||||
struct CachedDomain {
|
||||
String domain;
|
||||
|
@ -23,7 +23,7 @@ struct CachedDomain {
|
|||
static HashMap<String, NonnullOwnPtr<CachedDomain>> s_cache;
|
||||
static constexpr int s_disk_sync_delay_ms = 5'000;
|
||||
|
||||
static void for_each_monitoring_connection(String const& domain, ClientConnection* excluded_connection, Function<void(ClientConnection&)> callback)
|
||||
static void for_each_monitoring_connection(String const& domain, ConnectionFromClient* excluded_connection, Function<void(ConnectionFromClient&)> callback)
|
||||
{
|
||||
for (auto& it : s_connections) {
|
||||
if (it.value->is_monitoring_domain(domain) && (!excluded_connection || it.value != excluded_connection))
|
||||
|
@ -48,7 +48,7 @@ static Core::ConfigFile& ensure_domain_config(String const& domain)
|
|||
for (auto& group : config->groups()) {
|
||||
for (auto& key : config->keys(group)) {
|
||||
if (!new_config->has_key(group, key)) {
|
||||
for_each_monitoring_connection(domain, nullptr, [&domain, &group, &key](ClientConnection& connection) {
|
||||
for_each_monitoring_connection(domain, nullptr, [&domain, &group, &key](ConnectionFromClient& connection) {
|
||||
connection.async_notify_removed_key(domain, group, key);
|
||||
});
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ static Core::ConfigFile& ensure_domain_config(String const& domain)
|
|||
auto old_value = config->read_entry(group, key);
|
||||
auto new_value = new_config->read_entry(group, key);
|
||||
if (old_value != new_value) {
|
||||
for_each_monitoring_connection(domain, nullptr, [&domain, &group, &key, &new_value](ClientConnection& connection) {
|
||||
for_each_monitoring_connection(domain, nullptr, [&domain, &group, &key, &new_value](ConnectionFromClient& connection) {
|
||||
connection.async_notify_changed_string_value(domain, group, key, new_value);
|
||||
});
|
||||
}
|
||||
|
@ -74,25 +74,25 @@ static Core::ConfigFile& ensure_domain_config(String const& domain)
|
|||
return *config;
|
||||
}
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id)
|
||||
: IPC::ClientConnection<ConfigClientEndpoint, ConfigServerEndpoint>(*this, move(client_socket), client_id)
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id)
|
||||
: IPC::ConnectionFromClient<ConfigClientEndpoint, ConfigServerEndpoint>(*this, move(client_socket), client_id)
|
||||
, m_sync_timer(Core::Timer::create_single_shot(s_disk_sync_delay_ms, [this]() { sync_dirty_domains_to_disk(); }))
|
||||
{
|
||||
s_connections.set(client_id, *this);
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
m_sync_timer->stop();
|
||||
sync_dirty_domains_to_disk();
|
||||
}
|
||||
|
||||
void ClientConnection::pledge_domains(Vector<String> const& domains)
|
||||
void ConnectionFromClient::pledge_domains(Vector<String> const& domains)
|
||||
{
|
||||
if (m_has_pledged) {
|
||||
did_misbehave("Tried to pledge domains twice.");
|
||||
|
@ -103,7 +103,7 @@ void ClientConnection::pledge_domains(Vector<String> const& domains)
|
|||
m_pledged_domains.set(domain);
|
||||
}
|
||||
|
||||
void ClientConnection::monitor_domain(String const& domain)
|
||||
void ConnectionFromClient::monitor_domain(String const& domain)
|
||||
{
|
||||
if (m_has_pledged && !m_pledged_domains.contains(domain)) {
|
||||
did_misbehave("Attempt to monitor non-pledged domain");
|
||||
|
@ -113,7 +113,7 @@ void ClientConnection::monitor_domain(String const& domain)
|
|||
m_monitored_domains.set(domain);
|
||||
}
|
||||
|
||||
bool ClientConnection::validate_access(String const& domain, String const& group, String const& key)
|
||||
bool ConnectionFromClient::validate_access(String const& domain, String const& group, String const& key)
|
||||
{
|
||||
if (!m_has_pledged)
|
||||
return true;
|
||||
|
@ -123,7 +123,7 @@ bool ClientConnection::validate_access(String const& domain, String const& group
|
|||
return false;
|
||||
}
|
||||
|
||||
void ClientConnection::sync_dirty_domains_to_disk()
|
||||
void ConnectionFromClient::sync_dirty_domains_to_disk()
|
||||
{
|
||||
if (m_dirty_domains.is_empty())
|
||||
return;
|
||||
|
@ -139,7 +139,7 @@ void ClientConnection::sync_dirty_domains_to_disk()
|
|||
}
|
||||
}
|
||||
|
||||
Messages::ConfigServer::ListConfigKeysResponse ClientConnection::list_config_keys(String const& domain, String const& group)
|
||||
Messages::ConfigServer::ListConfigKeysResponse ConnectionFromClient::list_config_keys(String const& domain, String const& group)
|
||||
{
|
||||
if (!validate_access(domain, group, ""))
|
||||
return Vector<String> {};
|
||||
|
@ -147,7 +147,7 @@ Messages::ConfigServer::ListConfigKeysResponse ClientConnection::list_config_key
|
|||
return { config.keys(group) };
|
||||
}
|
||||
|
||||
Messages::ConfigServer::ListConfigGroupsResponse ClientConnection::list_config_groups(String const& domain)
|
||||
Messages::ConfigServer::ListConfigGroupsResponse ConnectionFromClient::list_config_groups(String const& domain)
|
||||
{
|
||||
if (!validate_access(domain, "", ""))
|
||||
return Vector<String> {};
|
||||
|
@ -155,7 +155,7 @@ Messages::ConfigServer::ListConfigGroupsResponse ClientConnection::list_config_g
|
|||
return { config.groups() };
|
||||
}
|
||||
|
||||
Messages::ConfigServer::ReadStringValueResponse ClientConnection::read_string_value(String const& domain, String const& group, String const& key)
|
||||
Messages::ConfigServer::ReadStringValueResponse ConnectionFromClient::read_string_value(String const& domain, String const& group, String const& key)
|
||||
{
|
||||
if (!validate_access(domain, group, key))
|
||||
return nullptr;
|
||||
|
@ -166,7 +166,7 @@ Messages::ConfigServer::ReadStringValueResponse ClientConnection::read_string_va
|
|||
return Optional<String> { config.read_entry(group, key) };
|
||||
}
|
||||
|
||||
Messages::ConfigServer::ReadI32ValueResponse ClientConnection::read_i32_value(String const& domain, String const& group, String const& key)
|
||||
Messages::ConfigServer::ReadI32ValueResponse ConnectionFromClient::read_i32_value(String const& domain, String const& group, String const& key)
|
||||
{
|
||||
if (!validate_access(domain, group, key))
|
||||
return nullptr;
|
||||
|
@ -177,7 +177,7 @@ Messages::ConfigServer::ReadI32ValueResponse ClientConnection::read_i32_value(St
|
|||
return Optional<i32> { config.read_num_entry(group, key) };
|
||||
}
|
||||
|
||||
Messages::ConfigServer::ReadBoolValueResponse ClientConnection::read_bool_value(String const& domain, String const& group, String const& key)
|
||||
Messages::ConfigServer::ReadBoolValueResponse ConnectionFromClient::read_bool_value(String const& domain, String const& group, String const& key)
|
||||
{
|
||||
if (!validate_access(domain, group, key))
|
||||
return nullptr;
|
||||
|
@ -188,7 +188,7 @@ Messages::ConfigServer::ReadBoolValueResponse ClientConnection::read_bool_value(
|
|||
return Optional<bool> { config.read_bool_entry(group, key) };
|
||||
}
|
||||
|
||||
void ClientConnection::start_or_restart_sync_timer()
|
||||
void ConnectionFromClient::start_or_restart_sync_timer()
|
||||
{
|
||||
if (m_sync_timer->is_active())
|
||||
m_sync_timer->restart();
|
||||
|
@ -196,7 +196,7 @@ void ClientConnection::start_or_restart_sync_timer()
|
|||
m_sync_timer->start();
|
||||
}
|
||||
|
||||
void ClientConnection::write_string_value(String const& domain, String const& group, String const& key, String const& value)
|
||||
void ConnectionFromClient::write_string_value(String const& domain, String const& group, String const& key, String const& value)
|
||||
{
|
||||
if (!validate_access(domain, group, key))
|
||||
return;
|
||||
|
@ -210,12 +210,12 @@ void ClientConnection::write_string_value(String const& domain, String const& gr
|
|||
m_dirty_domains.set(domain);
|
||||
start_or_restart_sync_timer();
|
||||
|
||||
for_each_monitoring_connection(domain, this, [&domain, &group, &key, &value](ClientConnection& connection) {
|
||||
for_each_monitoring_connection(domain, this, [&domain, &group, &key, &value](ConnectionFromClient& connection) {
|
||||
connection.async_notify_changed_string_value(domain, group, key, value);
|
||||
});
|
||||
}
|
||||
|
||||
void ClientConnection::write_i32_value(String const& domain, String const& group, String const& key, i32 value)
|
||||
void ConnectionFromClient::write_i32_value(String const& domain, String const& group, String const& key, i32 value)
|
||||
{
|
||||
if (!validate_access(domain, group, key))
|
||||
return;
|
||||
|
@ -229,12 +229,12 @@ void ClientConnection::write_i32_value(String const& domain, String const& group
|
|||
m_dirty_domains.set(domain);
|
||||
start_or_restart_sync_timer();
|
||||
|
||||
for_each_monitoring_connection(domain, this, [&domain, &group, &key, &value](ClientConnection& connection) {
|
||||
for_each_monitoring_connection(domain, this, [&domain, &group, &key, &value](ConnectionFromClient& connection) {
|
||||
connection.async_notify_changed_i32_value(domain, group, key, value);
|
||||
});
|
||||
}
|
||||
|
||||
void ClientConnection::write_bool_value(String const& domain, String const& group, String const& key, bool value)
|
||||
void ConnectionFromClient::write_bool_value(String const& domain, String const& group, String const& key, bool value)
|
||||
{
|
||||
if (!validate_access(domain, group, key))
|
||||
return;
|
||||
|
@ -248,12 +248,12 @@ void ClientConnection::write_bool_value(String const& domain, String const& grou
|
|||
m_dirty_domains.set(domain);
|
||||
start_or_restart_sync_timer();
|
||||
|
||||
for_each_monitoring_connection(domain, this, [&domain, &group, &key, &value](ClientConnection& connection) {
|
||||
for_each_monitoring_connection(domain, this, [&domain, &group, &key, &value](ConnectionFromClient& connection) {
|
||||
connection.async_notify_changed_bool_value(domain, group, key, value);
|
||||
});
|
||||
}
|
||||
|
||||
void ClientConnection::remove_key(String const& domain, String const& group, String const& key)
|
||||
void ConnectionFromClient::remove_key(String const& domain, String const& group, String const& key)
|
||||
{
|
||||
if (!validate_access(domain, group, key))
|
||||
return;
|
||||
|
@ -266,7 +266,7 @@ void ClientConnection::remove_key(String const& domain, String const& group, Str
|
|||
m_dirty_domains.set(domain);
|
||||
start_or_restart_sync_timer();
|
||||
|
||||
for_each_monitoring_connection(domain, this, [&domain, &group, &key](ClientConnection& connection) {
|
||||
for_each_monitoring_connection(domain, this, [&domain, &group, &key](ConnectionFromClient& connection) {
|
||||
connection.async_notify_removed_key(domain, group, key);
|
||||
});
|
||||
}
|
|
@ -6,24 +6,24 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
|
||||
#include <ConfigServer/ConfigClientEndpoint.h>
|
||||
#include <ConfigServer/ConfigServerEndpoint.h>
|
||||
|
||||
namespace ConfigServer {
|
||||
|
||||
class ClientConnection final : public IPC::ClientConnection<ConfigClientEndpoint, ConfigServerEndpoint> {
|
||||
C_OBJECT(ClientConnection)
|
||||
class ConnectionFromClient final : public IPC::ConnectionFromClient<ConfigClientEndpoint, ConfigServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient)
|
||||
public:
|
||||
~ClientConnection() override;
|
||||
~ConnectionFromClient() override;
|
||||
|
||||
virtual void die() override;
|
||||
|
||||
bool is_monitoring_domain(String const& domain) const { return m_monitored_domains.contains(domain); }
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
|
||||
virtual void pledge_domains(Vector<String> const&) override;
|
||||
virtual void monitor_domain(String const&) override;
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include <LibCore/StandardPaths.h>
|
||||
#include <LibCore/System.h>
|
||||
#include <LibIPC/MultiServer.h>
|
||||
|
@ -18,6 +18,6 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
|
||||
Core::EventLoop event_loop;
|
||||
|
||||
auto server = TRY(IPC::MultiServer<ConfigServer::ClientConnection>::try_create());
|
||||
auto server = TRY(IPC::MultiServer<ConfigServer::ConnectionFromClient>::try_create());
|
||||
return event_loop.exec();
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ compile_ipc(FileSystemAccessServer.ipc FileSystemAccessServerEndpoint.h)
|
|||
compile_ipc(FileSystemAccessClient.ipc FileSystemAccessClientEndpoint.h)
|
||||
|
||||
set(SOURCES
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
main.cpp
|
||||
FileSystemAccessServerEndpoint.h
|
||||
FileSystemAccessClientEndpoint.h
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include <LibGUI/WindowServerConnection.h>
|
||||
// clang-format on
|
||||
#include <AK/Debug.h>
|
||||
#include <FileSystemAccessServer/ClientConnection.h>
|
||||
#include <FileSystemAccessServer/ConnectionFromClient.h>
|
||||
#include <LibCore/File.h>
|
||||
#include <LibCore/IODevice.h>
|
||||
#include <LibGUI/Application.h>
|
||||
|
@ -18,25 +18,25 @@
|
|||
|
||||
namespace FileSystemAccessServer {
|
||||
|
||||
static HashMap<int, NonnullRefPtr<ClientConnection>> s_connections;
|
||||
static HashMap<int, NonnullRefPtr<ConnectionFromClient>> s_connections;
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> socket)
|
||||
: IPC::ClientConnection<FileSystemAccessClientEndpoint, FileSystemAccessServerEndpoint>(*this, move(socket), 1)
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> socket)
|
||||
: IPC::ConnectionFromClient<FileSystemAccessClientEndpoint, FileSystemAccessServerEndpoint>(*this, move(socket), 1)
|
||||
{
|
||||
s_connections.set(1, *this);
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
GUI::Application::the()->quit();
|
||||
}
|
||||
|
||||
RefPtr<GUI::Window> ClientConnection::create_dummy_child_window(i32 window_server_client_id, i32 parent_window_id)
|
||||
RefPtr<GUI::Window> ConnectionFromClient::create_dummy_child_window(i32 window_server_client_id, i32 parent_window_id)
|
||||
{
|
||||
auto window = GUI::Window::construct();
|
||||
window->set_opacity(0);
|
||||
|
@ -49,7 +49,7 @@ RefPtr<GUI::Window> ClientConnection::create_dummy_child_window(i32 window_serve
|
|||
return window;
|
||||
}
|
||||
|
||||
void ClientConnection::request_file_handler(i32 window_server_client_id, i32 parent_window_id, String const& path, Core::OpenMode const& requested_access, ShouldPrompt prompt)
|
||||
void ConnectionFromClient::request_file_handler(i32 window_server_client_id, i32 parent_window_id, String const& path, Core::OpenMode const& requested_access, ShouldPrompt prompt)
|
||||
{
|
||||
VERIFY(path.starts_with("/"sv));
|
||||
|
||||
|
@ -110,17 +110,17 @@ void ClientConnection::request_file_handler(i32 window_server_client_id, i32 par
|
|||
}
|
||||
}
|
||||
|
||||
void ClientConnection::request_file_read_only_approved(i32 window_server_client_id, i32 parent_window_id, String const& path)
|
||||
void ConnectionFromClient::request_file_read_only_approved(i32 window_server_client_id, i32 parent_window_id, String const& path)
|
||||
{
|
||||
request_file_handler(window_server_client_id, parent_window_id, path, Core::OpenMode::ReadOnly, ShouldPrompt::No);
|
||||
}
|
||||
|
||||
void ClientConnection::request_file(i32 window_server_client_id, i32 parent_window_id, String const& path, Core::OpenMode const& requested_access)
|
||||
void ConnectionFromClient::request_file(i32 window_server_client_id, i32 parent_window_id, String const& path, Core::OpenMode const& requested_access)
|
||||
{
|
||||
request_file_handler(window_server_client_id, parent_window_id, path, requested_access, ShouldPrompt::Yes);
|
||||
}
|
||||
|
||||
void ClientConnection::prompt_open_file(i32 window_server_client_id, i32 parent_window_id, String const& window_title, String const& path_to_view, Core::OpenMode const& requested_access)
|
||||
void ConnectionFromClient::prompt_open_file(i32 window_server_client_id, i32 parent_window_id, String const& window_title, String const& path_to_view, Core::OpenMode const& requested_access)
|
||||
{
|
||||
auto relevant_permissions = requested_access & (Core::OpenMode::ReadOnly | Core::OpenMode::WriteOnly);
|
||||
VERIFY(relevant_permissions != Core::OpenMode::NotOpen);
|
||||
|
@ -132,7 +132,7 @@ void ClientConnection::prompt_open_file(i32 window_server_client_id, i32 parent_
|
|||
prompt_helper(user_picked_file, requested_access);
|
||||
}
|
||||
|
||||
void ClientConnection::prompt_save_file(i32 window_server_client_id, i32 parent_window_id, String const& name, String const& ext, String const& path_to_view, Core::OpenMode const& requested_access)
|
||||
void ConnectionFromClient::prompt_save_file(i32 window_server_client_id, i32 parent_window_id, String const& name, String const& ext, String const& path_to_view, Core::OpenMode const& requested_access)
|
||||
{
|
||||
auto relevant_permissions = requested_access & (Core::OpenMode::ReadOnly | Core::OpenMode::WriteOnly);
|
||||
VERIFY(relevant_permissions != Core::OpenMode::NotOpen);
|
||||
|
@ -144,7 +144,7 @@ void ClientConnection::prompt_save_file(i32 window_server_client_id, i32 parent_
|
|||
prompt_helper(user_picked_file, requested_access);
|
||||
}
|
||||
|
||||
void ClientConnection::prompt_helper(Optional<String> const& user_picked_file, Core::OpenMode const& requested_access)
|
||||
void ConnectionFromClient::prompt_helper(Optional<String> const& user_picked_file, Core::OpenMode const& requested_access)
|
||||
{
|
||||
if (user_picked_file.has_value()) {
|
||||
VERIFY(user_picked_file->starts_with("/"sv));
|
||||
|
@ -169,7 +169,7 @@ void ClientConnection::prompt_helper(Optional<String> const& user_picked_file, C
|
|||
}
|
||||
}
|
||||
|
||||
Messages::FileSystemAccessServer::ExposeWindowServerClientIdResponse ClientConnection::expose_window_server_client_id()
|
||||
Messages::FileSystemAccessServer::ExposeWindowServerClientIdResponse ConnectionFromClient::expose_window_server_client_id()
|
||||
{
|
||||
return GUI::WindowServerConnection::the().expose_client_id();
|
||||
}
|
|
@ -11,21 +11,21 @@
|
|||
#include <FileSystemAccessServer/FileSystemAccessServerEndpoint.h>
|
||||
#include <LibCore/Forward.h>
|
||||
#include <LibGUI/Forward.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
|
||||
namespace FileSystemAccessServer {
|
||||
|
||||
class ClientConnection final
|
||||
: public IPC::ClientConnection<FileSystemAccessClientEndpoint, FileSystemAccessServerEndpoint> {
|
||||
C_OBJECT(ClientConnection);
|
||||
class ConnectionFromClient final
|
||||
: public IPC::ConnectionFromClient<FileSystemAccessClientEndpoint, FileSystemAccessServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient);
|
||||
|
||||
public:
|
||||
~ClientConnection() override;
|
||||
~ConnectionFromClient() override;
|
||||
|
||||
virtual void die() override;
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>);
|
||||
|
||||
virtual void request_file_read_only_approved(i32, i32, String const&) override;
|
||||
virtual void request_file(i32, i32, String const&, Core::OpenMode const&) override;
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <FileSystemAccessServer/ClientConnection.h>
|
||||
#include <FileSystemAccessServer/ConnectionFromClient.h>
|
||||
#include <LibCore/System.h>
|
||||
#include <LibGUI/Application.h>
|
||||
#include <LibIPC/SingleServer.h>
|
||||
|
@ -17,6 +17,6 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
auto app = GUI::Application::construct(0, nullptr);
|
||||
app->set_quit_when_last_window_deleted(false);
|
||||
|
||||
auto client = TRY(IPC::take_over_accepted_client_from_system_server<FileSystemAccessServer::ClientConnection>());
|
||||
auto client = TRY(IPC::take_over_accepted_client_from_system_server<FileSystemAccessServer::ConnectionFromClient>());
|
||||
return app->exec();
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ compile_ipc(ImageDecoderServer.ipc ImageDecoderServerEndpoint.h)
|
|||
compile_ipc(ImageDecoderClient.ipc ImageDecoderClientEndpoint.h)
|
||||
|
||||
set(SOURCES
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
main.cpp
|
||||
ImageDecoderServerEndpoint.h
|
||||
ImageDecoderClientEndpoint.h
|
||||
|
|
|
@ -5,28 +5,28 @@
|
|||
*/
|
||||
|
||||
#include <AK/Debug.h>
|
||||
#include <ImageDecoder/ClientConnection.h>
|
||||
#include <ImageDecoder/ConnectionFromClient.h>
|
||||
#include <ImageDecoder/ImageDecoderClientEndpoint.h>
|
||||
#include <LibGfx/Bitmap.h>
|
||||
#include <LibGfx/ImageDecoder.h>
|
||||
|
||||
namespace ImageDecoder {
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> socket)
|
||||
: IPC::ClientConnection<ImageDecoderClientEndpoint, ImageDecoderServerEndpoint>(*this, move(socket), 1)
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> socket)
|
||||
: IPC::ConnectionFromClient<ImageDecoderClientEndpoint, ImageDecoderServerEndpoint>(*this, move(socket), 1)
|
||||
{
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
Core::EventLoop::current().quit(0);
|
||||
}
|
||||
|
||||
Messages::ImageDecoderServer::DecodeImageResponse ClientConnection::decode_image(Core::AnonymousBuffer const& encoded_buffer)
|
||||
Messages::ImageDecoderServer::DecodeImageResponse ConnectionFromClient::decode_image(Core::AnonymousBuffer const& encoded_buffer)
|
||||
{
|
||||
if (!encoded_buffer.is_valid()) {
|
||||
dbgln_if(IMAGE_DECODER_DEBUG, "Encoded data is invalid");
|
|
@ -10,22 +10,22 @@
|
|||
#include <ImageDecoder/Forward.h>
|
||||
#include <ImageDecoder/ImageDecoderClientEndpoint.h>
|
||||
#include <ImageDecoder/ImageDecoderServerEndpoint.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
#include <LibWeb/Forward.h>
|
||||
|
||||
namespace ImageDecoder {
|
||||
|
||||
class ClientConnection final
|
||||
: public IPC::ClientConnection<ImageDecoderClientEndpoint, ImageDecoderServerEndpoint> {
|
||||
C_OBJECT(ClientConnection);
|
||||
class ConnectionFromClient final
|
||||
: public IPC::ConnectionFromClient<ImageDecoderClientEndpoint, ImageDecoderServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient);
|
||||
|
||||
public:
|
||||
~ClientConnection() override;
|
||||
~ConnectionFromClient() override;
|
||||
|
||||
virtual void die() override;
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>);
|
||||
|
||||
virtual Messages::ImageDecoderServer::DecodeImageResponse decode_image(Core::AnonymousBuffer const&) override;
|
||||
};
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
namespace WebContent {
|
||||
|
||||
class ClientConnection;
|
||||
class ConnectionFromClient;
|
||||
class PageHost;
|
||||
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <ImageDecoder/ClientConnection.h>
|
||||
#include <ImageDecoder/ConnectionFromClient.h>
|
||||
#include <LibCore/EventLoop.h>
|
||||
#include <LibCore/System.h>
|
||||
#include <LibIPC/SingleServer.h>
|
||||
|
@ -16,7 +16,7 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
TRY(Core::System::pledge("stdio recvfd sendfd unix"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
auto client = TRY(IPC::take_over_accepted_client_from_system_server<ImageDecoder::ClientConnection>());
|
||||
auto client = TRY(IPC::take_over_accepted_client_from_system_server<ImageDecoder::ConnectionFromClient>());
|
||||
|
||||
TRY(Core::System::pledge("stdio recvfd sendfd"));
|
||||
return event_loop.exec();
|
||||
|
|
|
@ -8,7 +8,7 @@ compile_ipc(InspectorServer.ipc InspectorServerEndpoint.h)
|
|||
compile_ipc(InspectorClient.ipc InspectorClientEndpoint.h)
|
||||
|
||||
set(SOURCES
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
main.cpp
|
||||
InspectableProcess.cpp
|
||||
InspectorServerEndpoint.h
|
||||
|
|
|
@ -6,28 +6,28 @@
|
|||
|
||||
#include "InspectableProcess.h"
|
||||
#include <AK/JsonObject.h>
|
||||
#include <InspectorServer/ClientConnection.h>
|
||||
#include <InspectorServer/ConnectionFromClient.h>
|
||||
|
||||
namespace InspectorServer {
|
||||
|
||||
static HashMap<int, RefPtr<ClientConnection>> s_connections;
|
||||
static HashMap<int, RefPtr<ConnectionFromClient>> s_connections;
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> socket, int client_id)
|
||||
: IPC::ClientConnection<InspectorClientEndpoint, InspectorServerEndpoint>(*this, move(socket), client_id)
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> socket, int client_id)
|
||||
: IPC::ConnectionFromClient<InspectorClientEndpoint, InspectorServerEndpoint>(*this, move(socket), client_id)
|
||||
{
|
||||
s_connections.set(client_id, *this);
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
}
|
||||
|
||||
Messages::InspectorServer::GetAllObjectsResponse ClientConnection::get_all_objects(pid_t pid)
|
||||
Messages::InspectorServer::GetAllObjectsResponse ConnectionFromClient::get_all_objects(pid_t pid)
|
||||
{
|
||||
auto process = InspectableProcess::from_pid(pid);
|
||||
if (!process)
|
||||
|
@ -40,7 +40,7 @@ Messages::InspectorServer::GetAllObjectsResponse ClientConnection::get_all_objec
|
|||
return response;
|
||||
}
|
||||
|
||||
Messages::InspectorServer::SetInspectedObjectResponse ClientConnection::set_inspected_object(pid_t pid, u64 object_id)
|
||||
Messages::InspectorServer::SetInspectedObjectResponse ConnectionFromClient::set_inspected_object(pid_t pid, u64 object_id)
|
||||
{
|
||||
auto process = InspectableProcess::from_pid(pid);
|
||||
if (!process)
|
||||
|
@ -53,7 +53,7 @@ Messages::InspectorServer::SetInspectedObjectResponse ClientConnection::set_insp
|
|||
return true;
|
||||
}
|
||||
|
||||
Messages::InspectorServer::SetObjectPropertyResponse ClientConnection::set_object_property(pid_t pid, u64 object_id, String const& name, String const& value)
|
||||
Messages::InspectorServer::SetObjectPropertyResponse ConnectionFromClient::set_object_property(pid_t pid, u64 object_id, String const& name, String const& value)
|
||||
{
|
||||
auto process = InspectableProcess::from_pid(pid);
|
||||
if (!process)
|
||||
|
@ -68,7 +68,7 @@ Messages::InspectorServer::SetObjectPropertyResponse ClientConnection::set_objec
|
|||
return true;
|
||||
}
|
||||
|
||||
Messages::InspectorServer::IdentifyResponse ClientConnection::identify(pid_t pid)
|
||||
Messages::InspectorServer::IdentifyResponse ConnectionFromClient::identify(pid_t pid)
|
||||
{
|
||||
auto process = InspectableProcess::from_pid(pid);
|
||||
if (!process)
|
||||
|
@ -81,7 +81,7 @@ Messages::InspectorServer::IdentifyResponse ClientConnection::identify(pid_t pid
|
|||
return response;
|
||||
}
|
||||
|
||||
Messages::InspectorServer::IsInspectableResponse ClientConnection::is_inspectable(pid_t pid)
|
||||
Messages::InspectorServer::IsInspectableResponse ConnectionFromClient::is_inspectable(pid_t pid)
|
||||
{
|
||||
auto process = InspectableProcess::from_pid(pid);
|
||||
if (!process)
|
|
@ -9,21 +9,21 @@
|
|||
#include <AK/HashMap.h>
|
||||
#include <InspectorServer/InspectorClientEndpoint.h>
|
||||
#include <InspectorServer/InspectorServerEndpoint.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
|
||||
namespace InspectorServer {
|
||||
|
||||
class ClientConnection final
|
||||
: public IPC::ClientConnection<InspectorClientEndpoint, InspectorServerEndpoint> {
|
||||
C_OBJECT(ClientConnection);
|
||||
class ConnectionFromClient final
|
||||
: public IPC::ConnectionFromClient<InspectorClientEndpoint, InspectorServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient);
|
||||
|
||||
public:
|
||||
~ClientConnection() override;
|
||||
~ConnectionFromClient() override;
|
||||
|
||||
virtual void die() override;
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
|
||||
virtual Messages::InspectorServer::GetAllObjectsResponse get_all_objects(pid_t) override;
|
||||
virtual Messages::InspectorServer::SetInspectedObjectResponse set_inspected_object(pid_t, u64 object_id) override;
|
|
@ -8,6 +8,6 @@
|
|||
|
||||
namespace SymbolServer {
|
||||
|
||||
class ClientConnection;
|
||||
class ConnectionFromClient;
|
||||
|
||||
}
|
||||
|
|
|
@ -5,11 +5,11 @@
|
|||
*/
|
||||
|
||||
#include "InspectableProcess.h"
|
||||
#include <InspectorServer/ClientConnection.h>
|
||||
#include <InspectorServer/ConnectionFromClient.h>
|
||||
#include <LibCore/EventLoop.h>
|
||||
#include <LibCore/LocalServer.h>
|
||||
#include <LibCore/System.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
#include <LibIPC/MultiServer.h>
|
||||
#include <LibMain/Main.h>
|
||||
|
||||
|
@ -19,7 +19,7 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
|
||||
TRY(Core::System::pledge("stdio unix accept"));
|
||||
|
||||
auto server = TRY(IPC::MultiServer<InspectorServer::ClientConnection>::try_create("/tmp/portal/inspector"));
|
||||
auto server = TRY(IPC::MultiServer<InspectorServer::ConnectionFromClient>::try_create("/tmp/portal/inspector"));
|
||||
|
||||
auto inspectables_server = TRY(Core::LocalServer::try_create());
|
||||
TRY(inspectables_server->take_over_from_system_server("/tmp/portal/inspectables"));
|
||||
|
|
|
@ -8,7 +8,7 @@ compile_ipc(LaunchServer.ipc LaunchServerEndpoint.h)
|
|||
compile_ipc(LaunchClient.ipc LaunchClientEndpoint.h)
|
||||
|
||||
set(SOURCES
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
Launcher.cpp
|
||||
main.cpp
|
||||
LaunchClientEndpoint.h
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include "Launcher.h"
|
||||
#include <AK/HashMap.h>
|
||||
#include <AK/URL.h>
|
||||
|
@ -12,23 +12,23 @@
|
|||
|
||||
namespace LaunchServer {
|
||||
|
||||
static HashMap<int, RefPtr<ClientConnection>> s_connections;
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id)
|
||||
: IPC::ClientConnection<LaunchClientEndpoint, LaunchServerEndpoint>(*this, move(client_socket), client_id)
|
||||
static HashMap<int, RefPtr<ConnectionFromClient>> s_connections;
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id)
|
||||
: IPC::ConnectionFromClient<LaunchClientEndpoint, LaunchServerEndpoint>(*this, move(client_socket), client_id)
|
||||
{
|
||||
s_connections.set(client_id, *this);
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
}
|
||||
|
||||
Messages::LaunchServer::OpenUrlResponse ClientConnection::open_url(URL const& url, String const& handler_name)
|
||||
Messages::LaunchServer::OpenUrlResponse ConnectionFromClient::open_url(URL const& url, String const& handler_name)
|
||||
{
|
||||
if (!m_allowlist.is_empty()) {
|
||||
bool allowed = false;
|
||||
|
@ -51,17 +51,17 @@ Messages::LaunchServer::OpenUrlResponse ClientConnection::open_url(URL const& ur
|
|||
return Launcher::the().open_url(url, handler_name);
|
||||
}
|
||||
|
||||
Messages::LaunchServer::GetHandlersForUrlResponse ClientConnection::get_handlers_for_url(URL const& url)
|
||||
Messages::LaunchServer::GetHandlersForUrlResponse ConnectionFromClient::get_handlers_for_url(URL const& url)
|
||||
{
|
||||
return Launcher::the().handlers_for_url(url);
|
||||
}
|
||||
|
||||
Messages::LaunchServer::GetHandlersWithDetailsForUrlResponse ClientConnection::get_handlers_with_details_for_url(URL const& url)
|
||||
Messages::LaunchServer::GetHandlersWithDetailsForUrlResponse ConnectionFromClient::get_handlers_with_details_for_url(URL const& url)
|
||||
{
|
||||
return Launcher::the().handlers_with_details_for_url(url);
|
||||
}
|
||||
|
||||
void ClientConnection::add_allowed_url(URL const& url)
|
||||
void ConnectionFromClient::add_allowed_url(URL const& url)
|
||||
{
|
||||
if (m_allowlist_is_sealed) {
|
||||
did_misbehave("Got request to add more allowed handlers after list was sealed");
|
||||
|
@ -76,7 +76,7 @@ void ClientConnection::add_allowed_url(URL const& url)
|
|||
m_allowlist.empend(String(), false, Vector<URL> { url });
|
||||
}
|
||||
|
||||
void ClientConnection::add_allowed_handler_with_any_url(String const& handler_name)
|
||||
void ConnectionFromClient::add_allowed_handler_with_any_url(String const& handler_name)
|
||||
{
|
||||
if (m_allowlist_is_sealed) {
|
||||
did_misbehave("Got request to add more allowed handlers after list was sealed");
|
||||
|
@ -91,7 +91,7 @@ void ClientConnection::add_allowed_handler_with_any_url(String const& handler_na
|
|||
m_allowlist.empend(handler_name, true, Vector<URL>());
|
||||
}
|
||||
|
||||
void ClientConnection::add_allowed_handler_with_only_specific_urls(String const& handler_name, Vector<URL> const& urls)
|
||||
void ConnectionFromClient::add_allowed_handler_with_only_specific_urls(String const& handler_name, Vector<URL> const& urls)
|
||||
{
|
||||
if (m_allowlist_is_sealed) {
|
||||
did_misbehave("Got request to add more allowed handlers after list was sealed");
|
||||
|
@ -111,7 +111,7 @@ void ClientConnection::add_allowed_handler_with_only_specific_urls(String const&
|
|||
m_allowlist.empend(handler_name, false, urls);
|
||||
}
|
||||
|
||||
void ClientConnection::seal_allowlist()
|
||||
void ConnectionFromClient::seal_allowlist()
|
||||
{
|
||||
if (m_allowlist_is_sealed) {
|
||||
did_misbehave("Got more than one request to seal the allowed handlers list");
|
|
@ -8,19 +8,19 @@
|
|||
|
||||
#include <LaunchServer/LaunchClientEndpoint.h>
|
||||
#include <LaunchServer/LaunchServerEndpoint.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
|
||||
namespace LaunchServer {
|
||||
|
||||
class ClientConnection final : public IPC::ClientConnection<LaunchClientEndpoint, LaunchServerEndpoint> {
|
||||
C_OBJECT(ClientConnection)
|
||||
class ConnectionFromClient final : public IPC::ConnectionFromClient<LaunchClientEndpoint, LaunchServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient)
|
||||
public:
|
||||
~ClientConnection() override;
|
||||
~ConnectionFromClient() override;
|
||||
|
||||
virtual void die() override;
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
|
||||
virtual Messages::LaunchServer::OpenUrlResponse open_url(URL const&, String const&) override;
|
||||
virtual Messages::LaunchServer::GetHandlersForUrlResponse get_handlers_for_url(URL const&) override;
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include "Launcher.h"
|
||||
#include <LibCore/ConfigFile.h>
|
||||
#include <LibCore/EventLoop.h>
|
||||
|
@ -15,7 +15,7 @@
|
|||
ErrorOr<int> serenity_main(Main::Arguments)
|
||||
{
|
||||
Core::EventLoop event_loop;
|
||||
auto server = TRY(IPC::MultiServer<LaunchServer::ClientConnection>::try_create());
|
||||
auto server = TRY(IPC::MultiServer<LaunchServer::ConnectionFromClient>::try_create());
|
||||
|
||||
auto launcher = LaunchServer::Launcher();
|
||||
launcher.load_handlers();
|
||||
|
|
|
@ -15,7 +15,7 @@ set(SOURCES
|
|||
LookupServer.cpp
|
||||
LookupServerEndpoint.h
|
||||
LookupClientEndpoint.h
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
MulticastDNS.cpp
|
||||
main.cpp
|
||||
)
|
||||
|
|
|
@ -4,31 +4,31 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include "DNSPacket.h"
|
||||
#include "LookupServer.h"
|
||||
#include <AK/IPv4Address.h>
|
||||
|
||||
namespace LookupServer {
|
||||
|
||||
static HashMap<int, RefPtr<ClientConnection>> s_connections;
|
||||
static HashMap<int, RefPtr<ConnectionFromClient>> s_connections;
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> socket, int client_id)
|
||||
: IPC::ClientConnection<LookupClientEndpoint, LookupServerEndpoint>(*this, move(socket), client_id)
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> socket, int client_id)
|
||||
: IPC::ConnectionFromClient<LookupClientEndpoint, LookupServerEndpoint>(*this, move(socket), client_id)
|
||||
{
|
||||
s_connections.set(client_id, *this);
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
}
|
||||
|
||||
Messages::LookupServer::LookupNameResponse ClientConnection::lookup_name(String const& name)
|
||||
Messages::LookupServer::LookupNameResponse ConnectionFromClient::lookup_name(String const& name)
|
||||
{
|
||||
auto maybe_answers = LookupServer::the().lookup(name, DNSRecordType::A);
|
||||
if (maybe_answers.is_error()) {
|
||||
|
@ -43,7 +43,7 @@ Messages::LookupServer::LookupNameResponse ClientConnection::lookup_name(String
|
|||
return { 0, move(addresses) };
|
||||
}
|
||||
|
||||
Messages::LookupServer::LookupAddressResponse ClientConnection::lookup_address(String const& address)
|
||||
Messages::LookupServer::LookupAddressResponse ConnectionFromClient::lookup_address(String const& address)
|
||||
{
|
||||
if (address.length() != 4)
|
||||
return { 1, String() };
|
|
@ -7,23 +7,23 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/HashMap.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
#include <LookupServer/LookupClientEndpoint.h>
|
||||
#include <LookupServer/LookupServerEndpoint.h>
|
||||
|
||||
namespace LookupServer {
|
||||
|
||||
class ClientConnection final
|
||||
: public IPC::ClientConnection<LookupClientEndpoint, LookupServerEndpoint> {
|
||||
C_OBJECT(ClientConnection);
|
||||
class ConnectionFromClient final
|
||||
: public IPC::ConnectionFromClient<LookupClientEndpoint, LookupServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient);
|
||||
|
||||
public:
|
||||
virtual ~ClientConnection() override;
|
||||
virtual ~ConnectionFromClient() override;
|
||||
|
||||
virtual void die() override;
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
|
||||
virtual Messages::LookupServer::LookupNameResponse lookup_name(String const&) override;
|
||||
virtual Messages::LookupServer::LookupAddressResponse lookup_address(String const&) override;
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "LookupServer.h"
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include "DNSPacket.h"
|
||||
#include <AK/Debug.h>
|
||||
#include <AK/HashMap.h>
|
||||
|
@ -72,7 +72,7 @@ LookupServer::LookupServer()
|
|||
}
|
||||
m_mdns = MulticastDNS::construct(this);
|
||||
|
||||
m_server = MUST(IPC::MultiServer<ClientConnection>::try_create());
|
||||
m_server = MUST(IPC::MultiServer<ConnectionFromClient>::try_create());
|
||||
}
|
||||
|
||||
void LookupServer::load_etc_hosts()
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include "DNSName.h"
|
||||
#include "DNSPacket.h"
|
||||
#include "DNSServer.h"
|
||||
|
@ -34,7 +34,7 @@ private:
|
|||
|
||||
ErrorOr<Vector<DNSAnswer>> lookup(const DNSName& hostname, const String& nameserver, bool& did_get_response, DNSRecordType record_type, ShouldRandomizeCase = ShouldRandomizeCase::Yes);
|
||||
|
||||
OwnPtr<IPC::MultiServer<ClientConnection>> m_server;
|
||||
OwnPtr<IPC::MultiServer<ConnectionFromClient>> m_server;
|
||||
RefPtr<DNSServer> m_dns_server;
|
||||
RefPtr<MulticastDNS> m_mdns;
|
||||
Vector<String> m_nameservers;
|
||||
|
|
|
@ -8,7 +8,7 @@ compile_ipc(NotificationServer.ipc NotificationServerEndpoint.h)
|
|||
compile_ipc(NotificationClient.ipc NotificationClientEndpoint.h)
|
||||
|
||||
set(SOURCES
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
main.cpp
|
||||
NotificationWindow.cpp
|
||||
NotificationServerEndpoint.h
|
||||
|
|
|
@ -4,37 +4,37 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include "NotificationWindow.h"
|
||||
#include <AK/HashMap.h>
|
||||
#include <NotificationServer/NotificationClientEndpoint.h>
|
||||
|
||||
namespace NotificationServer {
|
||||
|
||||
static HashMap<int, RefPtr<ClientConnection>> s_connections;
|
||||
static HashMap<int, RefPtr<ConnectionFromClient>> s_connections;
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id)
|
||||
: IPC::ClientConnection<NotificationClientEndpoint, NotificationServerEndpoint>(*this, move(client_socket), client_id)
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id)
|
||||
: IPC::ConnectionFromClient<NotificationClientEndpoint, NotificationServerEndpoint>(*this, move(client_socket), client_id)
|
||||
{
|
||||
s_connections.set(client_id, *this);
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
}
|
||||
|
||||
void ClientConnection::show_notification(String const& text, String const& title, Gfx::ShareableBitmap const& icon)
|
||||
void ConnectionFromClient::show_notification(String const& text, String const& title, Gfx::ShareableBitmap const& icon)
|
||||
{
|
||||
auto window = NotificationWindow::construct(client_id(), text, title, icon);
|
||||
window->show();
|
||||
}
|
||||
|
||||
void ClientConnection::close_notification()
|
||||
void ConnectionFromClient::close_notification()
|
||||
{
|
||||
auto window = NotificationWindow::get_window_by_id(client_id());
|
||||
if (window) {
|
||||
|
@ -42,7 +42,7 @@ void ClientConnection::close_notification()
|
|||
}
|
||||
}
|
||||
|
||||
Messages::NotificationServer::UpdateNotificationIconResponse ClientConnection::update_notification_icon(Gfx::ShareableBitmap const& icon)
|
||||
Messages::NotificationServer::UpdateNotificationIconResponse ConnectionFromClient::update_notification_icon(Gfx::ShareableBitmap const& icon)
|
||||
{
|
||||
auto window = NotificationWindow::get_window_by_id(client_id());
|
||||
if (window) {
|
||||
|
@ -51,7 +51,7 @@ Messages::NotificationServer::UpdateNotificationIconResponse ClientConnection::u
|
|||
return !!window;
|
||||
}
|
||||
|
||||
Messages::NotificationServer::UpdateNotificationTextResponse ClientConnection::update_notification_text(String const& text, String const& title)
|
||||
Messages::NotificationServer::UpdateNotificationTextResponse ConnectionFromClient::update_notification_text(String const& text, String const& title)
|
||||
{
|
||||
auto window = NotificationWindow::get_window_by_id(client_id());
|
||||
if (window) {
|
||||
|
@ -61,7 +61,7 @@ Messages::NotificationServer::UpdateNotificationTextResponse ClientConnection::u
|
|||
return !!window;
|
||||
}
|
||||
|
||||
Messages::NotificationServer::IsShowingResponse ClientConnection::is_showing()
|
||||
Messages::NotificationServer::IsShowingResponse ConnectionFromClient::is_showing()
|
||||
{
|
||||
auto window = NotificationWindow::get_window_by_id(client_id());
|
||||
return !!window;
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
#include <WindowServer/ScreenLayout.h>
|
||||
|
||||
// Must be included after WindowServer/ScreenLayout.h
|
||||
|
@ -15,15 +15,15 @@
|
|||
|
||||
namespace NotificationServer {
|
||||
|
||||
class ClientConnection final : public IPC::ClientConnection<NotificationClientEndpoint, NotificationServerEndpoint> {
|
||||
C_OBJECT(ClientConnection)
|
||||
class ConnectionFromClient final : public IPC::ConnectionFromClient<NotificationClientEndpoint, NotificationServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient)
|
||||
public:
|
||||
~ClientConnection() override;
|
||||
~ConnectionFromClient() override;
|
||||
|
||||
virtual void die() override;
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
|
||||
virtual void show_notification(String const&, String const&, Gfx::ShareableBitmap const&) override;
|
||||
virtual void close_notification() override;
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include <LibCore/System.h>
|
||||
#include <LibGUI/Application.h>
|
||||
#include <LibIPC/MultiServer.h>
|
||||
|
@ -15,7 +15,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
TRY(Core::System::pledge("stdio recvfd sendfd accept rpath unix"));
|
||||
|
||||
auto app = TRY(GUI::Application::try_create(arguments));
|
||||
auto server = TRY(IPC::MultiServer<NotificationServer::ClientConnection>::try_create());
|
||||
auto server = TRY(IPC::MultiServer<NotificationServer::ConnectionFromClient>::try_create());
|
||||
|
||||
TRY(Core::System::unveil("/res", "r"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
|
|
@ -7,7 +7,7 @@ compile_ipc(RequestServer.ipc RequestServerEndpoint.h)
|
|||
compile_ipc(RequestClient.ipc RequestClientEndpoint.h)
|
||||
|
||||
set(SOURCES
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
ConnectionCache.cpp
|
||||
Request.cpp
|
||||
RequestClientEndpoint.h
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
#include <AK/Badge.h>
|
||||
#include <RequestServer/ClientConnection.h>
|
||||
#include <RequestServer/ConnectionFromClient.h>
|
||||
#include <RequestServer/Protocol.h>
|
||||
#include <RequestServer/Request.h>
|
||||
#include <RequestServer/RequestClientEndpoint.h>
|
||||
|
@ -13,32 +13,32 @@
|
|||
|
||||
namespace RequestServer {
|
||||
|
||||
static HashMap<int, RefPtr<ClientConnection>> s_connections;
|
||||
static HashMap<int, RefPtr<ConnectionFromClient>> s_connections;
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> socket)
|
||||
: IPC::ClientConnection<RequestClientEndpoint, RequestServerEndpoint>(*this, move(socket), 1)
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> socket)
|
||||
: IPC::ConnectionFromClient<RequestClientEndpoint, RequestServerEndpoint>(*this, move(socket), 1)
|
||||
{
|
||||
s_connections.set(1, *this);
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
if (s_connections.is_empty())
|
||||
Core::EventLoop::current().quit(0);
|
||||
}
|
||||
|
||||
Messages::RequestServer::IsSupportedProtocolResponse ClientConnection::is_supported_protocol(String const& protocol)
|
||||
Messages::RequestServer::IsSupportedProtocolResponse ConnectionFromClient::is_supported_protocol(String const& protocol)
|
||||
{
|
||||
bool supported = Protocol::find_by_name(protocol.to_lowercase());
|
||||
return supported;
|
||||
}
|
||||
|
||||
Messages::RequestServer::StartRequestResponse ClientConnection::start_request(String const& method, URL const& url, IPC::Dictionary const& request_headers, ByteBuffer const& request_body)
|
||||
Messages::RequestServer::StartRequestResponse ConnectionFromClient::start_request(String const& method, URL const& url, IPC::Dictionary const& request_headers, ByteBuffer const& request_body)
|
||||
{
|
||||
if (!url.is_valid()) {
|
||||
dbgln("StartRequest: Invalid URL requested: '{}'", url);
|
||||
|
@ -60,7 +60,7 @@ Messages::RequestServer::StartRequestResponse ClientConnection::start_request(St
|
|||
return { id, IPC::File(fd, IPC::File::CloseAfterSending) };
|
||||
}
|
||||
|
||||
Messages::RequestServer::StopRequestResponse ClientConnection::stop_request(i32 request_id)
|
||||
Messages::RequestServer::StopRequestResponse ConnectionFromClient::stop_request(i32 request_id)
|
||||
{
|
||||
auto* request = const_cast<Request*>(m_requests.get(request_id).value_or(nullptr));
|
||||
bool success = false;
|
||||
|
@ -72,7 +72,7 @@ Messages::RequestServer::StopRequestResponse ClientConnection::stop_request(i32
|
|||
return success;
|
||||
}
|
||||
|
||||
void ClientConnection::did_receive_headers(Badge<Request>, Request& request)
|
||||
void ConnectionFromClient::did_receive_headers(Badge<Request>, Request& request)
|
||||
{
|
||||
IPC::Dictionary response_headers;
|
||||
for (auto& it : request.response_headers())
|
||||
|
@ -81,7 +81,7 @@ void ClientConnection::did_receive_headers(Badge<Request>, Request& request)
|
|||
async_headers_became_available(request.id(), move(response_headers), request.status_code());
|
||||
}
|
||||
|
||||
void ClientConnection::did_finish_request(Badge<Request>, Request& request, bool success)
|
||||
void ConnectionFromClient::did_finish_request(Badge<Request>, Request& request, bool success)
|
||||
{
|
||||
VERIFY(request.total_size().has_value());
|
||||
|
||||
|
@ -90,17 +90,17 @@ void ClientConnection::did_finish_request(Badge<Request>, Request& request, bool
|
|||
m_requests.remove(request.id());
|
||||
}
|
||||
|
||||
void ClientConnection::did_progress_request(Badge<Request>, Request& request)
|
||||
void ConnectionFromClient::did_progress_request(Badge<Request>, Request& request)
|
||||
{
|
||||
async_request_progress(request.id(), request.total_size(), request.downloaded_size());
|
||||
}
|
||||
|
||||
void ClientConnection::did_request_certificates(Badge<Request>, Request& request)
|
||||
void ConnectionFromClient::did_request_certificates(Badge<Request>, Request& request)
|
||||
{
|
||||
async_certificate_requested(request.id());
|
||||
}
|
||||
|
||||
Messages::RequestServer::SetCertificateResponse ClientConnection::set_certificate(i32 request_id, String const& certificate, String const& key)
|
||||
Messages::RequestServer::SetCertificateResponse ConnectionFromClient::set_certificate(i32 request_id, String const& certificate, String const& key)
|
||||
{
|
||||
auto* request = const_cast<Request*>(m_requests.get(request_id).value_or(nullptr));
|
||||
bool success = false;
|
||||
|
@ -111,7 +111,7 @@ Messages::RequestServer::SetCertificateResponse ClientConnection::set_certificat
|
|||
return success;
|
||||
}
|
||||
|
||||
void ClientConnection::ensure_connection(URL const& url, ::RequestServer::CacheLevel const& cache_level)
|
||||
void ConnectionFromClient::ensure_connection(URL const& url, ::RequestServer::CacheLevel const& cache_level)
|
||||
{
|
||||
if (!url.is_valid()) {
|
||||
dbgln("EnsureConnection: Invalid URL requested: '{}'", url);
|
|
@ -7,19 +7,19 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/HashMap.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
#include <RequestServer/Forward.h>
|
||||
#include <RequestServer/RequestClientEndpoint.h>
|
||||
#include <RequestServer/RequestServerEndpoint.h>
|
||||
|
||||
namespace RequestServer {
|
||||
|
||||
class ClientConnection final
|
||||
: public IPC::ClientConnection<RequestClientEndpoint, RequestServerEndpoint> {
|
||||
C_OBJECT(ClientConnection);
|
||||
class ConnectionFromClient final
|
||||
: public IPC::ConnectionFromClient<RequestClientEndpoint, RequestServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient);
|
||||
|
||||
public:
|
||||
~ClientConnection() override;
|
||||
~ConnectionFromClient() override;
|
||||
|
||||
virtual void die() override;
|
||||
|
||||
|
@ -29,7 +29,7 @@ public:
|
|||
void did_request_certificates(Badge<Request>, Request&);
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>);
|
||||
|
||||
virtual Messages::RequestServer::IsSupportedProtocolResponse is_supported_protocol(String const&) override;
|
||||
virtual Messages::RequestServer::StartRequestResponse start_request(String const&, URL const&, IPC::Dictionary const&, ByteBuffer const&) override;
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
namespace RequestServer {
|
||||
|
||||
class ClientConnection;
|
||||
class ConnectionFromClient;
|
||||
class Request;
|
||||
class GeminiProtocol;
|
||||
class HttpRequest;
|
||||
|
|
|
@ -21,7 +21,7 @@ GeminiProtocol::~GeminiProtocol()
|
|||
{
|
||||
}
|
||||
|
||||
OwnPtr<Request> GeminiProtocol::start_request(ClientConnection& client, const String&, const URL& url, const HashMap<String, String>&, ReadonlyBytes)
|
||||
OwnPtr<Request> GeminiProtocol::start_request(ConnectionFromClient& client, const String&, const URL& url, const HashMap<String, String>&, ReadonlyBytes)
|
||||
{
|
||||
Gemini::GeminiRequest request;
|
||||
request.set_url(url);
|
||||
|
|
|
@ -15,7 +15,7 @@ public:
|
|||
GeminiProtocol();
|
||||
virtual ~GeminiProtocol() override;
|
||||
|
||||
virtual OwnPtr<Request> start_request(ClientConnection&, const String& method, const URL&, const HashMap<String, String>&, ReadonlyBytes body) override;
|
||||
virtual OwnPtr<Request> start_request(ConnectionFromClient&, const String& method, const URL&, const HashMap<String, String>&, ReadonlyBytes body) override;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
namespace RequestServer {
|
||||
|
||||
GeminiRequest::GeminiRequest(ClientConnection& client, NonnullRefPtr<Gemini::Job> job, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
GeminiRequest::GeminiRequest(ConnectionFromClient& client, NonnullRefPtr<Gemini::Job> job, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
: Request(client, move(output_stream))
|
||||
, m_job(move(job))
|
||||
{
|
||||
|
@ -57,7 +57,7 @@ GeminiRequest::~GeminiRequest()
|
|||
m_job->cancel();
|
||||
}
|
||||
|
||||
NonnullOwnPtr<GeminiRequest> GeminiRequest::create_with_job(Badge<GeminiProtocol>, ClientConnection& client, NonnullRefPtr<Gemini::Job> job, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
NonnullOwnPtr<GeminiRequest> GeminiRequest::create_with_job(Badge<GeminiProtocol>, ConnectionFromClient& client, NonnullRefPtr<Gemini::Job> job, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
{
|
||||
return adopt_own(*new GeminiRequest(client, move(job), move(output_stream)));
|
||||
}
|
||||
|
|
|
@ -16,14 +16,14 @@ namespace RequestServer {
|
|||
class GeminiRequest final : public Request {
|
||||
public:
|
||||
virtual ~GeminiRequest() override;
|
||||
static NonnullOwnPtr<GeminiRequest> create_with_job(Badge<GeminiProtocol>, ClientConnection&, NonnullRefPtr<Gemini::Job>, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
static NonnullOwnPtr<GeminiRequest> create_with_job(Badge<GeminiProtocol>, ConnectionFromClient&, NonnullRefPtr<Gemini::Job>, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
|
||||
Gemini::Job const& job() const { return *m_job; }
|
||||
|
||||
virtual URL url() const override { return m_job->url(); }
|
||||
|
||||
private:
|
||||
explicit GeminiRequest(ClientConnection&, NonnullRefPtr<Gemini::Job>, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
explicit GeminiRequest(ConnectionFromClient&, NonnullRefPtr<Gemini::Job>, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
|
||||
virtual void set_certificate(String certificate, String key) override;
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
#include <AK/String.h>
|
||||
#include <AK/Types.h>
|
||||
#include <LibHTTP/HttpRequest.h>
|
||||
#include <RequestServer/ClientConnection.h>
|
||||
#include <RequestServer/ConnectionCache.h>
|
||||
#include <RequestServer/ConnectionFromClient.h>
|
||||
#include <RequestServer/Request.h>
|
||||
|
||||
namespace RequestServer::Detail {
|
||||
|
@ -61,7 +61,7 @@ void init(TSelf* self, TJob job)
|
|||
}
|
||||
|
||||
template<typename TBadgedProtocol, typename TPipeResult>
|
||||
OwnPtr<Request> start_request(TBadgedProtocol&& protocol, ClientConnection& client, const String& method, const URL& url, const HashMap<String, String>& headers, ReadonlyBytes body, TPipeResult&& pipe_result)
|
||||
OwnPtr<Request> start_request(TBadgedProtocol&& protocol, ConnectionFromClient& client, const String& method, const URL& url, const HashMap<String, String>& headers, ReadonlyBytes body, TPipeResult&& pipe_result)
|
||||
{
|
||||
using TJob = typename TBadgedProtocol::Type::JobType;
|
||||
using TRequest = typename TBadgedProtocol::Type::RequestType;
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include <AK/OwnPtr.h>
|
||||
#include <AK/String.h>
|
||||
#include <AK/URL.h>
|
||||
#include <RequestServer/ClientConnection.h>
|
||||
#include <RequestServer/ConnectionFromClient.h>
|
||||
#include <RequestServer/HttpCommon.h>
|
||||
#include <RequestServer/HttpProtocol.h>
|
||||
#include <RequestServer/Request.h>
|
||||
|
@ -22,7 +22,7 @@ HttpProtocol::HttpProtocol()
|
|||
{
|
||||
}
|
||||
|
||||
OwnPtr<Request> HttpProtocol::start_request(ClientConnection& client, const String& method, const URL& url, const HashMap<String, String>& headers, ReadonlyBytes body)
|
||||
OwnPtr<Request> HttpProtocol::start_request(ConnectionFromClient& client, const String& method, const URL& url, const HashMap<String, String>& headers, ReadonlyBytes body)
|
||||
{
|
||||
return Detail::start_request(Badge<HttpProtocol> {}, client, method, url, headers, body, get_pipe_for_request());
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include <AK/String.h>
|
||||
#include <AK/URL.h>
|
||||
#include <LibHTTP/Job.h>
|
||||
#include <RequestServer/ClientConnection.h>
|
||||
#include <RequestServer/ConnectionFromClient.h>
|
||||
#include <RequestServer/HttpRequest.h>
|
||||
#include <RequestServer/Protocol.h>
|
||||
#include <RequestServer/Request.h>
|
||||
|
@ -27,7 +27,7 @@ public:
|
|||
HttpProtocol();
|
||||
~HttpProtocol() override = default;
|
||||
|
||||
virtual OwnPtr<Request> start_request(ClientConnection&, const String& method, const URL&, const HashMap<String, String>& headers, ReadonlyBytes body) override;
|
||||
virtual OwnPtr<Request> start_request(ConnectionFromClient&, const String& method, const URL&, const HashMap<String, String>& headers, ReadonlyBytes body) override;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
namespace RequestServer {
|
||||
|
||||
HttpRequest::HttpRequest(ClientConnection& client, NonnullRefPtr<HTTP::Job> job, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
HttpRequest::HttpRequest(ConnectionFromClient& client, NonnullRefPtr<HTTP::Job> job, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
: Request(client, move(output_stream))
|
||||
, m_job(job)
|
||||
{
|
||||
|
@ -25,7 +25,7 @@ HttpRequest::~HttpRequest()
|
|||
m_job->cancel();
|
||||
}
|
||||
|
||||
NonnullOwnPtr<HttpRequest> HttpRequest::create_with_job(Badge<HttpProtocol>&&, ClientConnection& client, NonnullRefPtr<HTTP::Job> job, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
NonnullOwnPtr<HttpRequest> HttpRequest::create_with_job(Badge<HttpProtocol>&&, ConnectionFromClient& client, NonnullRefPtr<HTTP::Job> job, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
{
|
||||
return adopt_own(*new HttpRequest(client, move(job), move(output_stream)));
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ namespace RequestServer {
|
|||
class HttpRequest final : public Request {
|
||||
public:
|
||||
virtual ~HttpRequest() override;
|
||||
static NonnullOwnPtr<HttpRequest> create_with_job(Badge<HttpProtocol>&&, ClientConnection&, NonnullRefPtr<HTTP::Job>, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
static NonnullOwnPtr<HttpRequest> create_with_job(Badge<HttpProtocol>&&, ConnectionFromClient&, NonnullRefPtr<HTTP::Job>, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
|
||||
HTTP::Job& job() { return m_job; }
|
||||
HTTP::Job const& job() const { return m_job; }
|
||||
|
@ -25,7 +25,7 @@ public:
|
|||
virtual URL url() const override { return m_job->url(); }
|
||||
|
||||
private:
|
||||
explicit HttpRequest(ClientConnection&, NonnullRefPtr<HTTP::Job>, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
explicit HttpRequest(ConnectionFromClient&, NonnullRefPtr<HTTP::Job>, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
|
||||
NonnullRefPtr<HTTP::Job> m_job;
|
||||
};
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include <AK/OwnPtr.h>
|
||||
#include <AK/String.h>
|
||||
#include <AK/URL.h>
|
||||
#include <RequestServer/ClientConnection.h>
|
||||
#include <RequestServer/ConnectionFromClient.h>
|
||||
#include <RequestServer/HttpCommon.h>
|
||||
#include <RequestServer/HttpsProtocol.h>
|
||||
#include <RequestServer/Request.h>
|
||||
|
@ -22,7 +22,7 @@ HttpsProtocol::HttpsProtocol()
|
|||
{
|
||||
}
|
||||
|
||||
OwnPtr<Request> HttpsProtocol::start_request(ClientConnection& client, const String& method, const URL& url, const HashMap<String, String>& headers, ReadonlyBytes body)
|
||||
OwnPtr<Request> HttpsProtocol::start_request(ConnectionFromClient& client, const String& method, const URL& url, const HashMap<String, String>& headers, ReadonlyBytes body)
|
||||
{
|
||||
return Detail::start_request(Badge<HttpsProtocol> {}, client, method, url, headers, body, get_pipe_for_request());
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include <AK/String.h>
|
||||
#include <AK/URL.h>
|
||||
#include <LibHTTP/HttpsJob.h>
|
||||
#include <RequestServer/ClientConnection.h>
|
||||
#include <RequestServer/ConnectionFromClient.h>
|
||||
#include <RequestServer/HttpsRequest.h>
|
||||
#include <RequestServer/Protocol.h>
|
||||
#include <RequestServer/Request.h>
|
||||
|
@ -27,7 +27,7 @@ public:
|
|||
HttpsProtocol();
|
||||
~HttpsProtocol() override = default;
|
||||
|
||||
virtual OwnPtr<Request> start_request(ClientConnection&, const String& method, const URL&, const HashMap<String, String>& headers, ReadonlyBytes body) override;
|
||||
virtual OwnPtr<Request> start_request(ConnectionFromClient&, const String& method, const URL&, const HashMap<String, String>& headers, ReadonlyBytes body) override;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
namespace RequestServer {
|
||||
|
||||
HttpsRequest::HttpsRequest(ClientConnection& client, NonnullRefPtr<HTTP::HttpsJob> job, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
HttpsRequest::HttpsRequest(ConnectionFromClient& client, NonnullRefPtr<HTTP::HttpsJob> job, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
: Request(client, move(output_stream))
|
||||
, m_job(job)
|
||||
{
|
||||
|
@ -30,7 +30,7 @@ HttpsRequest::~HttpsRequest()
|
|||
m_job->cancel();
|
||||
}
|
||||
|
||||
NonnullOwnPtr<HttpsRequest> HttpsRequest::create_with_job(Badge<HttpsProtocol>&&, ClientConnection& client, NonnullRefPtr<HTTP::HttpsJob> job, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
NonnullOwnPtr<HttpsRequest> HttpsRequest::create_with_job(Badge<HttpsProtocol>&&, ConnectionFromClient& client, NonnullRefPtr<HTTP::HttpsJob> job, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
{
|
||||
return adopt_own(*new HttpsRequest(client, move(job), move(output_stream)));
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace RequestServer {
|
|||
class HttpsRequest final : public Request {
|
||||
public:
|
||||
virtual ~HttpsRequest() override;
|
||||
static NonnullOwnPtr<HttpsRequest> create_with_job(Badge<HttpsProtocol>&&, ClientConnection&, NonnullRefPtr<HTTP::HttpsJob>, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
static NonnullOwnPtr<HttpsRequest> create_with_job(Badge<HttpsProtocol>&&, ConnectionFromClient&, NonnullRefPtr<HTTP::HttpsJob>, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
|
||||
HTTP::HttpsJob& job() { return m_job; }
|
||||
HTTP::HttpsJob const& job() const { return m_job; }
|
||||
|
@ -24,7 +24,7 @@ public:
|
|||
virtual URL url() const override { return m_job->url(); }
|
||||
|
||||
private:
|
||||
explicit HttpsRequest(ClientConnection&, NonnullRefPtr<HTTP::HttpsJob>, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
explicit HttpsRequest(ConnectionFromClient&, NonnullRefPtr<HTTP::HttpsJob>, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
|
||||
virtual void set_certificate(String certificate, String key) override;
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ public:
|
|||
virtual ~Protocol();
|
||||
|
||||
const String& name() const { return m_name; }
|
||||
virtual OwnPtr<Request> start_request(ClientConnection&, const String& method, const URL&, const HashMap<String, String>& headers, ReadonlyBytes body) = 0;
|
||||
virtual OwnPtr<Request> start_request(ConnectionFromClient&, const String& method, const URL&, const HashMap<String, String>& headers, ReadonlyBytes body) = 0;
|
||||
|
||||
static Protocol* find_by_name(const String&);
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <RequestServer/ClientConnection.h>
|
||||
#include <RequestServer/ConnectionFromClient.h>
|
||||
#include <RequestServer/Request.h>
|
||||
|
||||
namespace RequestServer {
|
||||
|
@ -12,7 +12,7 @@ namespace RequestServer {
|
|||
// FIXME: What about rollover?
|
||||
static i32 s_next_id = 1;
|
||||
|
||||
Request::Request(ClientConnection& client, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
Request::Request(ConnectionFromClient& client, NonnullOwnPtr<Core::Stream::File>&& output_stream)
|
||||
: m_client(client)
|
||||
, m_id(s_next_id++)
|
||||
, m_output_stream(move(output_stream))
|
||||
|
|
|
@ -44,10 +44,10 @@ public:
|
|||
const Core::Stream::File& output_stream() const { return *m_output_stream; }
|
||||
|
||||
protected:
|
||||
explicit Request(ClientConnection&, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
explicit Request(ConnectionFromClient&, NonnullOwnPtr<Core::Stream::File>&&);
|
||||
|
||||
private:
|
||||
ClientConnection& m_client;
|
||||
ConnectionFromClient& m_client;
|
||||
i32 m_id { 0 };
|
||||
int m_request_fd { -1 }; // Passed to client.
|
||||
Optional<u32> m_status_code;
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
#include <LibIPC/SingleServer.h>
|
||||
#include <LibMain/Main.h>
|
||||
#include <LibTLS/Certificate.h>
|
||||
#include <RequestServer/ClientConnection.h>
|
||||
#include <RequestServer/ConnectionFromClient.h>
|
||||
#include <RequestServer/GeminiProtocol.h>
|
||||
#include <RequestServer/HttpProtocol.h>
|
||||
#include <RequestServer/HttpsProtocol.h>
|
||||
|
@ -46,7 +46,7 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
[[maybe_unused]] auto http = make<RequestServer::HttpProtocol>();
|
||||
[[maybe_unused]] auto https = make<RequestServer::HttpsProtocol>();
|
||||
|
||||
auto client = TRY(IPC::take_over_accepted_client_from_system_server<RequestServer::ClientConnection>());
|
||||
auto client = TRY(IPC::take_over_accepted_client_from_system_server<RequestServer::ConnectionFromClient>());
|
||||
|
||||
auto result = event_loop.exec();
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ compile_ipc(SQLServer.ipc SQLServerEndpoint.h)
|
|||
compile_ipc(SQLClient.ipc SQLClientEndpoint.h)
|
||||
|
||||
set(SOURCES
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
DatabaseConnection.cpp
|
||||
main.cpp
|
||||
SQLClientEndpoint.h
|
||||
|
|
|
@ -7,15 +7,15 @@
|
|||
#include <AK/String.h>
|
||||
#include <AK/Vector.h>
|
||||
#include <LibSQL/Result.h>
|
||||
#include <SQLServer/ClientConnection.h>
|
||||
#include <SQLServer/ConnectionFromClient.h>
|
||||
#include <SQLServer/DatabaseConnection.h>
|
||||
#include <SQLServer/SQLStatement.h>
|
||||
|
||||
namespace SQLServer {
|
||||
|
||||
static HashMap<int, RefPtr<ClientConnection>> s_connections;
|
||||
static HashMap<int, RefPtr<ConnectionFromClient>> s_connections;
|
||||
|
||||
RefPtr<ClientConnection> ClientConnection::client_connection_for(int client_id)
|
||||
RefPtr<ConnectionFromClient> ConnectionFromClient::client_connection_for(int client_id)
|
||||
{
|
||||
if (s_connections.contains(client_id))
|
||||
return *s_connections.get(client_id).value();
|
||||
|
@ -23,31 +23,31 @@ RefPtr<ClientConnection> ClientConnection::client_connection_for(int client_id)
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> socket, int client_id)
|
||||
: IPC::ClientConnection<SQLClientEndpoint, SQLServerEndpoint>(*this, move(socket), client_id)
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> socket, int client_id)
|
||||
: IPC::ConnectionFromClient<SQLClientEndpoint, SQLServerEndpoint>(*this, move(socket), client_id)
|
||||
{
|
||||
s_connections.set(client_id, *this);
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
}
|
||||
|
||||
Messages::SQLServer::ConnectResponse ClientConnection::connect(String const& database_name)
|
||||
Messages::SQLServer::ConnectResponse ConnectionFromClient::connect(String const& database_name)
|
||||
{
|
||||
dbgln_if(SQLSERVER_DEBUG, "ClientConnection::connect(database_name: {})", database_name);
|
||||
dbgln_if(SQLSERVER_DEBUG, "ConnectionFromClient::connect(database_name: {})", database_name);
|
||||
auto database_connection = DatabaseConnection::construct(database_name, client_id());
|
||||
return { database_connection->connection_id() };
|
||||
}
|
||||
|
||||
void ClientConnection::disconnect(int connection_id)
|
||||
void ConnectionFromClient::disconnect(int connection_id)
|
||||
{
|
||||
dbgln_if(SQLSERVER_DEBUG, "ClientConnection::disconnect(connection_id: {})", connection_id);
|
||||
dbgln_if(SQLSERVER_DEBUG, "ConnectionFromClient::disconnect(connection_id: {})", connection_id);
|
||||
auto database_connection = DatabaseConnection::connection_for(connection_id);
|
||||
if (database_connection)
|
||||
database_connection->disconnect();
|
||||
|
@ -55,13 +55,13 @@ void ClientConnection::disconnect(int connection_id)
|
|||
dbgln("Database connection has disappeared");
|
||||
}
|
||||
|
||||
Messages::SQLServer::SqlStatementResponse ClientConnection::sql_statement(int connection_id, String const& sql)
|
||||
Messages::SQLServer::SqlStatementResponse ConnectionFromClient::sql_statement(int connection_id, String const& sql)
|
||||
{
|
||||
dbgln_if(SQLSERVER_DEBUG, "ClientConnection::sql_statement(connection_id: {}, sql: '{}')", connection_id, sql);
|
||||
dbgln_if(SQLSERVER_DEBUG, "ConnectionFromClient::sql_statement(connection_id: {}, sql: '{}')", connection_id, sql);
|
||||
auto database_connection = DatabaseConnection::connection_for(connection_id);
|
||||
if (database_connection) {
|
||||
auto statement_id = database_connection->sql_statement(sql);
|
||||
dbgln_if(SQLSERVER_DEBUG, "ClientConnection::sql_statement -> statement_id = {}", statement_id);
|
||||
dbgln_if(SQLSERVER_DEBUG, "ConnectionFromClient::sql_statement -> statement_id = {}", statement_id);
|
||||
return { statement_id };
|
||||
} else {
|
||||
dbgln("Database connection has disappeared");
|
||||
|
@ -69,9 +69,9 @@ Messages::SQLServer::SqlStatementResponse ClientConnection::sql_statement(int co
|
|||
}
|
||||
}
|
||||
|
||||
void ClientConnection::statement_execute(int statement_id)
|
||||
void ConnectionFromClient::statement_execute(int statement_id)
|
||||
{
|
||||
dbgln_if(SQLSERVER_DEBUG, "ClientConnection::statement_execute_query(statement_id: {})", statement_id);
|
||||
dbgln_if(SQLSERVER_DEBUG, "ConnectionFromClient::statement_execute_query(statement_id: {})", statement_id);
|
||||
auto statement = SQLStatement::statement_for(statement_id);
|
||||
if (statement && statement->connection()->client_id() == client_id()) {
|
||||
statement->execute();
|
|
@ -7,25 +7,25 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/HashMap.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
#include <SQLServer/SQLClientEndpoint.h>
|
||||
#include <SQLServer/SQLServerEndpoint.h>
|
||||
|
||||
namespace SQLServer {
|
||||
|
||||
class ClientConnection final
|
||||
: public IPC::ClientConnection<SQLClientEndpoint, SQLServerEndpoint> {
|
||||
C_OBJECT(ClientConnection);
|
||||
class ConnectionFromClient final
|
||||
: public IPC::ConnectionFromClient<SQLClientEndpoint, SQLServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient);
|
||||
|
||||
public:
|
||||
virtual ~ClientConnection() override;
|
||||
virtual ~ConnectionFromClient() override;
|
||||
|
||||
virtual void die() override;
|
||||
|
||||
static RefPtr<ClientConnection> client_connection_for(int client_id);
|
||||
static RefPtr<ConnectionFromClient> client_connection_for(int client_id);
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
|
||||
virtual Messages::SQLServer::ConnectResponse connect(String const&) override;
|
||||
virtual Messages::SQLServer::SqlStatementResponse sql_statement(int, String const&) override;
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
#include <AK/LexicalPath.h>
|
||||
#include <SQLServer/ClientConnection.h>
|
||||
#include <SQLServer/ConnectionFromClient.h>
|
||||
#include <SQLServer/DatabaseConnection.h>
|
||||
#include <SQLServer/SQLStatement.h>
|
||||
|
||||
|
@ -30,7 +30,7 @@ DatabaseConnection::DatabaseConnection(String database_name, int client_id)
|
|||
, m_client_id(client_id)
|
||||
{
|
||||
if (LexicalPath path(m_database_name); (path.title() != m_database_name) || (path.dirname() != ".")) {
|
||||
auto client_connection = ClientConnection::client_connection_for(m_client_id);
|
||||
auto client_connection = ConnectionFromClient::client_connection_for(m_client_id);
|
||||
client_connection->async_connection_error(m_connection_id, (int)SQL::SQLErrorCode::InvalidDatabaseName, m_database_name);
|
||||
return;
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ DatabaseConnection::DatabaseConnection(String database_name, int client_id)
|
|||
s_connections.set(m_connection_id, *this);
|
||||
deferred_invoke([this]() {
|
||||
m_database = SQL::Database::construct(String::formatted("/home/anon/sql/{}.db", m_database_name));
|
||||
auto client_connection = ClientConnection::client_connection_for(m_client_id);
|
||||
auto client_connection = ConnectionFromClient::client_connection_for(m_client_id);
|
||||
if (auto maybe_error = m_database->open(); maybe_error.is_error()) {
|
||||
client_connection->async_connection_error(m_connection_id, (int)SQL::SQLErrorCode::InternalError, maybe_error.error().string_literal());
|
||||
return;
|
||||
|
@ -59,7 +59,7 @@ void DatabaseConnection::disconnect()
|
|||
deferred_invoke([this]() {
|
||||
m_database = nullptr;
|
||||
s_connections.remove(m_connection_id);
|
||||
auto client_connection = ClientConnection::client_connection_for(client_id());
|
||||
auto client_connection = ConnectionFromClient::client_connection_for(client_id());
|
||||
if (client_connection)
|
||||
client_connection->async_disconnected(m_connection_id);
|
||||
else
|
||||
|
@ -70,7 +70,7 @@ void DatabaseConnection::disconnect()
|
|||
int DatabaseConnection::sql_statement(String const& sql)
|
||||
{
|
||||
dbgln_if(SQLSERVER_DEBUG, "DatabaseConnection::sql_statement(connection_id {}, database '{}', sql '{}'", connection_id(), m_database_name, sql);
|
||||
auto client_connection = ClientConnection::client_connection_for(client_id());
|
||||
auto client_connection = ConnectionFromClient::client_connection_for(client_id());
|
||||
if (!client_connection) {
|
||||
warnln("Cannot notify client of database disconnection. Client disconnected");
|
||||
return -1;
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#pragma once
|
||||
|
||||
namespace SQLServer {
|
||||
class ClientConnection;
|
||||
class ConnectionFromClient;
|
||||
class DatabaseConnection;
|
||||
class SQLStatement;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
#include <LibCore/Object.h>
|
||||
#include <LibSQL/AST/Parser.h>
|
||||
#include <SQLServer/ClientConnection.h>
|
||||
#include <SQLServer/ConnectionFromClient.h>
|
||||
#include <SQLServer/DatabaseConnection.h>
|
||||
#include <SQLServer/SQLStatement.h>
|
||||
|
||||
|
@ -37,7 +37,7 @@ void SQLStatement::report_error(SQL::Result result)
|
|||
{
|
||||
dbgln_if(SQLSERVER_DEBUG, "SQLStatement::report_error(statement_id {}, error {}", statement_id(), result.error_string());
|
||||
|
||||
auto client_connection = ClientConnection::client_connection_for(connection()->client_id());
|
||||
auto client_connection = ConnectionFromClient::client_connection_for(connection()->client_id());
|
||||
|
||||
s_statements.remove(statement_id());
|
||||
remove_from_parent();
|
||||
|
@ -54,7 +54,7 @@ void SQLStatement::report_error(SQL::Result result)
|
|||
void SQLStatement::execute()
|
||||
{
|
||||
dbgln_if(SQLSERVER_DEBUG, "SQLStatement::execute(statement_id {}", statement_id());
|
||||
auto client_connection = ClientConnection::client_connection_for(connection()->client_id());
|
||||
auto client_connection = ConnectionFromClient::client_connection_for(connection()->client_id());
|
||||
if (!client_connection) {
|
||||
warnln("Cannot yield next result. Client disconnected");
|
||||
return;
|
||||
|
@ -75,7 +75,7 @@ void SQLStatement::execute()
|
|||
return;
|
||||
}
|
||||
|
||||
auto client_connection = ClientConnection::client_connection_for(connection()->client_id());
|
||||
auto client_connection = ConnectionFromClient::client_connection_for(connection()->client_id());
|
||||
if (!client_connection) {
|
||||
warnln("Cannot return statement execution results. Client disconnected");
|
||||
return;
|
||||
|
@ -122,7 +122,7 @@ bool SQLStatement::should_send_result_rows() const
|
|||
void SQLStatement::next()
|
||||
{
|
||||
VERIFY(!m_result->is_empty());
|
||||
auto client_connection = ClientConnection::client_connection_for(connection()->client_id());
|
||||
auto client_connection = ConnectionFromClient::client_connection_for(connection()->client_id());
|
||||
if (!client_connection) {
|
||||
warnln("Cannot yield next result. Client disconnected");
|
||||
return;
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
#include <LibCore/System.h>
|
||||
#include <LibIPC/MultiServer.h>
|
||||
#include <LibMain/Main.h>
|
||||
#include <SQLServer/ClientConnection.h>
|
||||
#include <SQLServer/ConnectionFromClient.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
|
@ -26,6 +26,6 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
|
||||
Core::EventLoop event_loop;
|
||||
|
||||
auto server = TRY(IPC::MultiServer<SQLServer::ClientConnection>::try_create());
|
||||
auto server = TRY(IPC::MultiServer<SQLServer::ConnectionFromClient>::try_create());
|
||||
return event_loop.exec();
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ compile_ipc(WebContentServer.ipc WebContentServerEndpoint.h)
|
|||
compile_ipc(WebContentClient.ipc WebContentClientEndpoint.h)
|
||||
|
||||
set(SOURCES
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
ConsoleGlobalObject.cpp
|
||||
main.cpp
|
||||
PageHost.cpp
|
||||
|
|
|
@ -25,58 +25,58 @@
|
|||
#include <LibWeb/Layout/InitialContainingBlock.h>
|
||||
#include <LibWeb/Loader/ContentFilter.h>
|
||||
#include <LibWeb/Loader/ResourceLoader.h>
|
||||
#include <WebContent/ClientConnection.h>
|
||||
#include <WebContent/ConnectionFromClient.h>
|
||||
#include <WebContent/PageHost.h>
|
||||
#include <WebContent/WebContentClientEndpoint.h>
|
||||
#include <pthread.h>
|
||||
|
||||
namespace WebContent {
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> socket)
|
||||
: IPC::ClientConnection<WebContentClientEndpoint, WebContentServerEndpoint>(*this, move(socket), 1)
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> socket)
|
||||
: IPC::ConnectionFromClient<WebContentClientEndpoint, WebContentServerEndpoint>(*this, move(socket), 1)
|
||||
, m_page_host(PageHost::create(*this))
|
||||
{
|
||||
m_paint_flush_timer = Core::Timer::create_single_shot(0, [this] { flush_pending_paint_requests(); });
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
Core::EventLoop::current().quit(0);
|
||||
}
|
||||
|
||||
Web::Page& ClientConnection::page()
|
||||
Web::Page& ConnectionFromClient::page()
|
||||
{
|
||||
return m_page_host->page();
|
||||
}
|
||||
|
||||
const Web::Page& ClientConnection::page() const
|
||||
const Web::Page& ConnectionFromClient::page() const
|
||||
{
|
||||
return m_page_host->page();
|
||||
}
|
||||
|
||||
void ClientConnection::update_system_theme(const Core::AnonymousBuffer& theme_buffer)
|
||||
void ConnectionFromClient::update_system_theme(const Core::AnonymousBuffer& theme_buffer)
|
||||
{
|
||||
Gfx::set_system_theme(theme_buffer);
|
||||
auto impl = Gfx::PaletteImpl::create_with_anonymous_buffer(theme_buffer);
|
||||
m_page_host->set_palette_impl(*impl);
|
||||
}
|
||||
|
||||
void ClientConnection::update_system_fonts(String const& default_font_query, String const& fixed_width_font_query)
|
||||
void ConnectionFromClient::update_system_fonts(String const& default_font_query, String const& fixed_width_font_query)
|
||||
{
|
||||
Gfx::FontDatabase::set_default_font_query(default_font_query);
|
||||
Gfx::FontDatabase::set_fixed_width_font_query(fixed_width_font_query);
|
||||
}
|
||||
|
||||
void ClientConnection::update_screen_rects(const Vector<Gfx::IntRect>& rects, u32 main_screen)
|
||||
void ConnectionFromClient::update_screen_rects(const Vector<Gfx::IntRect>& rects, u32 main_screen)
|
||||
{
|
||||
m_page_host->set_screen_rects(rects, main_screen);
|
||||
}
|
||||
|
||||
void ClientConnection::load_url(const URL& url)
|
||||
void ConnectionFromClient::load_url(const URL& url)
|
||||
{
|
||||
dbgln_if(SPAM_DEBUG, "handle: WebContentServer::LoadURL: url={}", url);
|
||||
|
||||
|
@ -91,29 +91,29 @@ void ClientConnection::load_url(const URL& url)
|
|||
page().load(url);
|
||||
}
|
||||
|
||||
void ClientConnection::load_html(const String& html, const URL& url)
|
||||
void ConnectionFromClient::load_html(const String& html, const URL& url)
|
||||
{
|
||||
dbgln_if(SPAM_DEBUG, "handle: WebContentServer::LoadHTML: html={}, url={}", html, url);
|
||||
page().load_html(html, url);
|
||||
}
|
||||
|
||||
void ClientConnection::set_viewport_rect(const Gfx::IntRect& rect)
|
||||
void ConnectionFromClient::set_viewport_rect(const Gfx::IntRect& rect)
|
||||
{
|
||||
dbgln_if(SPAM_DEBUG, "handle: WebContentServer::SetViewportRect: rect={}", rect);
|
||||
m_page_host->set_viewport_rect(rect);
|
||||
}
|
||||
|
||||
void ClientConnection::add_backing_store(i32 backing_store_id, const Gfx::ShareableBitmap& bitmap)
|
||||
void ConnectionFromClient::add_backing_store(i32 backing_store_id, const Gfx::ShareableBitmap& bitmap)
|
||||
{
|
||||
m_backing_stores.set(backing_store_id, *bitmap.bitmap());
|
||||
}
|
||||
|
||||
void ClientConnection::remove_backing_store(i32 backing_store_id)
|
||||
void ConnectionFromClient::remove_backing_store(i32 backing_store_id)
|
||||
{
|
||||
m_backing_stores.remove(backing_store_id);
|
||||
}
|
||||
|
||||
void ClientConnection::paint(const Gfx::IntRect& content_rect, i32 backing_store_id)
|
||||
void ConnectionFromClient::paint(const Gfx::IntRect& content_rect, i32 backing_store_id)
|
||||
{
|
||||
for (auto& pending_paint : m_pending_paint_requests) {
|
||||
if (pending_paint.bitmap_id == backing_store_id) {
|
||||
|
@ -133,7 +133,7 @@ void ClientConnection::paint(const Gfx::IntRect& content_rect, i32 backing_store
|
|||
m_paint_flush_timer->start();
|
||||
}
|
||||
|
||||
void ClientConnection::flush_pending_paint_requests()
|
||||
void ConnectionFromClient::flush_pending_paint_requests()
|
||||
{
|
||||
for (auto& pending_paint : m_pending_paint_requests) {
|
||||
m_page_host->paint(pending_paint.content_rect, *pending_paint.bitmap);
|
||||
|
@ -142,37 +142,37 @@ void ClientConnection::flush_pending_paint_requests()
|
|||
m_pending_paint_requests.clear();
|
||||
}
|
||||
|
||||
void ClientConnection::mouse_down(const Gfx::IntPoint& position, unsigned int button, [[maybe_unused]] unsigned int buttons, unsigned int modifiers)
|
||||
void ConnectionFromClient::mouse_down(const Gfx::IntPoint& position, unsigned int button, [[maybe_unused]] unsigned int buttons, unsigned int modifiers)
|
||||
{
|
||||
page().handle_mousedown(position, button, modifiers);
|
||||
}
|
||||
|
||||
void ClientConnection::mouse_move(const Gfx::IntPoint& position, [[maybe_unused]] unsigned int button, unsigned int buttons, unsigned int modifiers)
|
||||
void ConnectionFromClient::mouse_move(const Gfx::IntPoint& position, [[maybe_unused]] unsigned int button, unsigned int buttons, unsigned int modifiers)
|
||||
{
|
||||
page().handle_mousemove(position, buttons, modifiers);
|
||||
}
|
||||
|
||||
void ClientConnection::mouse_up(const Gfx::IntPoint& position, unsigned int button, [[maybe_unused]] unsigned int buttons, unsigned int modifiers)
|
||||
void ConnectionFromClient::mouse_up(const Gfx::IntPoint& position, unsigned int button, [[maybe_unused]] unsigned int buttons, unsigned int modifiers)
|
||||
{
|
||||
page().handle_mouseup(position, button, modifiers);
|
||||
}
|
||||
|
||||
void ClientConnection::mouse_wheel(const Gfx::IntPoint& position, unsigned int button, [[maybe_unused]] unsigned int buttons, unsigned int modifiers, i32 wheel_delta_x, i32 wheel_delta_y)
|
||||
void ConnectionFromClient::mouse_wheel(const Gfx::IntPoint& position, unsigned int button, [[maybe_unused]] unsigned int buttons, unsigned int modifiers, i32 wheel_delta_x, i32 wheel_delta_y)
|
||||
{
|
||||
page().handle_mousewheel(position, button, modifiers, wheel_delta_x, wheel_delta_y);
|
||||
}
|
||||
|
||||
void ClientConnection::key_down(i32 key, unsigned int modifiers, u32 code_point)
|
||||
void ConnectionFromClient::key_down(i32 key, unsigned int modifiers, u32 code_point)
|
||||
{
|
||||
page().handle_keydown((KeyCode)key, modifiers, code_point);
|
||||
}
|
||||
|
||||
void ClientConnection::key_up(i32 key, unsigned int modifiers, u32 code_point)
|
||||
void ConnectionFromClient::key_up(i32 key, unsigned int modifiers, u32 code_point)
|
||||
{
|
||||
page().handle_keyup((KeyCode)key, modifiers, code_point);
|
||||
}
|
||||
|
||||
void ClientConnection::debug_request(const String& request, const String& argument)
|
||||
void ConnectionFromClient::debug_request(const String& request, const String& argument)
|
||||
{
|
||||
if (request == "dump-dom-tree") {
|
||||
if (auto* doc = page().top_level_browsing_context().active_document())
|
||||
|
@ -231,21 +231,21 @@ void ClientConnection::debug_request(const String& request, const String& argume
|
|||
}
|
||||
}
|
||||
|
||||
void ClientConnection::get_source()
|
||||
void ConnectionFromClient::get_source()
|
||||
{
|
||||
if (auto* doc = page().top_level_browsing_context().active_document()) {
|
||||
async_did_get_source(doc->url(), doc->source());
|
||||
}
|
||||
}
|
||||
|
||||
void ClientConnection::inspect_dom_tree()
|
||||
void ConnectionFromClient::inspect_dom_tree()
|
||||
{
|
||||
if (auto* doc = page().top_level_browsing_context().active_document()) {
|
||||
async_did_get_dom_tree(doc->dump_dom_tree_as_json());
|
||||
}
|
||||
}
|
||||
|
||||
Messages::WebContentServer::InspectDomNodeResponse ClientConnection::inspect_dom_node(i32 node_id)
|
||||
Messages::WebContentServer::InspectDomNodeResponse ConnectionFromClient::inspect_dom_node(i32 node_id)
|
||||
{
|
||||
auto& top_context = page().top_level_browsing_context();
|
||||
|
||||
|
@ -311,7 +311,7 @@ Messages::WebContentServer::InspectDomNodeResponse ClientConnection::inspect_dom
|
|||
return { false, "", "", "" };
|
||||
}
|
||||
|
||||
Messages::WebContentServer::GetHoveredNodeIdResponse ClientConnection::get_hovered_node_id()
|
||||
Messages::WebContentServer::GetHoveredNodeIdResponse ConnectionFromClient::get_hovered_node_id()
|
||||
{
|
||||
if (auto* document = page().top_level_browsing_context().active_document()) {
|
||||
auto hovered_node = document->hovered_node();
|
||||
|
@ -321,7 +321,7 @@ Messages::WebContentServer::GetHoveredNodeIdResponse ClientConnection::get_hover
|
|||
return (i32)0;
|
||||
}
|
||||
|
||||
void ClientConnection::initialize_js_console(Badge<PageHost>)
|
||||
void ConnectionFromClient::initialize_js_console(Badge<PageHost>)
|
||||
{
|
||||
auto* document = page().top_level_browsing_context().active_document();
|
||||
auto interpreter = document->interpreter().make_weak_ptr();
|
||||
|
@ -333,13 +333,13 @@ void ClientConnection::initialize_js_console(Badge<PageHost>)
|
|||
interpreter->global_object().console().set_client(*m_console_client.ptr());
|
||||
}
|
||||
|
||||
void ClientConnection::js_console_input(const String& js_source)
|
||||
void ConnectionFromClient::js_console_input(const String& js_source)
|
||||
{
|
||||
if (m_console_client)
|
||||
m_console_client->handle_input(js_source);
|
||||
}
|
||||
|
||||
void ClientConnection::run_javascript(String const& js_source)
|
||||
void ConnectionFromClient::run_javascript(String const& js_source)
|
||||
{
|
||||
auto* active_document = page().top_level_browsing_context().active_document();
|
||||
|
||||
|
@ -366,24 +366,24 @@ void ClientConnection::run_javascript(String const& js_source)
|
|||
dbgln("Exception :(");
|
||||
}
|
||||
|
||||
void ClientConnection::js_console_request_messages(i32 start_index)
|
||||
void ConnectionFromClient::js_console_request_messages(i32 start_index)
|
||||
{
|
||||
if (m_console_client)
|
||||
m_console_client->send_messages(start_index);
|
||||
}
|
||||
|
||||
Messages::WebContentServer::GetSelectedTextResponse ClientConnection::get_selected_text()
|
||||
Messages::WebContentServer::GetSelectedTextResponse ConnectionFromClient::get_selected_text()
|
||||
{
|
||||
return page().focused_context().selected_text();
|
||||
}
|
||||
|
||||
void ClientConnection::select_all()
|
||||
void ConnectionFromClient::select_all()
|
||||
{
|
||||
page().focused_context().select_all();
|
||||
page().client().page_did_change_selection();
|
||||
}
|
||||
|
||||
Messages::WebContentServer::DumpLayoutTreeResponse ClientConnection::dump_layout_tree()
|
||||
Messages::WebContentServer::DumpLayoutTreeResponse ConnectionFromClient::dump_layout_tree()
|
||||
{
|
||||
auto* document = page().top_level_browsing_context().active_document();
|
||||
if (!document)
|
||||
|
@ -396,18 +396,18 @@ Messages::WebContentServer::DumpLayoutTreeResponse ClientConnection::dump_layout
|
|||
return builder.to_string();
|
||||
}
|
||||
|
||||
void ClientConnection::set_content_filters(Vector<String> const& filters)
|
||||
void ConnectionFromClient::set_content_filters(Vector<String> const& filters)
|
||||
{
|
||||
for (auto& filter : filters)
|
||||
Web::ContentFilter::the().add_pattern(filter);
|
||||
}
|
||||
|
||||
void ClientConnection::set_preferred_color_scheme(Web::CSS::PreferredColorScheme const& color_scheme)
|
||||
void ConnectionFromClient::set_preferred_color_scheme(Web::CSS::PreferredColorScheme const& color_scheme)
|
||||
{
|
||||
m_page_host->set_preferred_color_scheme(color_scheme);
|
||||
}
|
||||
|
||||
void ClientConnection::set_has_focus(bool has_focus)
|
||||
void ConnectionFromClient::set_has_focus(bool has_focus)
|
||||
{
|
||||
m_page_host->set_has_focus(has_focus);
|
||||
}
|
|
@ -7,7 +7,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/HashMap.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
#include <LibJS/Forward.h>
|
||||
#include <LibJS/Heap/Handle.h>
|
||||
#include <LibWeb/CSS/PreferredColorScheme.h>
|
||||
|
@ -20,19 +20,19 @@
|
|||
|
||||
namespace WebContent {
|
||||
|
||||
class ClientConnection final
|
||||
: public IPC::ClientConnection<WebContentClientEndpoint, WebContentServerEndpoint> {
|
||||
C_OBJECT(ClientConnection);
|
||||
class ConnectionFromClient final
|
||||
: public IPC::ConnectionFromClient<WebContentClientEndpoint, WebContentServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient);
|
||||
|
||||
public:
|
||||
~ClientConnection() override;
|
||||
~ConnectionFromClient() override;
|
||||
|
||||
virtual void die() override;
|
||||
|
||||
void initialize_js_console(Badge<PageHost>);
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>);
|
||||
|
||||
Web::Page& page();
|
||||
const Web::Page& page() const;
|
|
@ -7,7 +7,7 @@ Server Client
|
|||
WebContent GUI process (OutOfProcessWebView embedder)
|
||||
|
||||
OutOfProcessWebView (this is a GUI::Widget)
|
||||
WebContent::ClientConnection <---> WebContentClient
|
||||
WebContent::ConnectionFromClient <---> WebContentClient
|
||||
WebContent::PageHost (Web::PageClient)
|
||||
Web::Page
|
||||
Web::Frame
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
namespace WebContent {
|
||||
|
||||
class ClientConnection;
|
||||
class ConnectionFromClient;
|
||||
class ConsoleGlobalObject;
|
||||
class PageHost;
|
||||
class WebContentConsoleClient;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "PageHost.h"
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include <LibGfx/Painter.h>
|
||||
#include <LibGfx/ShareableBitmap.h>
|
||||
#include <LibGfx/SystemTheme.h>
|
||||
|
@ -16,7 +16,7 @@
|
|||
|
||||
namespace WebContent {
|
||||
|
||||
PageHost::PageHost(ClientConnection& client)
|
||||
PageHost::PageHost(ConnectionFromClient& client)
|
||||
: m_client(client)
|
||||
, m_page(make<Web::Page>(*this))
|
||||
{
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
|
||||
namespace WebContent {
|
||||
|
||||
class ClientConnection;
|
||||
class ConnectionFromClient;
|
||||
|
||||
class PageHost final : public Web::PageClient {
|
||||
AK_MAKE_NONCOPYABLE(PageHost);
|
||||
AK_MAKE_NONMOVABLE(PageHost);
|
||||
|
||||
public:
|
||||
static NonnullOwnPtr<PageHost> create(ClientConnection& client) { return adopt_own(*new PageHost(client)); }
|
||||
static NonnullOwnPtr<PageHost> create(ConnectionFromClient& client) { return adopt_own(*new PageHost(client)); }
|
||||
virtual ~PageHost();
|
||||
|
||||
Web::Page& page() { return *m_page; }
|
||||
|
@ -65,12 +65,12 @@ private:
|
|||
virtual String page_did_request_cookie(const URL&, Web::Cookie::Source) override;
|
||||
virtual void page_did_set_cookie(const URL&, const Web::Cookie::ParsedCookie&, Web::Cookie::Source) override;
|
||||
|
||||
explicit PageHost(ClientConnection&);
|
||||
explicit PageHost(ConnectionFromClient&);
|
||||
|
||||
Web::Layout::InitialContainingBlock* layout_root();
|
||||
void setup_palette();
|
||||
|
||||
ClientConnection& m_client;
|
||||
ConnectionFromClient& m_client;
|
||||
NonnullOwnPtr<Web::Page> m_page;
|
||||
RefPtr<Gfx::PaletteImpl> m_palette_impl;
|
||||
Gfx::IntRect m_screen_rect;
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
namespace WebContent {
|
||||
|
||||
WebContentConsoleClient::WebContentConsoleClient(JS::Console& console, WeakPtr<JS::Interpreter> interpreter, ClientConnection& client)
|
||||
WebContentConsoleClient::WebContentConsoleClient(JS::Console& console, WeakPtr<JS::Interpreter> interpreter, ConnectionFromClient& client)
|
||||
: ConsoleClient(console)
|
||||
, m_client(client)
|
||||
, m_interpreter(interpreter)
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include <LibJS/Console.h>
|
||||
#include <LibJS/Forward.h>
|
||||
#include <LibWeb/Forward.h>
|
||||
|
@ -18,7 +18,7 @@ namespace WebContent {
|
|||
|
||||
class WebContentConsoleClient final : public JS::ConsoleClient {
|
||||
public:
|
||||
WebContentConsoleClient(JS::Console&, WeakPtr<JS::Interpreter>, ClientConnection&);
|
||||
WebContentConsoleClient(JS::Console&, WeakPtr<JS::Interpreter>, ConnectionFromClient&);
|
||||
|
||||
void handle_input(String const& js_source);
|
||||
void send_messages(i32 start_index);
|
||||
|
@ -27,7 +27,7 @@ private:
|
|||
virtual void clear() override;
|
||||
virtual JS::ThrowCompletionOr<JS::Value> printer(JS::Console::LogLevel log_level, PrinterArguments) override;
|
||||
|
||||
ClientConnection& m_client;
|
||||
ConnectionFromClient& m_client;
|
||||
WeakPtr<JS::Interpreter> m_interpreter;
|
||||
JS::Handle<ConsoleGlobalObject> m_console_global_object;
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include <LibCore/System.h>
|
||||
#include <LibIPC/SingleServer.h>
|
||||
#include <LibMain/Main.h>
|
||||
#include <WebContent/ClientConnection.h>
|
||||
#include <WebContent/ConnectionFromClient.h>
|
||||
|
||||
ErrorOr<int> serenity_main(Main::Arguments)
|
||||
{
|
||||
|
@ -22,6 +22,6 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
TRY(Core::System::unveil("/tmp/portal/websocket", "rw"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
auto client = TRY(IPC::take_over_accepted_client_from_system_server<WebContent::ClientConnection>());
|
||||
auto client = TRY(IPC::take_over_accepted_client_from_system_server<WebContent::ConnectionFromClient>());
|
||||
return event_loop.exec();
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ compile_ipc(WebSocketServer.ipc WebSocketServerEndpoint.h)
|
|||
compile_ipc(WebSocketClient.ipc WebSocketClientEndpoint.h)
|
||||
|
||||
set(SOURCES
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
main.cpp
|
||||
WebSocketClientEndpoint.h
|
||||
WebSocketServerEndpoint.h
|
||||
|
|
|
@ -6,31 +6,31 @@
|
|||
|
||||
#include <LibWebSocket/ConnectionInfo.h>
|
||||
#include <LibWebSocket/Message.h>
|
||||
#include <WebSocket/ClientConnection.h>
|
||||
#include <WebSocket/ConnectionFromClient.h>
|
||||
#include <WebSocket/WebSocketClientEndpoint.h>
|
||||
|
||||
namespace WebSocket {
|
||||
|
||||
static HashMap<int, RefPtr<ClientConnection>> s_connections;
|
||||
static HashMap<int, RefPtr<ConnectionFromClient>> s_connections;
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> socket)
|
||||
: IPC::ClientConnection<WebSocketClientEndpoint, WebSocketServerEndpoint>(*this, move(socket), 1)
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> socket)
|
||||
: IPC::ConnectionFromClient<WebSocketClientEndpoint, WebSocketServerEndpoint>(*this, move(socket), 1)
|
||||
{
|
||||
s_connections.set(1, *this);
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
s_connections.remove(client_id());
|
||||
if (s_connections.is_empty())
|
||||
Core::EventLoop::current().quit(0);
|
||||
}
|
||||
|
||||
Messages::WebSocketServer::ConnectResponse ClientConnection::connect(URL const& url, String const& origin,
|
||||
Messages::WebSocketServer::ConnectResponse ConnectionFromClient::connect(URL const& url, String const& origin,
|
||||
Vector<String> const& protocols, Vector<String> const& extensions, IPC::Dictionary const& additional_request_headers)
|
||||
{
|
||||
if (!url.is_valid()) {
|
||||
|
@ -70,7 +70,7 @@ Messages::WebSocketServer::ConnectResponse ClientConnection::connect(URL const&
|
|||
return id;
|
||||
}
|
||||
|
||||
Messages::WebSocketServer::ReadyStateResponse ClientConnection::ready_state(i32 connection_id)
|
||||
Messages::WebSocketServer::ReadyStateResponse ConnectionFromClient::ready_state(i32 connection_id)
|
||||
{
|
||||
RefPtr<WebSocket> connection = m_connections.get(connection_id).value_or({});
|
||||
if (connection) {
|
||||
|
@ -79,7 +79,7 @@ Messages::WebSocketServer::ReadyStateResponse ClientConnection::ready_state(i32
|
|||
return (u32)ReadyState::Closed;
|
||||
}
|
||||
|
||||
void ClientConnection::send(i32 connection_id, bool is_text, ByteBuffer const& data)
|
||||
void ConnectionFromClient::send(i32 connection_id, bool is_text, ByteBuffer const& data)
|
||||
{
|
||||
RefPtr<WebSocket> connection = m_connections.get(connection_id).value_or({});
|
||||
if (connection && connection->ready_state() == ReadyState::Open) {
|
||||
|
@ -88,14 +88,14 @@ void ClientConnection::send(i32 connection_id, bool is_text, ByteBuffer const& d
|
|||
}
|
||||
}
|
||||
|
||||
void ClientConnection::close(i32 connection_id, u16 code, String const& reason)
|
||||
void ConnectionFromClient::close(i32 connection_id, u16 code, String const& reason)
|
||||
{
|
||||
RefPtr<WebSocket> connection = m_connections.get(connection_id).value_or({});
|
||||
if (connection && connection->ready_state() == ReadyState::Open)
|
||||
connection->close(code, reason);
|
||||
}
|
||||
|
||||
Messages::WebSocketServer::SetCertificateResponse ClientConnection::set_certificate(i32 connection_id,
|
||||
Messages::WebSocketServer::SetCertificateResponse ConnectionFromClient::set_certificate(i32 connection_id,
|
||||
[[maybe_unused]] String const& certificate, [[maybe_unused]] String const& key)
|
||||
{
|
||||
RefPtr<WebSocket> connection = m_connections.get(connection_id).value_or({});
|
||||
|
@ -108,22 +108,22 @@ Messages::WebSocketServer::SetCertificateResponse ClientConnection::set_certific
|
|||
return success;
|
||||
}
|
||||
|
||||
void ClientConnection::did_connect(i32 connection_id)
|
||||
void ConnectionFromClient::did_connect(i32 connection_id)
|
||||
{
|
||||
async_connected(connection_id);
|
||||
}
|
||||
|
||||
void ClientConnection::did_receive_message(i32 connection_id, Message message)
|
||||
void ConnectionFromClient::did_receive_message(i32 connection_id, Message message)
|
||||
{
|
||||
async_received(connection_id, message.is_text(), message.data());
|
||||
}
|
||||
|
||||
void ClientConnection::did_error(i32 connection_id, i32 message)
|
||||
void ConnectionFromClient::did_error(i32 connection_id, i32 message)
|
||||
{
|
||||
async_errored(connection_id, message);
|
||||
}
|
||||
|
||||
void ClientConnection::did_close(i32 connection_id, u16 code, String reason, bool was_clean)
|
||||
void ConnectionFromClient::did_close(i32 connection_id, u16 code, String reason, bool was_clean)
|
||||
{
|
||||
async_closed(connection_id, code, reason, was_clean);
|
||||
deferred_invoke([this, connection_id] {
|
||||
|
@ -131,7 +131,7 @@ void ClientConnection::did_close(i32 connection_id, u16 code, String reason, boo
|
|||
});
|
||||
}
|
||||
|
||||
void ClientConnection::did_request_certificates(i32 connection_id)
|
||||
void ConnectionFromClient::did_request_certificates(i32 connection_id)
|
||||
{
|
||||
async_certificate_requested(connection_id);
|
||||
}
|
|
@ -7,24 +7,24 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/HashMap.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
#include <LibWebSocket/WebSocket.h>
|
||||
#include <WebSocket/WebSocketClientEndpoint.h>
|
||||
#include <WebSocket/WebSocketServerEndpoint.h>
|
||||
|
||||
namespace WebSocket {
|
||||
|
||||
class ClientConnection final
|
||||
: public IPC::ClientConnection<WebSocketClientEndpoint, WebSocketServerEndpoint> {
|
||||
C_OBJECT(ClientConnection);
|
||||
class ConnectionFromClient final
|
||||
: public IPC::ConnectionFromClient<WebSocketClientEndpoint, WebSocketServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient);
|
||||
|
||||
public:
|
||||
~ClientConnection() override;
|
||||
~ConnectionFromClient() override;
|
||||
|
||||
virtual void die() override;
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>);
|
||||
|
||||
virtual Messages::WebSocketServer::ConnectResponse connect(URL const&, String const&, Vector<String> const&, Vector<String> const&, IPC::Dictionary const&) override;
|
||||
virtual Messages::WebSocketServer::ReadyStateResponse ready_state(i32) override;
|
|
@ -10,7 +10,7 @@
|
|||
#include <LibIPC/SingleServer.h>
|
||||
#include <LibMain/Main.h>
|
||||
#include <LibTLS/Certificate.h>
|
||||
#include <WebSocket/ClientConnection.h>
|
||||
#include <WebSocket/ConnectionFromClient.h>
|
||||
|
||||
ErrorOr<int> serenity_main(Main::Arguments)
|
||||
{
|
||||
|
@ -25,7 +25,7 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
TRY(Core::System::unveil("/etc/timezone", "r"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
auto client = TRY(IPC::take_over_accepted_client_from_system_server<WebSocket::ClientConnection>());
|
||||
auto client = TRY(IPC::take_over_accepted_client_from_system_server<WebSocket::ConnectionFromClient>());
|
||||
|
||||
return event_loop.exec();
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ set(SOURCES
|
|||
Animation.cpp
|
||||
AppletManager.cpp
|
||||
Button.cpp
|
||||
ClientConnection.cpp
|
||||
ConnectionFromClient.cpp
|
||||
Compositor.cpp
|
||||
Cursor.cpp
|
||||
EventLoop.cpp
|
||||
|
@ -35,7 +35,7 @@ set(SOURCES
|
|||
WindowClientEndpoint.h
|
||||
WindowManagerServerEndpoint.h
|
||||
WindowManagerClientEndpoint.h
|
||||
WMClientConnection.cpp
|
||||
WMConnectionFromClient.cpp
|
||||
KeymapSwitcher.cpp
|
||||
)
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
#include "Compositor.h"
|
||||
#include "Animation.h"
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include "Event.h"
|
||||
#include "EventLoop.h"
|
||||
#include "MultiScaleBitmaps.h"
|
||||
|
@ -66,19 +66,19 @@ Compositor::Compositor()
|
|||
init_bitmaps();
|
||||
}
|
||||
|
||||
const Gfx::Bitmap* Compositor::cursor_bitmap_for_screenshot(Badge<ClientConnection>, Screen& screen) const
|
||||
const Gfx::Bitmap* Compositor::cursor_bitmap_for_screenshot(Badge<ConnectionFromClient>, Screen& screen) const
|
||||
{
|
||||
if (!m_current_cursor)
|
||||
return nullptr;
|
||||
return &m_current_cursor->bitmap(screen.scale_factor());
|
||||
}
|
||||
|
||||
const Gfx::Bitmap& Compositor::front_bitmap_for_screenshot(Badge<ClientConnection>, Screen& screen) const
|
||||
const Gfx::Bitmap& Compositor::front_bitmap_for_screenshot(Badge<ConnectionFromClient>, Screen& screen) const
|
||||
{
|
||||
return *screen.compositor_screen_data().m_front_bitmap;
|
||||
}
|
||||
|
||||
Gfx::Color Compositor::color_at_position(Badge<ClientConnection>, Screen& screen, Gfx::IntPoint const& position) const
|
||||
Gfx::Color Compositor::color_at_position(Badge<ConnectionFromClient>, Screen& screen, Gfx::IntPoint const& position) const
|
||||
{
|
||||
return screen.compositor_screen_data().m_front_bitmap->get_pixel(position);
|
||||
}
|
||||
|
@ -977,19 +977,19 @@ void Compositor::update_fonts()
|
|||
|
||||
void Compositor::notify_display_links()
|
||||
{
|
||||
ClientConnection::for_each_client([](auto& client) {
|
||||
ConnectionFromClient::for_each_client([](auto& client) {
|
||||
client.notify_display_link({});
|
||||
});
|
||||
}
|
||||
|
||||
void Compositor::increment_display_link_count(Badge<ClientConnection>)
|
||||
void Compositor::increment_display_link_count(Badge<ConnectionFromClient>)
|
||||
{
|
||||
++m_display_link_count;
|
||||
if (m_display_link_count == 1)
|
||||
m_display_link_notify_timer->start();
|
||||
}
|
||||
|
||||
void Compositor::decrement_display_link_count(Badge<ClientConnection>)
|
||||
void Compositor::decrement_display_link_count(Badge<ConnectionFromClient>)
|
||||
{
|
||||
VERIFY(m_display_link_count);
|
||||
--m_display_link_count;
|
||||
|
@ -1007,7 +1007,7 @@ void Compositor::invalidate_current_screen_number_rects()
|
|||
});
|
||||
}
|
||||
|
||||
void Compositor::increment_show_screen_number(Badge<ClientConnection>)
|
||||
void Compositor::increment_show_screen_number(Badge<ConnectionFromClient>)
|
||||
{
|
||||
if (m_show_screen_number_count++ == 0) {
|
||||
Screen::for_each([&](auto& screen) {
|
||||
|
@ -1019,7 +1019,7 @@ void Compositor::increment_show_screen_number(Badge<ClientConnection>)
|
|||
});
|
||||
}
|
||||
}
|
||||
void Compositor::decrement_show_screen_number(Badge<ClientConnection>)
|
||||
void Compositor::decrement_show_screen_number(Badge<ConnectionFromClient>)
|
||||
{
|
||||
if (--m_show_screen_number_count == 0) {
|
||||
invalidate_current_screen_number_rects();
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
namespace WindowServer {
|
||||
|
||||
class Animation;
|
||||
class ClientConnection;
|
||||
class ConnectionFromClient;
|
||||
class Compositor;
|
||||
class Cursor;
|
||||
class MultiScaleBitmaps;
|
||||
|
@ -113,11 +113,11 @@ public:
|
|||
const Cursor* current_cursor() const { return m_current_cursor; }
|
||||
void current_cursor_was_reloaded(const Cursor* new_cursor) { m_current_cursor = new_cursor; }
|
||||
|
||||
void increment_display_link_count(Badge<ClientConnection>);
|
||||
void decrement_display_link_count(Badge<ClientConnection>);
|
||||
void increment_display_link_count(Badge<ConnectionFromClient>);
|
||||
void decrement_display_link_count(Badge<ConnectionFromClient>);
|
||||
|
||||
void increment_show_screen_number(Badge<ClientConnection>);
|
||||
void decrement_show_screen_number(Badge<ClientConnection>);
|
||||
void increment_show_screen_number(Badge<ConnectionFromClient>);
|
||||
void decrement_show_screen_number(Badge<ConnectionFromClient>);
|
||||
bool showing_screen_numbers() const { return m_show_screen_number_count > 0; }
|
||||
|
||||
void invalidate_after_theme_or_font_change()
|
||||
|
@ -174,9 +174,9 @@ public:
|
|||
|
||||
void did_construct_window_manager(Badge<WindowManager>);
|
||||
|
||||
const Gfx::Bitmap* cursor_bitmap_for_screenshot(Badge<ClientConnection>, Screen&) const;
|
||||
const Gfx::Bitmap& front_bitmap_for_screenshot(Badge<ClientConnection>, Screen&) const;
|
||||
Gfx::Color color_at_position(Badge<ClientConnection>, Screen&, Gfx::IntPoint const&) const;
|
||||
const Gfx::Bitmap* cursor_bitmap_for_screenshot(Badge<ConnectionFromClient>, Screen&) const;
|
||||
const Gfx::Bitmap& front_bitmap_for_screenshot(Badge<ConnectionFromClient>, Screen&) const;
|
||||
Gfx::Color color_at_position(Badge<ConnectionFromClient>, Screen&, Gfx::IntPoint const&) const;
|
||||
|
||||
void register_animation(Badge<Animation>, Animation&);
|
||||
void unregister_animation(Badge<Animation>, Animation&);
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
#include <LibGfx/StandardCursor.h>
|
||||
#include <LibGfx/SystemTheme.h>
|
||||
#include <WindowServer/AppletManager.h>
|
||||
#include <WindowServer/ClientConnection.h>
|
||||
#include <WindowServer/Compositor.h>
|
||||
#include <WindowServer/ConnectionFromClient.h>
|
||||
#include <WindowServer/Menu.h>
|
||||
#include <WindowServer/MenuItem.h>
|
||||
#include <WindowServer/Screen.h>
|
||||
|
@ -24,9 +24,9 @@
|
|||
|
||||
namespace WindowServer {
|
||||
|
||||
HashMap<int, NonnullRefPtr<ClientConnection>>* s_connections;
|
||||
HashMap<int, NonnullRefPtr<ConnectionFromClient>>* s_connections;
|
||||
|
||||
void ClientConnection::for_each_client(Function<void(ClientConnection&)> callback)
|
||||
void ConnectionFromClient::for_each_client(Function<void(ConnectionFromClient&)> callback)
|
||||
{
|
||||
if (!s_connections)
|
||||
return;
|
||||
|
@ -35,7 +35,7 @@ void ClientConnection::for_each_client(Function<void(ClientConnection&)> callbac
|
|||
}
|
||||
}
|
||||
|
||||
ClientConnection* ClientConnection::from_client_id(int client_id)
|
||||
ConnectionFromClient* ConnectionFromClient::from_client_id(int client_id)
|
||||
{
|
||||
if (!s_connections)
|
||||
return nullptr;
|
||||
|
@ -45,18 +45,18 @@ ClientConnection* ClientConnection::from_client_id(int client_id)
|
|||
return (*it).value.ptr();
|
||||
}
|
||||
|
||||
ClientConnection::ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id)
|
||||
: IPC::ClientConnection<WindowClientEndpoint, WindowServerEndpoint>(*this, move(client_socket), client_id)
|
||||
ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id)
|
||||
: IPC::ConnectionFromClient<WindowClientEndpoint, WindowServerEndpoint>(*this, move(client_socket), client_id)
|
||||
{
|
||||
if (!s_connections)
|
||||
s_connections = new HashMap<int, NonnullRefPtr<ClientConnection>>;
|
||||
s_connections = new HashMap<int, NonnullRefPtr<ConnectionFromClient>>;
|
||||
s_connections->set(client_id, *this);
|
||||
|
||||
auto& wm = WindowManager::the();
|
||||
async_fast_greet(Screen::rects(), Screen::main().index(), wm.window_stack_rows(), wm.window_stack_columns(), Gfx::current_system_theme_buffer(), Gfx::FontDatabase::default_font_query(), Gfx::FontDatabase::fixed_width_font_query(), client_id);
|
||||
}
|
||||
|
||||
ClientConnection::~ClientConnection()
|
||||
ConnectionFromClient::~ConnectionFromClient()
|
||||
{
|
||||
auto& wm = WindowManager::the();
|
||||
if (wm.dnd_client() == this)
|
||||
|
@ -77,26 +77,26 @@ ClientConnection::~ClientConnection()
|
|||
Compositor::the().decrement_show_screen_number({});
|
||||
}
|
||||
|
||||
void ClientConnection::die()
|
||||
void ConnectionFromClient::die()
|
||||
{
|
||||
deferred_invoke([this] {
|
||||
s_connections->remove(client_id());
|
||||
});
|
||||
}
|
||||
|
||||
void ClientConnection::notify_about_new_screen_rects()
|
||||
void ConnectionFromClient::notify_about_new_screen_rects()
|
||||
{
|
||||
auto& wm = WindowManager::the();
|
||||
async_screen_rects_changed(Screen::rects(), Screen::main().index(), wm.window_stack_rows(), wm.window_stack_columns());
|
||||
}
|
||||
|
||||
void ClientConnection::create_menu(i32 menu_id, String const& menu_title)
|
||||
void ConnectionFromClient::create_menu(i32 menu_id, String const& menu_title)
|
||||
{
|
||||
auto menu = Menu::construct(this, menu_id, menu_title);
|
||||
m_menus.set(menu_id, move(menu));
|
||||
}
|
||||
|
||||
void ClientConnection::destroy_menu(i32 menu_id)
|
||||
void ConnectionFromClient::destroy_menu(i32 menu_id)
|
||||
{
|
||||
auto it = m_menus.find(menu_id);
|
||||
if (it == m_menus.end()) {
|
||||
|
@ -109,7 +109,7 @@ void ClientConnection::destroy_menu(i32 menu_id)
|
|||
remove_child(menu);
|
||||
}
|
||||
|
||||
void ClientConnection::add_menu(i32 window_id, i32 menu_id)
|
||||
void ConnectionFromClient::add_menu(i32 window_id, i32 menu_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
auto jt = m_menus.find(menu_id);
|
||||
|
@ -126,7 +126,7 @@ void ClientConnection::add_menu(i32 window_id, i32 menu_id)
|
|||
window.add_menu(menu);
|
||||
}
|
||||
|
||||
void ClientConnection::add_menu_item(i32 menu_id, i32 identifier, i32 submenu_id,
|
||||
void ConnectionFromClient::add_menu_item(i32 menu_id, i32 identifier, i32 submenu_id,
|
||||
String const& text, bool enabled, bool checkable, bool checked, bool is_default,
|
||||
String const& shortcut, Gfx::ShareableBitmap const& icon, bool exclusive)
|
||||
{
|
||||
|
@ -145,7 +145,7 @@ void ClientConnection::add_menu_item(i32 menu_id, i32 identifier, i32 submenu_id
|
|||
menu.add_item(move(menu_item));
|
||||
}
|
||||
|
||||
void ClientConnection::popup_menu(i32 menu_id, Gfx::IntPoint const& screen_position)
|
||||
void ConnectionFromClient::popup_menu(i32 menu_id, Gfx::IntPoint const& screen_position)
|
||||
{
|
||||
auto position = screen_position;
|
||||
auto it = m_menus.find(menu_id);
|
||||
|
@ -157,7 +157,7 @@ void ClientConnection::popup_menu(i32 menu_id, Gfx::IntPoint const& screen_posit
|
|||
menu.popup(position);
|
||||
}
|
||||
|
||||
void ClientConnection::dismiss_menu(i32 menu_id)
|
||||
void ConnectionFromClient::dismiss_menu(i32 menu_id)
|
||||
{
|
||||
auto it = m_menus.find(menu_id);
|
||||
if (it == m_menus.end()) {
|
||||
|
@ -168,7 +168,7 @@ void ClientConnection::dismiss_menu(i32 menu_id)
|
|||
menu.close();
|
||||
}
|
||||
|
||||
void ClientConnection::update_menu_item(i32 menu_id, i32 identifier, [[maybe_unused]] i32 submenu_id,
|
||||
void ConnectionFromClient::update_menu_item(i32 menu_id, i32 identifier, [[maybe_unused]] i32 submenu_id,
|
||||
String const& text, bool enabled, bool checkable, bool checked, bool is_default,
|
||||
String const& shortcut)
|
||||
{
|
||||
|
@ -192,7 +192,7 @@ void ClientConnection::update_menu_item(i32 menu_id, i32 identifier, [[maybe_unu
|
|||
menu_item->set_checked(checked);
|
||||
}
|
||||
|
||||
void ClientConnection::remove_menu_item(i32 menu_id, i32 identifier)
|
||||
void ConnectionFromClient::remove_menu_item(i32 menu_id, i32 identifier)
|
||||
{
|
||||
auto it = m_menus.find(menu_id);
|
||||
if (it == m_menus.end()) {
|
||||
|
@ -204,7 +204,7 @@ void ClientConnection::remove_menu_item(i32 menu_id, i32 identifier)
|
|||
did_misbehave("RemoveMenuItem: Bad menu item identifier");
|
||||
}
|
||||
|
||||
void ClientConnection::flash_menubar_menu(i32 window_id, i32 menu_id)
|
||||
void ConnectionFromClient::flash_menubar_menu(i32 window_id, i32 menu_id)
|
||||
{
|
||||
auto itw = m_windows.find(window_id);
|
||||
if (itw == m_windows.end()) {
|
||||
|
@ -240,7 +240,7 @@ void ClientConnection::flash_menubar_menu(i32 window_id, i32 menu_id)
|
|||
}
|
||||
}
|
||||
|
||||
void ClientConnection::add_menu_separator(i32 menu_id)
|
||||
void ConnectionFromClient::add_menu_separator(i32 menu_id)
|
||||
{
|
||||
auto it = m_menus.find(menu_id);
|
||||
if (it == m_menus.end()) {
|
||||
|
@ -251,7 +251,7 @@ void ClientConnection::add_menu_separator(i32 menu_id)
|
|||
menu.add_item(make<MenuItem>(menu, MenuItem::Separator));
|
||||
}
|
||||
|
||||
void ClientConnection::move_window_to_front(i32 window_id)
|
||||
void ConnectionFromClient::move_window_to_front(i32 window_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -261,7 +261,7 @@ void ClientConnection::move_window_to_front(i32 window_id)
|
|||
WindowManager::the().move_to_front_and_make_active(*(*it).value);
|
||||
}
|
||||
|
||||
void ClientConnection::set_fullscreen(i32 window_id, bool fullscreen)
|
||||
void ConnectionFromClient::set_fullscreen(i32 window_id, bool fullscreen)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -271,7 +271,7 @@ void ClientConnection::set_fullscreen(i32 window_id, bool fullscreen)
|
|||
it->value->set_fullscreen(fullscreen);
|
||||
}
|
||||
|
||||
void ClientConnection::set_frameless(i32 window_id, bool frameless)
|
||||
void ConnectionFromClient::set_frameless(i32 window_id, bool frameless)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -282,7 +282,7 @@ void ClientConnection::set_frameless(i32 window_id, bool frameless)
|
|||
WindowManager::the().tell_wms_window_state_changed(*it->value);
|
||||
}
|
||||
|
||||
void ClientConnection::set_forced_shadow(i32 window_id, bool shadow)
|
||||
void ConnectionFromClient::set_forced_shadow(i32 window_id, bool shadow)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -294,7 +294,7 @@ void ClientConnection::set_forced_shadow(i32 window_id, bool shadow)
|
|||
Compositor::the().invalidate_occlusions();
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_opacity(i32 window_id, float opacity)
|
||||
void ConnectionFromClient::set_window_opacity(i32 window_id, float opacity)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -304,47 +304,47 @@ void ClientConnection::set_window_opacity(i32 window_id, float opacity)
|
|||
it->value->set_opacity(opacity);
|
||||
}
|
||||
|
||||
void ClientConnection::set_wallpaper(Gfx::ShareableBitmap const& bitmap)
|
||||
void ConnectionFromClient::set_wallpaper(Gfx::ShareableBitmap const& bitmap)
|
||||
{
|
||||
Compositor::the().set_wallpaper(bitmap.bitmap());
|
||||
async_set_wallpaper_finished(true);
|
||||
}
|
||||
|
||||
void ClientConnection::set_background_color(String const& background_color)
|
||||
void ConnectionFromClient::set_background_color(String const& background_color)
|
||||
{
|
||||
Compositor::the().set_background_color(background_color);
|
||||
}
|
||||
|
||||
void ClientConnection::set_wallpaper_mode(String const& mode)
|
||||
void ConnectionFromClient::set_wallpaper_mode(String const& mode)
|
||||
{
|
||||
Compositor::the().set_wallpaper_mode(mode);
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetWallpaperResponse ClientConnection::get_wallpaper()
|
||||
Messages::WindowServer::GetWallpaperResponse ConnectionFromClient::get_wallpaper()
|
||||
{
|
||||
return Compositor::the().wallpaper_bitmap()->to_shareable_bitmap();
|
||||
}
|
||||
|
||||
Messages::WindowServer::SetScreenLayoutResponse ClientConnection::set_screen_layout(ScreenLayout const& screen_layout, bool save)
|
||||
Messages::WindowServer::SetScreenLayoutResponse ConnectionFromClient::set_screen_layout(ScreenLayout const& screen_layout, bool save)
|
||||
{
|
||||
String error_msg;
|
||||
bool success = WindowManager::the().set_screen_layout(ScreenLayout(screen_layout), save, error_msg);
|
||||
return { success, move(error_msg) };
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetScreenLayoutResponse ClientConnection::get_screen_layout()
|
||||
Messages::WindowServer::GetScreenLayoutResponse ConnectionFromClient::get_screen_layout()
|
||||
{
|
||||
return { WindowManager::the().get_screen_layout() };
|
||||
}
|
||||
|
||||
Messages::WindowServer::SaveScreenLayoutResponse ClientConnection::save_screen_layout()
|
||||
Messages::WindowServer::SaveScreenLayoutResponse ConnectionFromClient::save_screen_layout()
|
||||
{
|
||||
String error_msg;
|
||||
bool success = WindowManager::the().save_screen_layout(error_msg);
|
||||
return { success, move(error_msg) };
|
||||
}
|
||||
|
||||
Messages::WindowServer::ApplyWorkspaceSettingsResponse ClientConnection::apply_workspace_settings(u32 rows, u32 columns, bool save)
|
||||
Messages::WindowServer::ApplyWorkspaceSettingsResponse ConnectionFromClient::apply_workspace_settings(u32 rows, u32 columns, bool save)
|
||||
{
|
||||
if (rows == 0 || columns == 0 || rows > WindowManager::max_window_stack_rows || columns > WindowManager::max_window_stack_columns)
|
||||
return { false };
|
||||
|
@ -352,13 +352,13 @@ Messages::WindowServer::ApplyWorkspaceSettingsResponse ClientConnection::apply_w
|
|||
return { WindowManager::the().apply_workspace_settings(rows, columns, save) };
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetWorkspaceSettingsResponse ClientConnection::get_workspace_settings()
|
||||
Messages::WindowServer::GetWorkspaceSettingsResponse ConnectionFromClient::get_workspace_settings()
|
||||
{
|
||||
auto& wm = WindowManager::the();
|
||||
return { (unsigned)wm.window_stack_rows(), (unsigned)wm.window_stack_columns(), WindowManager::max_window_stack_rows, WindowManager::max_window_stack_columns };
|
||||
}
|
||||
|
||||
void ClientConnection::show_screen_numbers(bool show)
|
||||
void ConnectionFromClient::show_screen_numbers(bool show)
|
||||
{
|
||||
if (m_show_screen_number == show)
|
||||
return;
|
||||
|
@ -369,7 +369,7 @@ void ClientConnection::show_screen_numbers(bool show)
|
|||
Compositor::the().decrement_show_screen_number({});
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_title(i32 window_id, String const& title)
|
||||
void ConnectionFromClient::set_window_title(i32 window_id, String const& title)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -379,7 +379,7 @@ void ClientConnection::set_window_title(i32 window_id, String const& title)
|
|||
it->value->set_title(title);
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetWindowTitleResponse ClientConnection::get_window_title(i32 window_id)
|
||||
Messages::WindowServer::GetWindowTitleResponse ConnectionFromClient::get_window_title(i32 window_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -389,7 +389,7 @@ Messages::WindowServer::GetWindowTitleResponse ClientConnection::get_window_titl
|
|||
return it->value->title();
|
||||
}
|
||||
|
||||
Messages::WindowServer::IsMaximizedResponse ClientConnection::is_maximized(i32 window_id)
|
||||
Messages::WindowServer::IsMaximizedResponse ConnectionFromClient::is_maximized(i32 window_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -399,7 +399,7 @@ Messages::WindowServer::IsMaximizedResponse ClientConnection::is_maximized(i32 w
|
|||
return it->value->is_maximized();
|
||||
}
|
||||
|
||||
void ClientConnection::set_maximized(i32 window_id, bool maximized)
|
||||
void ConnectionFromClient::set_maximized(i32 window_id, bool maximized)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -409,7 +409,7 @@ void ClientConnection::set_maximized(i32 window_id, bool maximized)
|
|||
it->value->set_maximized(maximized);
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_icon_bitmap(i32 window_id, Gfx::ShareableBitmap const& icon)
|
||||
void ConnectionFromClient::set_window_icon_bitmap(i32 window_id, Gfx::ShareableBitmap const& icon)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -428,7 +428,7 @@ void ClientConnection::set_window_icon_bitmap(i32 window_id, Gfx::ShareableBitma
|
|||
WindowManager::the().tell_wms_window_icon_changed(window);
|
||||
}
|
||||
|
||||
Messages::WindowServer::SetWindowRectResponse ClientConnection::set_window_rect(i32 window_id, Gfx::IntRect const& rect)
|
||||
Messages::WindowServer::SetWindowRectResponse ConnectionFromClient::set_window_rect(i32 window_id, Gfx::IntRect const& rect)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -437,7 +437,7 @@ Messages::WindowServer::SetWindowRectResponse ClientConnection::set_window_rect(
|
|||
}
|
||||
auto& window = *(*it).value;
|
||||
if (window.is_fullscreen()) {
|
||||
dbgln("ClientConnection: Ignoring SetWindowRect request for fullscreen window");
|
||||
dbgln("ConnectionFromClient: Ignoring SetWindowRect request for fullscreen window");
|
||||
return nullptr;
|
||||
}
|
||||
if (rect.width() > INT16_MAX || rect.height() > INT16_MAX) {
|
||||
|
@ -456,7 +456,7 @@ Messages::WindowServer::SetWindowRectResponse ClientConnection::set_window_rect(
|
|||
return window.rect();
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetWindowRectResponse ClientConnection::get_window_rect(i32 window_id)
|
||||
Messages::WindowServer::GetWindowRectResponse ConnectionFromClient::get_window_rect(i32 window_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -466,7 +466,7 @@ Messages::WindowServer::GetWindowRectResponse ClientConnection::get_window_rect(
|
|||
return it->value->rect();
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_minimum_size(i32 window_id, Gfx::IntSize const& size)
|
||||
void ConnectionFromClient::set_window_minimum_size(i32 window_id, Gfx::IntSize const& size)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -475,7 +475,7 @@ void ClientConnection::set_window_minimum_size(i32 window_id, Gfx::IntSize const
|
|||
}
|
||||
auto& window = *(*it).value;
|
||||
if (window.is_fullscreen()) {
|
||||
dbgln("ClientConnection: Ignoring SetWindowMinimumSize request for fullscreen window");
|
||||
dbgln("ConnectionFromClient: Ignoring SetWindowMinimumSize request for fullscreen window");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -494,7 +494,7 @@ void ClientConnection::set_window_minimum_size(i32 window_id, Gfx::IntSize const
|
|||
}
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetWindowMinimumSizeResponse ClientConnection::get_window_minimum_size(i32 window_id)
|
||||
Messages::WindowServer::GetWindowMinimumSizeResponse ConnectionFromClient::get_window_minimum_size(i32 window_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -504,7 +504,7 @@ Messages::WindowServer::GetWindowMinimumSizeResponse ClientConnection::get_windo
|
|||
return it->value->minimum_size();
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetAppletRectOnScreenResponse ClientConnection::get_applet_rect_on_screen(i32 window_id)
|
||||
Messages::WindowServer::GetAppletRectOnScreenResponse ConnectionFromClient::get_applet_rect_on_screen(i32 window_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -519,7 +519,7 @@ Messages::WindowServer::GetAppletRectOnScreenResponse ClientConnection::get_appl
|
|||
return it->value->rect_in_applet_area().translated(applet_area_rect.location());
|
||||
}
|
||||
|
||||
Window* ClientConnection::window_from_id(i32 window_id)
|
||||
Window* ConnectionFromClient::window_from_id(i32 window_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end())
|
||||
|
@ -527,7 +527,7 @@ Window* ClientConnection::window_from_id(i32 window_id)
|
|||
return it->value.ptr();
|
||||
}
|
||||
|
||||
void ClientConnection::create_window(i32 window_id, Gfx::IntRect const& rect,
|
||||
void ConnectionFromClient::create_window(i32 window_id, Gfx::IntRect const& rect,
|
||||
bool auto_position, bool has_alpha_channel, bool modal, bool minimizable, bool closeable, bool resizable,
|
||||
bool fullscreen, bool frameless, bool forced_shadow, bool accessory, float opacity,
|
||||
float alpha_hit_threshold, Gfx::IntSize const& base_size, Gfx::IntSize const& size_increment,
|
||||
|
@ -592,7 +592,7 @@ void ClientConnection::create_window(i32 window_id, Gfx::IntRect const& rect,
|
|||
m_windows.set(window_id, move(window));
|
||||
}
|
||||
|
||||
void ClientConnection::destroy_window(Window& window, Vector<i32>& destroyed_window_ids)
|
||||
void ConnectionFromClient::destroy_window(Window& window, Vector<i32>& destroyed_window_ids)
|
||||
{
|
||||
for (auto& child_window : window.child_windows()) {
|
||||
if (!child_window)
|
||||
|
@ -618,7 +618,7 @@ void ClientConnection::destroy_window(Window& window, Vector<i32>& destroyed_win
|
|||
m_windows.remove(window.window_id());
|
||||
}
|
||||
|
||||
Messages::WindowServer::DestroyWindowResponse ClientConnection::destroy_window(i32 window_id)
|
||||
Messages::WindowServer::DestroyWindowResponse ConnectionFromClient::destroy_window(i32 window_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -631,7 +631,7 @@ Messages::WindowServer::DestroyWindowResponse ClientConnection::destroy_window(i
|
|||
return destroyed_window_ids;
|
||||
}
|
||||
|
||||
void ClientConnection::post_paint_message(Window& window, bool ignore_occlusion)
|
||||
void ConnectionFromClient::post_paint_message(Window& window, bool ignore_occlusion)
|
||||
{
|
||||
auto rect_set = window.take_pending_paint_rects();
|
||||
if (window.is_minimized() || (!ignore_occlusion && window.is_occluded()))
|
||||
|
@ -640,7 +640,7 @@ void ClientConnection::post_paint_message(Window& window, bool ignore_occlusion)
|
|||
async_paint(window.window_id(), window.size(), rect_set.rects());
|
||||
}
|
||||
|
||||
void ClientConnection::invalidate_rect(i32 window_id, Vector<Gfx::IntRect> const& rects, bool ignore_occlusion)
|
||||
void ConnectionFromClient::invalidate_rect(i32 window_id, Vector<Gfx::IntRect> const& rects, bool ignore_occlusion)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -652,7 +652,7 @@ void ClientConnection::invalidate_rect(i32 window_id, Vector<Gfx::IntRect> const
|
|||
window.request_update(rects[i].intersected({ {}, window.size() }), ignore_occlusion);
|
||||
}
|
||||
|
||||
void ClientConnection::did_finish_painting(i32 window_id, Vector<Gfx::IntRect> const& rects)
|
||||
void ConnectionFromClient::did_finish_painting(i32 window_id, Vector<Gfx::IntRect> const& rects)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -668,7 +668,7 @@ void ClientConnection::did_finish_painting(i32 window_id, Vector<Gfx::IntRect> c
|
|||
WindowSwitcher::the().refresh_if_needed();
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_backing_store(i32 window_id, [[maybe_unused]] i32 bpp,
|
||||
void ConnectionFromClient::set_window_backing_store(i32 window_id, [[maybe_unused]] i32 bpp,
|
||||
[[maybe_unused]] i32 pitch, IPC::File const& anon_file, i32 serial, bool has_alpha_channel,
|
||||
Gfx::IntSize const& size, bool flush_immediately)
|
||||
{
|
||||
|
@ -703,12 +703,12 @@ void ClientConnection::set_window_backing_store(i32 window_id, [[maybe_unused]]
|
|||
window.invalidate(false);
|
||||
}
|
||||
|
||||
void ClientConnection::set_global_mouse_tracking(bool enabled)
|
||||
void ConnectionFromClient::set_global_mouse_tracking(bool enabled)
|
||||
{
|
||||
m_does_global_mouse_tracking = enabled;
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_cursor(i32 window_id, i32 cursor_type)
|
||||
void ConnectionFromClient::set_window_cursor(i32 window_id, i32 cursor_type)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -725,7 +725,7 @@ void ClientConnection::set_window_cursor(i32 window_id, i32 cursor_type)
|
|||
Compositor::the().invalidate_cursor();
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_custom_cursor(i32 window_id, Gfx::ShareableBitmap const& cursor)
|
||||
void ConnectionFromClient::set_window_custom_cursor(i32 window_id, Gfx::ShareableBitmap const& cursor)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -743,7 +743,7 @@ void ClientConnection::set_window_custom_cursor(i32 window_id, Gfx::ShareableBit
|
|||
Compositor::the().invalidate_cursor();
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_has_alpha_channel(i32 window_id, bool has_alpha_channel)
|
||||
void ConnectionFromClient::set_window_has_alpha_channel(i32 window_id, bool has_alpha_channel)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -753,7 +753,7 @@ void ClientConnection::set_window_has_alpha_channel(i32 window_id, bool has_alph
|
|||
it->value->set_has_alpha_channel(has_alpha_channel);
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_alpha_hit_threshold(i32 window_id, float threshold)
|
||||
void ConnectionFromClient::set_window_alpha_hit_threshold(i32 window_id, float threshold)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -763,7 +763,7 @@ void ClientConnection::set_window_alpha_hit_threshold(i32 window_id, float thres
|
|||
it->value->set_alpha_hit_threshold(threshold);
|
||||
}
|
||||
|
||||
void ClientConnection::start_window_resize(i32 window_id)
|
||||
void ConnectionFromClient::start_window_resize(i32 window_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -780,7 +780,7 @@ void ClientConnection::start_window_resize(i32 window_id)
|
|||
WindowManager::the().start_window_resize(window, ScreenInput::the().cursor_location(), MouseButton::Primary);
|
||||
}
|
||||
|
||||
Messages::WindowServer::StartDragResponse ClientConnection::start_drag(String const& text, HashMap<String, ByteBuffer> const& mime_data, Gfx::ShareableBitmap const& drag_bitmap)
|
||||
Messages::WindowServer::StartDragResponse ConnectionFromClient::start_drag(String const& text, HashMap<String, ByteBuffer> const& mime_data, Gfx::ShareableBitmap const& drag_bitmap)
|
||||
{
|
||||
auto& wm = WindowManager::the();
|
||||
if (wm.dnd_client())
|
||||
|
@ -790,32 +790,32 @@ Messages::WindowServer::StartDragResponse ClientConnection::start_drag(String co
|
|||
return true;
|
||||
}
|
||||
|
||||
Messages::WindowServer::SetSystemThemeResponse ClientConnection::set_system_theme(String const& theme_path, String const& theme_name)
|
||||
Messages::WindowServer::SetSystemThemeResponse ConnectionFromClient::set_system_theme(String const& theme_path, String const& theme_name)
|
||||
{
|
||||
bool success = WindowManager::the().update_theme(theme_path, theme_name);
|
||||
return success;
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetSystemThemeResponse ClientConnection::get_system_theme()
|
||||
Messages::WindowServer::GetSystemThemeResponse ConnectionFromClient::get_system_theme()
|
||||
{
|
||||
auto wm_config = Core::ConfigFile::open("/etc/WindowServer.ini").release_value_but_fixme_should_propagate_errors();
|
||||
auto name = wm_config->read_entry("Theme", "Name");
|
||||
return name;
|
||||
}
|
||||
|
||||
void ClientConnection::apply_cursor_theme(String const& name)
|
||||
void ConnectionFromClient::apply_cursor_theme(String const& name)
|
||||
{
|
||||
WindowManager::the().apply_cursor_theme(name);
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetCursorThemeResponse ClientConnection::get_cursor_theme()
|
||||
Messages::WindowServer::GetCursorThemeResponse ConnectionFromClient::get_cursor_theme()
|
||||
{
|
||||
auto config = Core::ConfigFile::open("/etc/WindowServer.ini").release_value_but_fixme_should_propagate_errors();
|
||||
auto name = config->read_entry("Mouse", "CursorTheme");
|
||||
return name;
|
||||
}
|
||||
|
||||
Messages::WindowServer::SetSystemFontsResponse ClientConnection::set_system_fonts(String const& default_font_query, String const& fixed_width_font_query)
|
||||
Messages::WindowServer::SetSystemFontsResponse ConnectionFromClient::set_system_fonts(String const& default_font_query, String const& fixed_width_font_query)
|
||||
{
|
||||
if (!Gfx::FontDatabase::the().get_by_name(default_font_query)
|
||||
|| !Gfx::FontDatabase::the().get_by_name(fixed_width_font_query)) {
|
||||
|
@ -828,7 +828,7 @@ Messages::WindowServer::SetSystemFontsResponse ClientConnection::set_system_font
|
|||
Gfx::FontDatabase::set_default_font_query(default_font_query);
|
||||
Gfx::FontDatabase::set_fixed_width_font_query(fixed_width_font_query);
|
||||
|
||||
ClientConnection::for_each_client([&](auto& client) {
|
||||
ConnectionFromClient::for_each_client([&](auto& client) {
|
||||
client.async_update_system_fonts(default_font_query, fixed_width_font_query);
|
||||
});
|
||||
|
||||
|
@ -845,7 +845,7 @@ Messages::WindowServer::SetSystemFontsResponse ClientConnection::set_system_font
|
|||
return true;
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_base_size_and_size_increment(i32 window_id, Gfx::IntSize const& base_size, Gfx::IntSize const& size_increment)
|
||||
void ConnectionFromClient::set_window_base_size_and_size_increment(i32 window_id, Gfx::IntSize const& base_size, Gfx::IntSize const& size_increment)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -858,7 +858,7 @@ void ClientConnection::set_window_base_size_and_size_increment(i32 window_id, Gf
|
|||
window.set_size_increment(size_increment);
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_resize_aspect_ratio(i32 window_id, Optional<Gfx::IntSize> const& resize_aspect_ratio)
|
||||
void ConnectionFromClient::set_window_resize_aspect_ratio(i32 window_id, Optional<Gfx::IntSize> const& resize_aspect_ratio)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -870,7 +870,7 @@ void ClientConnection::set_window_resize_aspect_ratio(i32 window_id, Optional<Gf
|
|||
window.set_resize_aspect_ratio(resize_aspect_ratio);
|
||||
}
|
||||
|
||||
void ClientConnection::enable_display_link()
|
||||
void ConnectionFromClient::enable_display_link()
|
||||
{
|
||||
if (m_has_display_link)
|
||||
return;
|
||||
|
@ -878,7 +878,7 @@ void ClientConnection::enable_display_link()
|
|||
Compositor::the().increment_display_link_count({});
|
||||
}
|
||||
|
||||
void ClientConnection::disable_display_link()
|
||||
void ConnectionFromClient::disable_display_link()
|
||||
{
|
||||
if (!m_has_display_link)
|
||||
return;
|
||||
|
@ -886,7 +886,7 @@ void ClientConnection::disable_display_link()
|
|||
Compositor::the().decrement_display_link_count({});
|
||||
}
|
||||
|
||||
void ClientConnection::notify_display_link(Badge<Compositor>)
|
||||
void ConnectionFromClient::notify_display_link(Badge<Compositor>)
|
||||
{
|
||||
if (!m_has_display_link)
|
||||
return;
|
||||
|
@ -894,7 +894,7 @@ void ClientConnection::notify_display_link(Badge<Compositor>)
|
|||
async_display_link_notification();
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_progress(i32 window_id, Optional<i32> const& progress)
|
||||
void ConnectionFromClient::set_window_progress(i32 window_id, Optional<i32> const& progress)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -904,19 +904,19 @@ void ClientConnection::set_window_progress(i32 window_id, Optional<i32> const& p
|
|||
it->value->set_progress(progress);
|
||||
}
|
||||
|
||||
void ClientConnection::refresh_system_theme()
|
||||
void ConnectionFromClient::refresh_system_theme()
|
||||
{
|
||||
// Post the client an UpdateSystemTheme message to refresh its theme.
|
||||
async_update_system_theme(Gfx::current_system_theme_buffer());
|
||||
}
|
||||
|
||||
void ClientConnection::pong()
|
||||
void ConnectionFromClient::pong()
|
||||
{
|
||||
m_ping_timer = nullptr;
|
||||
set_unresponsive(false);
|
||||
}
|
||||
|
||||
void ClientConnection::set_global_cursor_position(Gfx::IntPoint const& position)
|
||||
void ConnectionFromClient::set_global_cursor_position(Gfx::IntPoint const& position)
|
||||
{
|
||||
if (!Screen::main().rect().contains(position)) {
|
||||
did_misbehave("SetGlobalCursorPosition with bad position");
|
||||
|
@ -928,12 +928,12 @@ void ClientConnection::set_global_cursor_position(Gfx::IntPoint const& position)
|
|||
}
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetGlobalCursorPositionResponse ClientConnection::get_global_cursor_position()
|
||||
Messages::WindowServer::GetGlobalCursorPositionResponse ConnectionFromClient::get_global_cursor_position()
|
||||
{
|
||||
return ScreenInput::the().cursor_location();
|
||||
}
|
||||
|
||||
void ClientConnection::set_mouse_acceleration(float factor)
|
||||
void ConnectionFromClient::set_mouse_acceleration(float factor)
|
||||
{
|
||||
double dbl_factor = (double)factor;
|
||||
if (dbl_factor < mouse_accel_min || dbl_factor > mouse_accel_max) {
|
||||
|
@ -943,12 +943,12 @@ void ClientConnection::set_mouse_acceleration(float factor)
|
|||
WindowManager::the().set_acceleration_factor(dbl_factor);
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetMouseAccelerationResponse ClientConnection::get_mouse_acceleration()
|
||||
Messages::WindowServer::GetMouseAccelerationResponse ConnectionFromClient::get_mouse_acceleration()
|
||||
{
|
||||
return ScreenInput::the().acceleration_factor();
|
||||
}
|
||||
|
||||
void ClientConnection::set_scroll_step_size(u32 step_size)
|
||||
void ConnectionFromClient::set_scroll_step_size(u32 step_size)
|
||||
{
|
||||
if (step_size < scroll_step_size_min) {
|
||||
did_misbehave("SetScrollStepSize with bad scroll step size");
|
||||
|
@ -957,12 +957,12 @@ void ClientConnection::set_scroll_step_size(u32 step_size)
|
|||
WindowManager::the().set_scroll_step_size(step_size);
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetScrollStepSizeResponse ClientConnection::get_scroll_step_size()
|
||||
Messages::WindowServer::GetScrollStepSizeResponse ConnectionFromClient::get_scroll_step_size()
|
||||
{
|
||||
return ScreenInput::the().scroll_step_size();
|
||||
}
|
||||
|
||||
void ClientConnection::set_double_click_speed(i32 speed)
|
||||
void ConnectionFromClient::set_double_click_speed(i32 speed)
|
||||
{
|
||||
if (speed < double_click_speed_min || speed > double_click_speed_max) {
|
||||
did_misbehave("SetDoubleClickSpeed with bad speed");
|
||||
|
@ -971,22 +971,22 @@ void ClientConnection::set_double_click_speed(i32 speed)
|
|||
WindowManager::the().set_double_click_speed(speed);
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetDoubleClickSpeedResponse ClientConnection::get_double_click_speed()
|
||||
Messages::WindowServer::GetDoubleClickSpeedResponse ConnectionFromClient::get_double_click_speed()
|
||||
{
|
||||
return WindowManager::the().double_click_speed();
|
||||
}
|
||||
|
||||
void ClientConnection::set_buttons_switched(bool switched)
|
||||
void ConnectionFromClient::set_buttons_switched(bool switched)
|
||||
{
|
||||
WindowManager::the().set_buttons_switched(switched);
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetButtonsSwitchedResponse ClientConnection::get_buttons_switched()
|
||||
Messages::WindowServer::GetButtonsSwitchedResponse ConnectionFromClient::get_buttons_switched()
|
||||
{
|
||||
return WindowManager::the().get_buttons_switched();
|
||||
}
|
||||
|
||||
void ClientConnection::set_unresponsive(bool unresponsive)
|
||||
void ConnectionFromClient::set_unresponsive(bool unresponsive)
|
||||
{
|
||||
if (m_unresponsive == unresponsive)
|
||||
return;
|
||||
|
@ -1003,7 +1003,7 @@ void ClientConnection::set_unresponsive(bool unresponsive)
|
|||
Compositor::the().invalidate_cursor();
|
||||
}
|
||||
|
||||
void ClientConnection::may_have_become_unresponsive()
|
||||
void ConnectionFromClient::may_have_become_unresponsive()
|
||||
{
|
||||
async_ping();
|
||||
m_ping_timer = Core::Timer::create_single_shot(1000, [this] {
|
||||
|
@ -1012,12 +1012,12 @@ void ClientConnection::may_have_become_unresponsive()
|
|||
m_ping_timer->start();
|
||||
}
|
||||
|
||||
void ClientConnection::did_become_responsive()
|
||||
void ConnectionFromClient::did_become_responsive()
|
||||
{
|
||||
set_unresponsive(false);
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetScreenBitmapResponse ClientConnection::get_screen_bitmap(Optional<Gfx::IntRect> const& rect, Optional<u32> const& screen_index)
|
||||
Messages::WindowServer::GetScreenBitmapResponse ConnectionFromClient::get_screen_bitmap(Optional<Gfx::IntRect> const& rect, Optional<u32> const& screen_index)
|
||||
{
|
||||
if (screen_index.has_value()) {
|
||||
auto* screen = Screen::find_by_index(screen_index.value());
|
||||
|
@ -1057,7 +1057,7 @@ Messages::WindowServer::GetScreenBitmapResponse ClientConnection::get_screen_bit
|
|||
return { Gfx::ShareableBitmap() };
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetScreenBitmapAroundCursorResponse ClientConnection::get_screen_bitmap_around_cursor(Gfx::IntSize const& size)
|
||||
Messages::WindowServer::GetScreenBitmapAroundCursorResponse ConnectionFromClient::get_screen_bitmap_around_cursor(Gfx::IntSize const& size)
|
||||
{
|
||||
// TODO: Mixed scale setups at what scale? Lowest? Highest? Configurable?
|
||||
auto cursor_location = ScreenInput::the().cursor_location();
|
||||
|
@ -1126,7 +1126,7 @@ Messages::WindowServer::GetScreenBitmapAroundCursorResponse ClientConnection::ge
|
|||
return { {} };
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetColorUnderCursorResponse ClientConnection::get_color_under_cursor()
|
||||
Messages::WindowServer::GetColorUnderCursorResponse ConnectionFromClient::get_color_under_cursor()
|
||||
{
|
||||
// FIXME: Add a mechanism to get screen bitmap without cursor, so we don't have to do this
|
||||
// manual translation to avoid sampling the color on the actual cursor itself.
|
||||
|
@ -1139,7 +1139,7 @@ Messages::WindowServer::GetColorUnderCursorResponse ClientConnection::get_color_
|
|||
return { Compositor::the().color_at_position({}, screen_with_cursor, cursor_location) };
|
||||
}
|
||||
|
||||
Messages::WindowServer::IsWindowModifiedResponse ClientConnection::is_window_modified(i32 window_id)
|
||||
Messages::WindowServer::IsWindowModifiedResponse ConnectionFromClient::is_window_modified(i32 window_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -1150,7 +1150,7 @@ Messages::WindowServer::IsWindowModifiedResponse ClientConnection::is_window_mod
|
|||
return window.is_modified();
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetDesktopDisplayScaleResponse ClientConnection::get_desktop_display_scale(u32 screen_index)
|
||||
Messages::WindowServer::GetDesktopDisplayScaleResponse ConnectionFromClient::get_desktop_display_scale(u32 screen_index)
|
||||
{
|
||||
if (auto* screen = Screen::find_by_index(screen_index))
|
||||
return screen->scale_factor();
|
||||
|
@ -1158,7 +1158,7 @@ Messages::WindowServer::GetDesktopDisplayScaleResponse ClientConnection::get_des
|
|||
return 0;
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_modified(i32 window_id, bool modified)
|
||||
void ConnectionFromClient::set_window_modified(i32 window_id, bool modified)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
|
@ -1169,12 +1169,12 @@ void ClientConnection::set_window_modified(i32 window_id, bool modified)
|
|||
window.set_modified(modified);
|
||||
}
|
||||
|
||||
void ClientConnection::set_flash_flush(bool enabled)
|
||||
void ConnectionFromClient::set_flash_flush(bool enabled)
|
||||
{
|
||||
Compositor::the().set_flash_flush(enabled);
|
||||
}
|
||||
|
||||
void ClientConnection::set_window_parent_from_client(i32 client_id, i32 parent_id, i32 child_id)
|
||||
void ConnectionFromClient::set_window_parent_from_client(i32 client_id, i32 parent_id, i32 child_id)
|
||||
{
|
||||
auto child_window = window_from_id(child_id);
|
||||
if (!child_window)
|
||||
|
@ -1195,7 +1195,7 @@ void ClientConnection::set_window_parent_from_client(i32 client_id, i32 parent_i
|
|||
}
|
||||
}
|
||||
|
||||
Messages::WindowServer::GetWindowRectFromClientResponse ClientConnection::get_window_rect_from_client(i32 client_id, i32 window_id)
|
||||
Messages::WindowServer::GetWindowRectFromClientResponse ConnectionFromClient::get_window_rect_from_client(i32 client_id, i32 window_id)
|
||||
{
|
||||
auto client_connection = from_client_id(client_id);
|
||||
if (!client_connection)
|
||||
|
@ -1208,7 +1208,7 @@ Messages::WindowServer::GetWindowRectFromClientResponse ClientConnection::get_wi
|
|||
return window->rect();
|
||||
}
|
||||
|
||||
void ClientConnection::add_window_stealing_for_client(i32 client_id, i32 window_id)
|
||||
void ConnectionFromClient::add_window_stealing_for_client(i32 client_id, i32 window_id)
|
||||
{
|
||||
auto window = window_from_id(window_id);
|
||||
if (!window)
|
||||
|
@ -1220,7 +1220,7 @@ void ClientConnection::add_window_stealing_for_client(i32 client_id, i32 window_
|
|||
window->add_stealing_for_client(client_id);
|
||||
}
|
||||
|
||||
void ClientConnection::remove_window_stealing_for_client(i32 client_id, i32 window_id)
|
||||
void ConnectionFromClient::remove_window_stealing_for_client(i32 client_id, i32 window_id)
|
||||
{
|
||||
auto window = window_from_id(window_id);
|
||||
if (!window)
|
||||
|
@ -1231,7 +1231,7 @@ void ClientConnection::remove_window_stealing_for_client(i32 client_id, i32 wind
|
|||
window->remove_stealing_for_client(client_id);
|
||||
}
|
||||
|
||||
void ClientConnection::remove_window_stealing(i32 window_id)
|
||||
void ConnectionFromClient::remove_window_stealing(i32 window_id)
|
||||
{
|
||||
auto window = window_from_id(window_id);
|
||||
if (!window)
|
|
@ -15,7 +15,7 @@
|
|||
#include <LibCore/Object.h>
|
||||
#include <LibGfx/Bitmap.h>
|
||||
#include <LibGfx/Rect.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
#include <WindowServer/Event.h>
|
||||
#include <WindowServer/Menu.h>
|
||||
#include <WindowServer/ScreenLayout.h>
|
||||
|
@ -29,19 +29,19 @@ class Window;
|
|||
class Menu;
|
||||
class Menubar;
|
||||
class ScreenLayout;
|
||||
class WMClientConnection;
|
||||
class WMConnectionFromClient;
|
||||
|
||||
class ClientConnection final
|
||||
: public IPC::ClientConnection<WindowClientEndpoint, WindowServerEndpoint> {
|
||||
C_OBJECT(ClientConnection)
|
||||
class ConnectionFromClient final
|
||||
: public IPC::ConnectionFromClient<WindowClientEndpoint, WindowServerEndpoint> {
|
||||
C_OBJECT(ConnectionFromClient)
|
||||
public:
|
||||
~ClientConnection() override;
|
||||
~ConnectionFromClient() override;
|
||||
|
||||
bool is_unresponsive() const { return m_unresponsive; }
|
||||
bool does_global_mouse_tracking() const { return m_does_global_mouse_tracking; }
|
||||
|
||||
static ClientConnection* from_client_id(int client_id);
|
||||
static void for_each_client(Function<void(ClientConnection&)>);
|
||||
static ConnectionFromClient* from_client_id(int client_id);
|
||||
static void for_each_client(Function<void(ConnectionFromClient&)>);
|
||||
|
||||
void notify_about_new_screen_rects();
|
||||
void post_paint_message(Window&, bool ignore_occlusion = false);
|
||||
|
@ -81,9 +81,9 @@ public:
|
|||
void notify_display_link(Badge<Compositor>);
|
||||
|
||||
private:
|
||||
explicit ClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
explicit ConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket>, int client_id);
|
||||
|
||||
// ^ClientConnection
|
||||
// ^ConnectionFromClient
|
||||
virtual void die() override;
|
||||
virtual void may_have_become_unresponsive() override;
|
||||
virtual void did_become_responsive() override;
|
||||
|
@ -189,7 +189,7 @@ private:
|
|||
bool m_does_global_mouse_tracking { false };
|
||||
|
||||
// Need this to get private client connection stuff
|
||||
friend WMClientConnection;
|
||||
friend WMConnectionFromClient;
|
||||
};
|
||||
|
||||
}
|
|
@ -6,11 +6,11 @@
|
|||
|
||||
#include <AK/Debug.h>
|
||||
#include <Kernel/API/MousePacket.h>
|
||||
#include <WindowServer/ClientConnection.h>
|
||||
#include <WindowServer/ConnectionFromClient.h>
|
||||
#include <WindowServer/Cursor.h>
|
||||
#include <WindowServer/EventLoop.h>
|
||||
#include <WindowServer/Screen.h>
|
||||
#include <WindowServer/WMClientConnection.h>
|
||||
#include <WindowServer/WMConnectionFromClient.h>
|
||||
#include <WindowServer/WindowManager.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
|
@ -23,8 +23,8 @@ EventLoop::EventLoop()
|
|||
m_keyboard_fd = open("/dev/keyboard0", O_RDONLY | O_NONBLOCK | O_CLOEXEC);
|
||||
m_mouse_fd = open("/dev/mouse0", O_RDONLY | O_NONBLOCK | O_CLOEXEC);
|
||||
|
||||
m_window_server = MUST(IPC::MultiServer<ClientConnection>::try_create("/tmp/portal/window"));
|
||||
m_wm_server = MUST(IPC::MultiServer<WMClientConnection>::try_create("/tmp/portal/wm"));
|
||||
m_window_server = MUST(IPC::MultiServer<ConnectionFromClient>::try_create("/tmp/portal/window"));
|
||||
m_wm_server = MUST(IPC::MultiServer<WMConnectionFromClient>::try_create("/tmp/portal/wm"));
|
||||
|
||||
if (m_keyboard_fd >= 0) {
|
||||
m_keyboard_notifier = Core::Notifier::construct(m_keyboard_fd, Core::Notifier::Read);
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "ClientConnection.h"
|
||||
#include "WMClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include "WMConnectionFromClient.h"
|
||||
#include <AK/ByteBuffer.h>
|
||||
#include <LibCore/EventLoop.h>
|
||||
#include <LibCore/Notifier.h>
|
||||
|
@ -15,7 +15,7 @@
|
|||
|
||||
namespace WindowServer {
|
||||
|
||||
class ClientConnection;
|
||||
class ConnectionFromClient;
|
||||
|
||||
class EventLoop {
|
||||
public:
|
||||
|
@ -33,8 +33,8 @@ private:
|
|||
RefPtr<Core::Notifier> m_keyboard_notifier;
|
||||
int m_mouse_fd { -1 };
|
||||
RefPtr<Core::Notifier> m_mouse_notifier;
|
||||
OwnPtr<IPC::MultiServer<ClientConnection>> m_window_server;
|
||||
OwnPtr<IPC::MultiServer<WMClientConnection>> m_wm_server;
|
||||
OwnPtr<IPC::MultiServer<ConnectionFromClient>> m_window_server;
|
||||
OwnPtr<IPC::MultiServer<WMConnectionFromClient>> m_wm_server;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include <LibCore/FileWatcher.h>
|
||||
#include <LibCore/Object.h>
|
||||
#include <LibKeyboard/CharacterMap.h>
|
||||
#include <WindowServer/WMClientConnection.h>
|
||||
#include <WindowServer/WMConnectionFromClient.h>
|
||||
|
||||
namespace WindowServer {
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#include <LibGfx/Painter.h>
|
||||
#include <LibGfx/StylePainter.h>
|
||||
#include <LibGfx/Triangle.h>
|
||||
#include <WindowServer/ClientConnection.h>
|
||||
#include <WindowServer/ConnectionFromClient.h>
|
||||
#include <WindowServer/WindowClientEndpoint.h>
|
||||
|
||||
namespace WindowServer {
|
||||
|
@ -37,7 +37,7 @@ u32 find_ampersand_shortcut_character(StringView string)
|
|||
return 0;
|
||||
}
|
||||
|
||||
Menu::Menu(ClientConnection* client, int menu_id, String name)
|
||||
Menu::Menu(ConnectionFromClient* client, int menu_id, String name)
|
||||
: Core::Object(client)
|
||||
, m_client(client)
|
||||
, m_menu_id(menu_id)
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
namespace WindowServer {
|
||||
|
||||
class ClientConnection;
|
||||
class ConnectionFromClient;
|
||||
class Menubar;
|
||||
class Window;
|
||||
|
||||
|
@ -30,8 +30,8 @@ class Menu final : public Core::Object {
|
|||
public:
|
||||
virtual ~Menu() override;
|
||||
|
||||
ClientConnection* client() { return m_client; }
|
||||
const ClientConnection* client() const { return m_client; }
|
||||
ConnectionFromClient* client() { return m_client; }
|
||||
const ConnectionFromClient* client() const { return m_client; }
|
||||
int menu_id() const { return m_menu_id; }
|
||||
|
||||
bool is_open() const;
|
||||
|
@ -129,7 +129,7 @@ public:
|
|||
const Vector<size_t>* items_with_alt_shortcut(u32 alt_shortcut) const;
|
||||
|
||||
private:
|
||||
Menu(ClientConnection*, int menu_id, String name);
|
||||
Menu(ConnectionFromClient*, int menu_id, String name);
|
||||
|
||||
virtual void event(Core::Event&) override;
|
||||
|
||||
|
@ -144,7 +144,7 @@ private:
|
|||
|
||||
void start_activation_animation(MenuItem&);
|
||||
|
||||
ClientConnection* m_client { nullptr };
|
||||
ConnectionFromClient* m_client { nullptr };
|
||||
int m_menu_id { 0 };
|
||||
String m_name;
|
||||
u32 m_alt_shortcut_character { 0 };
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "MenuItem.h"
|
||||
#include "ClientConnection.h"
|
||||
#include "ConnectionFromClient.h"
|
||||
#include "Menu.h"
|
||||
#include "WindowManager.h"
|
||||
#include <LibGfx/Bitmap.h>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
#include <AK/Badge.h>
|
||||
#include <WindowServer/ClientConnection.h>
|
||||
#include <WindowServer/ConnectionFromClient.h>
|
||||
#include <WindowServer/MenuManager.h>
|
||||
#include <WindowServer/Screen.h>
|
||||
#include <WindowServer/WindowManager.h>
|
||||
|
@ -41,7 +41,7 @@ bool MenuManager::is_open(const Menu& menu) const
|
|||
|
||||
void MenuManager::refresh()
|
||||
{
|
||||
ClientConnection::for_each_client([&](ClientConnection& client) {
|
||||
ConnectionFromClient::for_each_client([&](ConnectionFromClient& client) {
|
||||
client.for_each_menu([&](Menu& menu) {
|
||||
menu.redraw();
|
||||
return IterationDecision::Continue;
|
||||
|
@ -213,7 +213,7 @@ void MenuManager::handle_mouse_event(MouseEvent& mouse_event)
|
|||
}
|
||||
}
|
||||
|
||||
void MenuManager::close_all_menus_from_client(Badge<ClientConnection>, ClientConnection& client)
|
||||
void MenuManager::close_all_menus_from_client(Badge<ConnectionFromClient>, ConnectionFromClient& client)
|
||||
{
|
||||
if (!has_open_menu())
|
||||
return;
|
||||
|
|
|
@ -34,7 +34,7 @@ public:
|
|||
void close_everyone_not_in_lineage(Menu&);
|
||||
void close_menu_and_descendants(Menu&);
|
||||
|
||||
void close_all_menus_from_client(Badge<ClientConnection>, ClientConnection&);
|
||||
void close_all_menus_from_client(Badge<ConnectionFromClient>, ConnectionFromClient&);
|
||||
|
||||
int theme_index() const { return m_theme_index; }
|
||||
|
||||
|
|
|
@ -5,35 +5,35 @@
|
|||
*/
|
||||
|
||||
#include <WindowServer/AppletManager.h>
|
||||
#include <WindowServer/ClientConnection.h>
|
||||
#include <WindowServer/ConnectionFromClient.h>
|
||||
#include <WindowServer/Screen.h>
|
||||
#include <WindowServer/WMClientConnection.h>
|
||||
#include <WindowServer/WMConnectionFromClient.h>
|
||||
|
||||
namespace WindowServer {
|
||||
|
||||
HashMap<int, NonnullRefPtr<WMClientConnection>> WMClientConnection::s_connections {};
|
||||
HashMap<int, NonnullRefPtr<WMConnectionFromClient>> WMConnectionFromClient::s_connections {};
|
||||
|
||||
WMClientConnection::WMClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id)
|
||||
: IPC::ClientConnection<WindowManagerClientEndpoint, WindowManagerServerEndpoint>(*this, move(client_socket), client_id)
|
||||
WMConnectionFromClient::WMConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id)
|
||||
: IPC::ConnectionFromClient<WindowManagerClientEndpoint, WindowManagerServerEndpoint>(*this, move(client_socket), client_id)
|
||||
{
|
||||
s_connections.set(client_id, *this);
|
||||
}
|
||||
|
||||
WMClientConnection::~WMClientConnection()
|
||||
WMConnectionFromClient::~WMConnectionFromClient()
|
||||
{
|
||||
// The WM has gone away, so take away the applet manager (cause there's nowhere
|
||||
// to draw it in).
|
||||
AppletManager::the().set_position({});
|
||||
}
|
||||
|
||||
void WMClientConnection::die()
|
||||
void WMConnectionFromClient::die()
|
||||
{
|
||||
deferred_invoke([this] {
|
||||
s_connections.remove(client_id());
|
||||
});
|
||||
}
|
||||
|
||||
void WMClientConnection::set_applet_area_position(Gfx::IntPoint const& position)
|
||||
void WMConnectionFromClient::set_applet_area_position(Gfx::IntPoint const& position)
|
||||
{
|
||||
if (m_window_id < 0) {
|
||||
did_misbehave("SetAppletAreaPosition: WM didn't assign window as manager yet");
|
||||
|
@ -43,16 +43,16 @@ void WMClientConnection::set_applet_area_position(Gfx::IntPoint const& position)
|
|||
|
||||
AppletManager::the().set_position(position);
|
||||
|
||||
WindowServer::ClientConnection::for_each_client([](auto& connection) {
|
||||
WindowServer::ConnectionFromClient::for_each_client([](auto& connection) {
|
||||
if (auto result = connection.post_message(Messages::WindowClient::AppletAreaRectChanged(AppletManager::the().window()->rect())); result.is_error()) {
|
||||
dbgln("WMClientConnection::set_applet_area_position: {}", result.error());
|
||||
dbgln("WMConnectionFromClient::set_applet_area_position: {}", result.error());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void WMClientConnection::set_active_window(i32 client_id, i32 window_id)
|
||||
void WMConnectionFromClient::set_active_window(i32 client_id, i32 window_id)
|
||||
{
|
||||
auto* client = WindowServer::ClientConnection::from_client_id(client_id);
|
||||
auto* client = WindowServer::ConnectionFromClient::from_client_id(client_id);
|
||||
if (!client) {
|
||||
did_misbehave("SetActiveWindow: Bad client ID");
|
||||
return;
|
||||
|
@ -67,9 +67,9 @@ void WMClientConnection::set_active_window(i32 client_id, i32 window_id)
|
|||
WindowManager::the().move_to_front_and_make_active(window);
|
||||
}
|
||||
|
||||
void WMClientConnection::popup_window_menu(i32 client_id, i32 window_id, Gfx::IntPoint const& screen_position)
|
||||
void WMConnectionFromClient::popup_window_menu(i32 client_id, i32 window_id, Gfx::IntPoint const& screen_position)
|
||||
{
|
||||
auto* client = WindowServer::ClientConnection::from_client_id(client_id);
|
||||
auto* client = WindowServer::ConnectionFromClient::from_client_id(client_id);
|
||||
if (!client) {
|
||||
did_misbehave("PopupWindowMenu: Bad client ID");
|
||||
return;
|
||||
|
@ -87,9 +87,9 @@ void WMClientConnection::popup_window_menu(i32 client_id, i32 window_id, Gfx::In
|
|||
}
|
||||
}
|
||||
|
||||
void WMClientConnection::start_window_resize(i32 client_id, i32 window_id)
|
||||
void WMConnectionFromClient::start_window_resize(i32 client_id, i32 window_id)
|
||||
{
|
||||
auto* client = WindowServer::ClientConnection::from_client_id(client_id);
|
||||
auto* client = WindowServer::ConnectionFromClient::from_client_id(client_id);
|
||||
if (!client) {
|
||||
did_misbehave("WM_StartWindowResize: Bad client ID");
|
||||
return;
|
||||
|
@ -105,9 +105,9 @@ void WMClientConnection::start_window_resize(i32 client_id, i32 window_id)
|
|||
WindowManager::the().start_window_resize(window, ScreenInput::the().cursor_location(), MouseButton::Primary);
|
||||
}
|
||||
|
||||
void WMClientConnection::set_window_minimized(i32 client_id, i32 window_id, bool minimized)
|
||||
void WMConnectionFromClient::set_window_minimized(i32 client_id, i32 window_id, bool minimized)
|
||||
{
|
||||
auto* client = WindowServer::ClientConnection::from_client_id(client_id);
|
||||
auto* client = WindowServer::ConnectionFromClient::from_client_id(client_id);
|
||||
if (!client) {
|
||||
did_misbehave("WM_SetWindowMinimized: Bad client ID");
|
||||
return;
|
||||
|
@ -121,7 +121,7 @@ void WMClientConnection::set_window_minimized(i32 client_id, i32 window_id, bool
|
|||
WindowManager::the().minimize_windows(window, minimized);
|
||||
}
|
||||
|
||||
void WMClientConnection::toggle_show_desktop()
|
||||
void WMConnectionFromClient::toggle_show_desktop()
|
||||
{
|
||||
bool should_hide = false;
|
||||
auto& current_window_stack = WindowManager::the().current_window_stack();
|
||||
|
@ -146,12 +146,12 @@ void WMClientConnection::toggle_show_desktop()
|
|||
});
|
||||
}
|
||||
|
||||
void WMClientConnection::set_event_mask(u32 event_mask)
|
||||
void WMConnectionFromClient::set_event_mask(u32 event_mask)
|
||||
{
|
||||
m_event_mask = event_mask;
|
||||
}
|
||||
|
||||
void WMClientConnection::set_manager_window(i32 window_id)
|
||||
void WMConnectionFromClient::set_manager_window(i32 window_id)
|
||||
{
|
||||
m_window_id = window_id;
|
||||
|
||||
|
@ -160,18 +160,18 @@ void WMClientConnection::set_manager_window(i32 window_id)
|
|||
WindowManager::the().greet_window_manager(*this);
|
||||
}
|
||||
|
||||
void WMClientConnection::set_workspace(u32 row, u32 col)
|
||||
void WMConnectionFromClient::set_workspace(u32 row, u32 col)
|
||||
{
|
||||
WindowManager::the().switch_to_window_stack(row, col);
|
||||
}
|
||||
|
||||
void WMClientConnection::set_window_taskbar_rect(i32 client_id, i32 window_id, Gfx::IntRect const& rect)
|
||||
void WMConnectionFromClient::set_window_taskbar_rect(i32 client_id, i32 window_id, Gfx::IntRect const& rect)
|
||||
{
|
||||
// Because the Taskbar (which should be the only user of this API) does not own the
|
||||
// window or the client id, there is a possibility that it may send this message for
|
||||
// a window or client that may have been destroyed already. This is not an error,
|
||||
// and we should not call did_misbehave() for either.
|
||||
auto* client = WindowServer::ClientConnection::from_client_id(client_id);
|
||||
auto* client = WindowServer::ConnectionFromClient::from_client_id(client_id);
|
||||
if (!client)
|
||||
return;
|
||||
|
|
@ -8,18 +8,18 @@
|
|||
|
||||
#include "AK/NonnullRefPtr.h"
|
||||
#include <AK/HashMap.h>
|
||||
#include <LibIPC/ClientConnection.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
#include <WindowServer/WindowManagerClientEndpoint.h>
|
||||
#include <WindowServer/WindowManagerServerEndpoint.h>
|
||||
|
||||
namespace WindowServer {
|
||||
|
||||
class WMClientConnection final
|
||||
: public IPC::ClientConnection<WindowManagerClientEndpoint, WindowManagerServerEndpoint> {
|
||||
C_OBJECT(WMClientConnection)
|
||||
class WMConnectionFromClient final
|
||||
: public IPC::ConnectionFromClient<WindowManagerClientEndpoint, WindowManagerServerEndpoint> {
|
||||
C_OBJECT(WMConnectionFromClient)
|
||||
|
||||
public:
|
||||
~WMClientConnection() override;
|
||||
~WMConnectionFromClient() override;
|
||||
|
||||
virtual void set_active_window(i32, i32) override;
|
||||
virtual void set_window_minimized(i32, i32, bool) override;
|
||||
|
@ -36,13 +36,13 @@ public:
|
|||
int window_id() const { return m_window_id; }
|
||||
|
||||
private:
|
||||
explicit WMClientConnection(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id);
|
||||
explicit WMConnectionFromClient(NonnullOwnPtr<Core::Stream::LocalSocket> client_socket, int client_id);
|
||||
|
||||
// ^ClientConnection
|
||||
// ^ConnectionFromClient
|
||||
virtual void die() override;
|
||||
|
||||
// RefPtr<Core::Timer> m_ping_timer;
|
||||
static HashMap<int, NonnullRefPtr<WMClientConnection>> s_connections;
|
||||
static HashMap<int, NonnullRefPtr<WMConnectionFromClient>> s_connections;
|
||||
unsigned m_event_mask { 0 };
|
||||
int m_window_id { -1 };
|
||||
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue