6 #include <init.capnp.h> 7 #include <init.capnp.proxy.h> 15 #include <kj/common.h> 16 #include <kj/memory.h> 21 #include <system_error> 35 std::unique_ptr<Calculator>
makeCalculator(std::unique_ptr<Printer> printer)
override 37 return std::make_unique<CalculatorImpl>(std::move(printer));
42 static void LogPrint(
bool raise,
const std::string& message)
44 if (
raise)
throw std::runtime_error(message);
45 std::ofstream(
"debug.log", std::ios_base::app) << message << std::endl;
48 int main(
int argc,
char** argv)
51 std::cout <<
"Usage: mpcalculator <fd>\n";
55 if (std::from_chars(argv[1], argv[1] + strlen(argv[1]), fd).ec != std::errc{}) {
56 std::cerr << argv[1] <<
" is not a number or is larger than an int\n";
60 std::unique_ptr<Init>
init = std::make_unique<InitImpl>();
61 mp::ServeStream<InitInterface>(loop, fd, *
init);
Event loop implementation.
std::unique_ptr< Calculator > makeCalculator(std::unique_ptr< Printer > printer) override
std::unique_ptr< interfaces::Init > init
CalculatorImpl(std::unique_ptr< Printer > printer)
int main(int argc, char **argv)
static void LogPrint(bool raise, const std::string &message)
std::unique_ptr< Printer > m_printer
void solveEquation(const std::string &eqn) override