userver: samples/static_service/main.cpp
Loading...
Searching...
No Matches
samples/static_service/main.cpp
#include <userver/concurrent/variable.hpp>
struct Message {
std::string name;
std::string message;
};
Message result;
result.name = json["name"].As<std::string>();
result.message = json["message"].As<std::string>();
return result;
}
json["name"] = value.name;
json["message"] = value.message;
return json.ExtractValue();
}
class MessagesHandler final : public server::handlers::HttpHandlerJsonBase {
public:
using HttpHandlerJsonBase::HttpHandlerJsonBase;
Value HandleRequestJsonThrow(const HttpRequest& request, const Value& json, RequestContext&) const override {
if (request.GetMethod() == server::http::HttpMethod::kPost) {
auto message = json.As<Message>();
auto locked_data = messages_.Lock();
locked_data->push_back(std::move(message));
return {};
}
std::vector<Message> snapshot;
{
auto locked_data = messages_.Lock();
snapshot = *locked_data;
}
}
private:
};
int main(int argc, char* argv[]) {
const auto component_list = components::MinimalServerComponentList()
.Append<MessagesHandler>("handler-messages")
.Append<components::FsCache>("fs-cache-main")
return utils::DaemonMain(argc, argv, component_list);
}