1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 18:07:34 +00:00

Kernel: Actually send things between the socket endpoints.

This commit is contained in:
Andreas Kling 2019-02-14 16:01:08 +01:00
parent b20a7aca61
commit eb1c721ef3
5 changed files with 53 additions and 3 deletions

View file

@ -167,6 +167,8 @@ ssize_t FileDescriptor::read(Process& process, byte* buffer, size_t count)
// FIXME: What should happen to m_currentOffset?
return m_device->read(process, buffer, count);
}
if (m_socket)
return m_socket->read(m_socket_role, buffer, count);
ASSERT(inode());
ssize_t nread = inode()->read_bytes(m_current_offset, count, buffer, this);
m_current_offset += nread;
@ -183,6 +185,8 @@ ssize_t FileDescriptor::write(Process& process, const byte* data, size_t size)
// FIXME: What should happen to m_currentOffset?
return m_device->write(process, data, size);
}
if (m_socket)
return m_socket->write(m_socket_role, data, size);
ASSERT(m_inode);
ssize_t nwritten = m_inode->write_bytes(m_current_offset, size, data, this);
m_current_offset += nwritten;
@ -197,6 +201,8 @@ bool FileDescriptor::can_write(Process& process)
}
if (m_device)
return m_device->can_write(process);
if (m_socket)
return m_socket->can_write(m_socket_role);
return true;
}
@ -208,6 +214,8 @@ bool FileDescriptor::can_read(Process& process)
}
if (m_device)
return m_device->can_read(process);
if (m_socket)
return m_socket->can_read(m_socket_role);
return true;
}