mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 16:18:12 +00:00
Kernel: read()/write() should respect timeouts when used on a sockets
Move timeout management to the ReadBlocker and WriteBlocker classes. Also get rid of the specialized ReceiveBlocker since it no longer does anything that ReadBlocker can't do.
This commit is contained in:
parent
d1721c761e
commit
137a45dff2
7 changed files with 48 additions and 57 deletions
|
@ -167,13 +167,6 @@ public:
|
|||
virtual const char* state_string() const override { return "Accepting"; }
|
||||
};
|
||||
|
||||
class ReceiveBlocker final : public FileDescriptionBlocker {
|
||||
public:
|
||||
explicit ReceiveBlocker(const FileDescription&);
|
||||
virtual bool should_unblock(Thread&, time_t, long) override;
|
||||
virtual const char* state_string() const override { return "Receiving"; }
|
||||
};
|
||||
|
||||
class ConnectBlocker final : public FileDescriptionBlocker {
|
||||
public:
|
||||
explicit ConnectBlocker(const FileDescription&);
|
||||
|
@ -186,6 +179,8 @@ public:
|
|||
explicit WriteBlocker(const FileDescription&);
|
||||
virtual bool should_unblock(Thread&, time_t, long) override;
|
||||
virtual const char* state_string() const override { return "Writing"; }
|
||||
private:
|
||||
Optional<timeval> m_deadline;
|
||||
};
|
||||
|
||||
class ReadBlocker final : public FileDescriptionBlocker {
|
||||
|
@ -193,6 +188,8 @@ public:
|
|||
explicit ReadBlocker(const FileDescription&);
|
||||
virtual bool should_unblock(Thread&, time_t, long) override;
|
||||
virtual const char* state_string() const override { return "Reading"; }
|
||||
private:
|
||||
Optional<timeval> m_deadline;
|
||||
};
|
||||
|
||||
class ConditionBlocker final : public Blocker {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue