| 256 | namespace internal { |
| 257 | |
| 258 | static void cleanup( |
| 259 | const Future<Option<int>>& result, |
| 260 | Promise<Option<int>>* promise, |
| 261 | const Subprocess& subprocess) |
| 262 | { |
| 263 | CHECK(!result.isPending()); |
| 264 | CHECK(!result.isDiscarded()); |
| 265 | |
| 266 | if (result.isFailed()) { |
| 267 | promise->fail(result.failure()); |
| 268 | } else { |
| 269 | promise->set(result.get()); |
| 270 | } |
| 271 | |
| 272 | delete promise; |
| 273 | } |
| 274 | |
| 275 | |
| 276 | static void close(std::initializer_list<int_fd> fds) |