|
@@ -155,7 +155,53 @@ void con_handler::handle_read_login(const boost::system::error_code &err,
|
|
|
|
|
|
void con_handler::handle_read_command(const boost::system::error_code &err,
|
|
|
size_t bytes_transferred) {
|
|
|
- // TODO
|
|
|
+ if (!err) {
|
|
|
+ // set up json stuff
|
|
|
+ JSONCPP_STRING err;
|
|
|
+ Json::Value root;
|
|
|
+ Json::CharReaderBuilder builder;
|
|
|
+ const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
|
|
|
+
|
|
|
+ // parse data
|
|
|
+ if (!reader->parse(this->data, this->data + bytes_transferred, &root,
|
|
|
+ &err)) {
|
|
|
+ std::cerr << "Json error: " << err << std::endl << "data: " << this->data;
|
|
|
+ sock.close();
|
|
|
+ }
|
|
|
+
|
|
|
+ Json::Value answer;
|
|
|
+ Json::StreamWriterBuilder stringBuilder;
|
|
|
+
|
|
|
+ // check command
|
|
|
+ if (root["command"].compare("status") == 0) {
|
|
|
+ answer["command"] = "status";
|
|
|
+
|
|
|
+ // TODO answer a real status message
|
|
|
+ answer["response"] = "This is a status message :)";
|
|
|
+ const std::string answerString = Json::writeString(stringBuilder, answer);
|
|
|
+
|
|
|
+ // send answer
|
|
|
+ sock.async_write_some(buffer(answerString, max_length),
|
|
|
+ boost::bind(&con_handler::handle_write,
|
|
|
+ shared_from_this(), placeholders::error,
|
|
|
+ placeholders::bytes_transferred));
|
|
|
+
|
|
|
+ // read next data
|
|
|
+ sock.async_read_some(buffer(data, max_length),
|
|
|
+ boost::bind(&con_handler::handle_read_command,
|
|
|
+ shared_from_this(), placeholders::error,
|
|
|
+ placeholders::bytes_transferred));
|
|
|
+ } else {
|
|
|
+ // TODO handle error
|
|
|
+
|
|
|
+ // close connection
|
|
|
+ sock.close();
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ std::cerr << "error: " << err.message() << std::endl;
|
|
|
+ sock.close();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void con_handler::handle_write(const boost::system::error_code &err,
|