CppServer  1.0.0.0
C++ Server Library
survey_server.h
Go to the documentation of this file.
1 
9 #ifndef CPPSERVER_NANOMSG_SURVEY_SERVER_H
10 #define CPPSERVER_NANOMSG_SURVEY_SERVER_H
11 
12 #include "server.h"
13 
14 namespace CppServer {
15 namespace Nanomsg {
16 
18 
29 class SurveyServer : public Server
30 {
31 public:
33 
37  explicit SurveyServer(const std::string& address, int deadline = 1000)
38  : Server(CppServer::Nanomsg::Domain::Std, CppServer::Nanomsg::Protocol::Surveyor, address, false)
39  {
40  socket().SetSocketOption(NN_SURVEYOR, NN_SURVEYOR_DEADLINE, &deadline, sizeof(deadline));
41  }
42  SurveyServer(const SurveyServer&) = delete;
43  SurveyServer(SurveyServer&&) = default;
44  virtual ~SurveyServer() = default;
45 
46  SurveyServer& operator=(const SurveyServer&) = delete;
47  SurveyServer& operator=(SurveyServer&&) = default;
48 
50 
54  std::tuple<size_t, bool> ReceiveSurvey(Message& message);
55 
57 
61  std::tuple<size_t, bool> TryReceiveSurvey(Message& message);
62 
63 private:
64  using Server::Receive;
65  using Server::TryReceive;
68  using Server::onIdle;
69  using Server::onReceived;
70 };
71 
74 } // namespace Nanomsg
75 } // namespace CppServer
76 
77 #endif // CPPSERVER_NANOMSG_SURVEY_SERVER_H
SurveyServer & operator=(const SurveyServer &)=delete
bool SetSocketOption(int level, int option, const void *value, size_t size)
Set the socket option.
Definition: socket.cpp:136
Nanomsg server.
Definition: server.h:29
Nanomsg message.
Definition: message.h:29
size_t TryReceive(Message &message)
Try to receive a message from the client in non-blocking mode.
Definition: server.cpp:211
Socket & socket() noexcept
Get the Nanomsg socket.
Definition: server.h:48
C++ Server project definitions.
Definition: asio.h:24
std::tuple< size_t, bool > ReceiveSurvey(Message &message)
Receive a respond to the survey from the clients in non-blocking mode.
Nanomsg survey server.
Definition: survey_server.h:29
virtual void onThreadCleanup()
Cleanup thread handler.
Definition: server.h:133
virtual void onIdle()
Handle server idle notification.
Definition: server.h:141
virtual void onThreadInitialize()
Initialize thread handler.
Definition: server.h:128
Nanomsg server definition.
Used to send the survey. The survey is delivered to all the connected respondents.
virtual void onReceived(Message &message)
Handle message received notification.
Definition: server.h:147
Protocol
Nanomsg protocol.
Definition: nanomsg.h:56
Domain
Nanomsg domain.
Definition: nanomsg.h:41
size_t Receive(Message &message)
Receive a message from the client.
Definition: server.cpp:189
Standard full-blown socket.
std::tuple< size_t, bool > TryReceiveSurvey(Message &message)
Try to receive a respond to the survey from the clients in non-blocking mode.
SurveyServer(const std::string &address, int deadline=1000)
Initialize server with a given endpoint address.
Definition: survey_server.h:37