mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 02:07:36 +00:00
FileSystemAccessServer: Manage concurrent file requests
Before this patch, when you called FileSystemAccessServer::Client::try_* twice, the second call used the same variable to store the promise. This "race condition" is now solved using a HashMap, to store multiple parallel requests.
This commit is contained in:
parent
e432a284d7
commit
9521952f36
6 changed files with 88 additions and 61 deletions
|
@ -27,19 +27,19 @@ public:
|
|||
private:
|
||||
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;
|
||||
virtual void prompt_open_file(i32, i32, String const&, String const&, Core::OpenMode const&) override;
|
||||
virtual void prompt_save_file(i32, i32, String const&, String const&, String const&, Core::OpenMode const&) override;
|
||||
virtual void request_file_read_only_approved(i32, i32, i32, String const&) override;
|
||||
virtual void request_file(i32, i32, i32, String const&, Core::OpenMode const&) override;
|
||||
virtual void prompt_open_file(i32, i32, i32, String const&, String const&, Core::OpenMode const&) override;
|
||||
virtual void prompt_save_file(i32, i32, i32, String const&, String const&, String const&, Core::OpenMode const&) override;
|
||||
|
||||
void prompt_helper(Optional<String> const&, Core::OpenMode const&);
|
||||
void prompt_helper(i32, Optional<String> const&, Core::OpenMode const&);
|
||||
RefPtr<GUI::Window> create_dummy_child_window(i32, i32);
|
||||
|
||||
enum class ShouldPrompt {
|
||||
No,
|
||||
Yes
|
||||
};
|
||||
void request_file_handler(i32, i32, String const&, Core::OpenMode const&, ShouldPrompt);
|
||||
void request_file_handler(i32, i32, i32, String const&, Core::OpenMode const&, ShouldPrompt);
|
||||
|
||||
virtual Messages::FileSystemAccessServer::ExposeWindowServerClientIdResponse expose_window_server_client_id() override;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue