소스 검색

Поднята версия c++

Denis V. Dedkov 2 달 전
부모
커밋
c83cc7cdbf
2개의 변경된 파일55개의 추가작업 그리고 52개의 파일을 삭제
  1. 1 1
      Dockerfile
  2. 54 51
      main.cpp

+ 1 - 1
Dockerfile

@@ -4,7 +4,7 @@ LABEL stage=builder
 WORKDIR /build
 COPY . .
 
-RUN cmake CMakeLists.txt -DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_BUILD_TYPE:STRING=MinSizeRel -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++-17 && cmake --build . --target all
+RUN cmake CMakeLists.txt -DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_BUILD_TYPE:STRING=MinSizeRel -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++-20 && cmake --build . --target all
 
 FROM scratch
 

+ 54 - 51
main.cpp

@@ -1,5 +1,5 @@
-#include <iostream>
 #include <httplib.h>
+#include <iostream>
 #include <noolite.h>
 
 namespace App {
@@ -10,9 +10,10 @@ constexpr auto ContentType = "application/json";
 
 static httplib::Server *srv = nullptr;
 
-}
+} // namespace App
 
-void signalHandler(int signum) {
+void signalHandler(int signum)
+{
     std::cout << "\n\nInterrupt signal (" << signum << ") received.\n";
 
     if (App::srv) {
@@ -29,54 +30,56 @@ int main(int argc, char *argv[])
 
     App::srv = new httplib::Server();
 
-    const std::map< std::string, noolitelib::Command > commands = {
-        { "off", noolitelib::Off },
-        { "decraseBrightnes", noolitelib::DecraseBrightnes },
-        { "on", noolitelib::On },
-        { "incraseBrightnes", noolitelib::IncreaseBrightnes },
-        { "switch", noolitelib::Switch },
-        { "invertBrightnes", noolitelib::InvertBrightnes },
-        { "set", noolitelib::Set },
-        { "callScenario", noolitelib::CallScenario },
-        { "saveScenario", noolitelib::SaveScenario },
-        { "unbind", noolitelib::Unbind },
-        { "stopColorSelection", noolitelib::StopColorSelection },
-        { "bind", noolitelib::Bind },
-        { "colorSelection", noolitelib::ColorSelection },
-        { "colorSwitch", noolitelib::ColorSwitch },
-        { "modeSwitch", noolitelib::ModeSwitch },
-        { "effectSpeed", noolitelib::EffectSpeed }
-    };
-
-    App::srv->Get("/noolite/:command/:channel", [&commands](const httplib::Request &req, httplib::Response &res) {
-
-        auto formatResult = [](bool successful, const std::string &text) -> std::string {
-            std::stringstream res;
-            res << "{\"" << (successful ? "result" : "error")
-                << "\":\"" << (successful ? "ok" : text) << "\"";
-            if (successful) {
-                res << (",\"command\":\"" + text + "\"");
-            }
-            res << "}";
-
-            return res.str();
-        };
-
-        auto command = req.path_params.at("command");
-        if (!commands.count(command)) {
-            res.set_content(formatResult(false, "Command not found"), App::ContentType);
-            return;
-        }
-
-        auto channel = req.path_params.at("channel");
-
-        noolitelib::Noolite adapter;
-        if (adapter.sendCommand(std::stoi(channel), commands.at(command))) {
-            res.set_content(formatResult(true, command + " " + channel), App::ContentType);
-        } else {
-            res.set_content(formatResult(false, "Device error"), App::ContentType);
-        }
-    });
+    const std::map<std::string, noolitelib::Command> commands
+        = {{"off", noolitelib::Off},
+           {"decraseBrightnes", noolitelib::DecraseBrightnes},
+           {"on", noolitelib::On},
+           {"incraseBrightnes", noolitelib::IncreaseBrightnes},
+           {"switch", noolitelib::Switch},
+           {"invertBrightnes", noolitelib::InvertBrightnes},
+           {"set", noolitelib::Set},
+           {"callScenario", noolitelib::CallScenario},
+           {"saveScenario", noolitelib::SaveScenario},
+           {"unbind", noolitelib::Unbind},
+           {"stopColorSelection", noolitelib::StopColorSelection},
+           {"bind", noolitelib::Bind},
+           {"colorSelection", noolitelib::ColorSelection},
+           {"colorSwitch", noolitelib::ColorSwitch},
+           {"modeSwitch", noolitelib::ModeSwitch},
+           {"effectSpeed", noolitelib::EffectSpeed}};
+
+    App::srv->Get("/noolite/:command/:channel",
+                  [&commands](const httplib::Request &req, httplib::Response &res) {
+                      auto formatResult = [](bool successful,
+                                             const std::string &text) -> std::string {
+                          std::stringstream res;
+                          res << "{\"" << (successful ? "result" : "error") << "\":\""
+                              << (successful ? "ok" : text) << "\"";
+                          if (successful) {
+                              res << (",\"command\":\"" + text + "\"");
+                          }
+                          res << "}";
+
+                          return res.str();
+                      };
+
+                      auto command = req.path_params.at("command");
+                      if (!commands.count(command)) {
+                          res.set_content(formatResult(false, "Command not found"),
+                                          App::ContentType);
+                          return;
+                      }
+
+                      auto channel = req.path_params.at("channel");
+
+                      noolitelib::Noolite adapter;
+                      if (adapter.sendCommand(std::stoi(channel), commands.at(command))) {
+                          res.set_content(formatResult(true, command + " " + channel),
+                                          App::ContentType);
+                      } else {
+                          res.set_content(formatResult(false, "Device error"), App::ContentType);
+                      }
+                  });
 
     App::srv->set_mount_point("/static", "/var/www/static");