buffer and io fixes

This commit is contained in:
keldu.magnus 2021-06-30 15:41:56 +02:00
parent 9329700e66
commit 2b096bba1f
4 changed files with 4 additions and 7 deletions

View File

@ -1,7 +1,5 @@
#include "driver/io-unix.h"
#include <iostream>
#include <sstream>
namespace gin {
@ -211,8 +209,6 @@ Conveyor<Own<IoStream>> UnixNetworkAddress::connect() {
return criticalError("Couldn't connect");
}
std::cout << "connected" << std::endl;
return Conveyor<Own<IoStream>>{std::move(io_stream)};
}

View File

@ -350,7 +350,7 @@ public:
::setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &value, sizeof(value));
}
int error = ::bind(fd, &address.generic, address_length);
return error > 0;
return error < 0;
}
const struct ::sockaddr *getRaw() const { return &address.generic; }

View File

@ -250,6 +250,7 @@ size_t RingBuffer::readSegmentLength(size_t offset) const {
void RingBuffer::readAdvance(size_t bytes) {
size_t read_composite = readCompositeLength();
assert(bytes <= read_composite);
bytes = std::min(bytes, read_composite);
size_t advanced = read_position + bytes;

View File

@ -24,7 +24,7 @@ AsyncIoStream::AsyncIoStream(Own<IoStream> str)
void AsyncIoStream::read(void *buffer, size_t min_length, size_t max_length) {
GIN_ASSERT(buffer && max_length >= min_length && min_length > 0) { return; }
GIN_ASSERT(read_stepper.read_task.has_value()) { return; }
GIN_ASSERT(!read_stepper.read_task.has_value()) { return; }
read_stepper.read_task =
ReadTaskAndStepHelper::ReadIoTask{buffer, min_length, max_length, 0};
@ -46,7 +46,7 @@ Conveyor<void> AsyncIoStream::onReadDisconnected() {
void AsyncIoStream::write(const void *buffer, size_t length) {
GIN_ASSERT(buffer && length > 0) { return; }
GIN_ASSERT(write_stepper.write_task.has_value()) { return; }
GIN_ASSERT(!write_stepper.write_task.has_value()) { return; }
write_stepper.write_task =
WriteTaskAndStepHelper::WriteIoTask{buffer, length, 0};