void FlatBufferClient::handleMessage(const hyperionnet::Request * req) { const void* reqPtr; if ((reqPtr = req->command_as_Color()) != nullptr) { handleColorCommand(static_cast<const hyperionnet::Color*>(reqPtr)); } else if ((reqPtr = req->command_as_Image()) != nullptr) { handleImageCommand(static_cast<const hyperionnet::Image*>(reqPtr)); } else if ((reqPtr = req->command_as_Clear()) != nullptr) { handleClearCommand(static_cast<const hyperionnet::Clear*>(reqPtr)); } else if ((reqPtr = req->command_as_Register()) != nullptr) { handleRegisterCommand(static_cast<const hyperionnet::Register*>(reqPtr)); } else { sendErrorReply("Received invalid packet."); } }
void JsonClientConnection::handleMessage(const std::string &messageString) { Json::Reader reader; Json::Value message; if (!reader.parse(messageString, message, false)) { sendErrorReply("Error while parsing json: " + reader.getFormattedErrorMessages()); return; } // check basic message std::string errors; if (!checkJson(message, ":schema", errors)) { sendErrorReply("Error while validating json: " + errors); return; } // check specific message const std::string command = message["command"].asString(); if (!checkJson(message, QString(":schema-%1").arg(QString::fromStdString(command)), errors)) { sendErrorReply("Error while validating json: " + errors); return; } // switch over all possible commands and handle them if (command == "color") handleColorCommand(message); else if (command == "image") handleImageCommand(message); else if (command == "serverinfo") handleServerInfoCommand(message); else if (command == "clear") handleClearCommand(message); else if (command == "clearall") handleClearallCommand(message); else if (command == "transform") handleTransformCommand(message); else handleNotImplemented(); }
void ProtoClientConnection::handleMessage(const proto::HyperionRequest & message) { // forward messages emit newMessage(&message); switch (message.command()) { case proto::HyperionRequest::COLOR: if (!message.HasExtension(proto::ColorRequest::colorRequest)) { sendErrorReply("Received COLOR command without ColorRequest"); break; } handleColorCommand(message.GetExtension(proto::ColorRequest::colorRequest)); break; case proto::HyperionRequest::IMAGE: if (!message.HasExtension(proto::ImageRequest::imageRequest)) { sendErrorReply("Received IMAGE command without ImageRequest"); break; } handleImageCommand(message.GetExtension(proto::ImageRequest::imageRequest)); break; case proto::HyperionRequest::CLEAR: if (!message.HasExtension(proto::ClearRequest::clearRequest)) { sendErrorReply("Received CLEAR command without ClearRequest"); break; } handleClearCommand(message.GetExtension(proto::ClearRequest::clearRequest)); break; case proto::HyperionRequest::CLEARALL: handleClearallCommand(); break; default: handleNotImplemented(); } }