1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#pragma once
#include <lix/libutil/async-io.hh>
#include <lix/libutil/file-descriptor.hh>
#include <cstdio>
#include <string>
#include <string_view>
[[nodiscard]] int tryWriteLine(int fd, std::string s);
class LineReader {
public:
LineReader(int fd);
~LineReader();
LineReader(LineReader &&other);
[[nodiscard]] std::string_view readLine();
private:
FILE *stream = nullptr;
char *buffer = nullptr;
size_t len = 0;
};
class AsyncLineReader {
public:
AsyncLineReader(nix::AutoCloseFD fd);
kj::Promise<nix::Result<std::optional<std::string>>> readLine();
private:
nix::AsyncFdIoStream stream;
std::string buffer;
kj::Array<char> readBuffer;
};
|