51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#ifndef YDI_SERVER_H
|
|
#define YDI_SERVER_H
|
|
|
|
#include "ydi_networking.h"
|
|
#include <cassert>
|
|
#include <core/io/image.h>
|
|
#include <core/string/ustring.h>
|
|
#include <core/templates/vector.h>
|
|
#include <zmq_addon.hpp>
|
|
|
|
namespace ydi::server {
|
|
void open();
|
|
void close();
|
|
namespace receive {
|
|
bool isRevealed(ClueID id);
|
|
Ref<Image> clueImage(ClueID id);
|
|
}
|
|
namespace send {
|
|
void announceConclusion(ClueID method, ClueID motive, ClueID murderer);
|
|
}
|
|
}
|
|
|
|
template <typename TArg>
|
|
void extend_multipart(zmq::multipart_t &, TArg const &arg);
|
|
|
|
template <>
|
|
void extend_multipart(zmq::multipart_t &mpart, std::string const &string) {
|
|
mpart.addstr(string);
|
|
}
|
|
|
|
template <typename TArg>
|
|
void extend_multipart(zmq::multipart_t &mpart, TArg const &arg) {
|
|
std::string as_string{ std::to_string(arg) };
|
|
mpart.addstr(as_string);
|
|
}
|
|
|
|
template <typename TArg, typename... TArgs>
|
|
void extend_multipart(zmq::multipart_t &mpart, TArg const &arg, TArgs const &... args) {
|
|
extend_multipart(mpart, arg);
|
|
extend_multipart(mpart, arg, args...);
|
|
}
|
|
|
|
template <typename TArg, typename... TArgs>
|
|
zmq::multipart_t make_multipart(std::string const &target, TArg const &arg, TArgs const &... args) {
|
|
zmq::multipart_t mpart{};
|
|
mpart.addstr(target);
|
|
extend_multipart(mpart, arg, args...);
|
|
return mpart;
|
|
}
|
|
|
|
#endif // !YDI_SERVER_H
|