#include <iostream>
#include <memory>
{
public:
protected:
{
std::cout << "Nanomsg survey server started!" << std::endl;
}
{
std::cout << "Nanomsg survey server stopped!" << std::endl;
}
void onError(
int error,
const std::string& message)
override {
std::cout << "Nanomsg survey server caught an error with code " << error << "': " << message << std::endl;
}
};
int main(int argc, char** argv)
{
std::string address = "tcp://127.0.0.1:6670";
if (argc > 1)
address = std::atoi(argv[1]);
std::cout << "Nanomsg survey server address: " << address << std::endl;
auto server = std::make_shared<ExampleSurveyServer>(address);
std::cout << "Server starting...";
server->Start();
std::cout << "Done!" << std::endl;
std::cout << "Press Enter to stop the server or '!' to restart the server..." << std::endl;
std::string line;
while (getline(std::cin, line))
{
if (line.empty())
break;
if (line == "!")
{
std::cout << "Server restarting...";
server->Restart();
std::cout << "Done!" << std::endl;
continue;
}
if (server->Send(line) == line.size())
{
std::cout << "Survey started! Question: " << line << std::endl;
while (true)
{
std::tuple<size_t, bool> result = server->ReceiveSurvey(message);
if (std::get<0>(result) > 0)
std::cout << "Answer: " << message << std::endl;
if (std::get<1>(result))
{
std::cout << "Survey finished!" << std::endl;
break;
}
}
}
}
std::cout << "Server stopping...";
server->Stop();
std::cout << "Done!" << std::endl;
return 0;
}