34 Pipe::Pipe(
const std::function<std::string(
const std::string &)> & fi) : f(fi) {
35 if (pipe(p2c)==-1 || pipe(c2p)==-1) {
49 char length_buffer[4];
53 ssize_t bytesRead = read(p2c[0], length_buffer,
sizeof(length_buffer));
54 if (bytesRead <= 0)
break;
55 length = ntohl(*(uint32_t*)length_buffer);
57 char* buffer =
new char[length+1];
58 bytesRead = read(p2c[0], buffer, length);
59 buffer[bytesRead] =
'\0';
61 std::string cmd(buffer);
66 length = htonl(res.size());
67 write(c2p[1], &length,
sizeof(length));
68 write(c2p[1], res.c_str(), res.size());
87 uint32_t length = htonl(code.size());
88 write(p2c[1], &length,
sizeof(length));
89 write(p2c[1], code.c_str(), code.size());
91 char length_buffer[4];
92 read(c2p[0], length_buffer,
sizeof(length_buffer));
93 length = ntohl(*(uint32_t*)length_buffer);
95 char* buffer =
new char[length+1];
96 ssize_t bytesRead = read(c2p[0], buffer, length);
97 buffer[bytesRead] =
'\0';
98 std::string result(buffer);