ソースを参照

Tino solvedthread problem

willi 5 年 前
コミット
8d370aca04
4 ファイル変更133 行追加126 行削除
  1. 97 116
      .idea/workspace.xml
  2. 4 0
      lib/include/ModuleHTTP.h
  3. 21 5
      lib/src/ModuleHTTP.cpp
  4. 11 5
      lib/test/test_ModuleHTTP.cpp

+ 97 - 116
.idea/workspace.xml

@@ -3,8 +3,8 @@
   <component name="CMakeRunConfigurationManager" shouldGenerate="true" shouldDeleteObsolete="true">
     <generated>
       <config projectName="mdd" targetName="gtest" />
-      <config projectName="mdd" targetName="auslegung_test" />
       <config projectName="mdd" targetName="gtest_main" />
+      <config projectName="mdd" targetName="auslegung_test" />
       <config projectName="mdd" targetName="mdd_lib" />
     </generated>
   </component>
@@ -15,9 +15,9 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="4ddbafad-b85e-492e-80ec-3c73ef45688f" name="Default Changelist" comment="">
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/lib/include/ModuleHTTP.h" beforeDir="false" afterPath="$PROJECT_DIR$/lib/include/ModuleHTTP.h" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/lib/src/ModuleHTTP.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/ModuleHTTP.cpp" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/lib/test/server/server.py" beforeDir="false" afterPath="$PROJECT_DIR$/lib/test/server/server.py" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/lib/test/test_ModuleHTTP.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/lib/test/test_ModuleHTTP.cpp" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/cmake-build-debug/" />
@@ -36,11 +36,11 @@
   </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/src/ModuleMath.cpp">
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/lib/src/ModuleHTTP.cpp">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="120">
-              <caret line="9" column="39" lean-forward="true" selection-start-line="9" selection-start-column="39" selection-end-line="9" selection-end-column="39" />
+            <state relative-caret-position="345">
+              <caret line="104" column="5" lean-forward="true" selection-start-line="104" selection-start-column="5" selection-end-line="104" selection-end-column="5" />
               <folding>
                 <element signature="e#0#23#0" expanded="true" />
               </folding>
@@ -49,25 +49,10 @@
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/test/test_ModuleMath.cpp">
+        <entry file="file:///usr/include/unistd.h">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="578">
-              <caret line="59" selection-start-line="59" selection-end-line="59" />
-              <folding>
-                <element signature="e#0#24#0" expanded="true" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/lib/src/ModuleHTTP.cpp">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="421">
-              <caret line="119" column="9" selection-start-line="119" selection-start-column="9" selection-end-line="119" selection-end-column="9" />
-              <folding>
-                <element signature="e#0#23#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="188">
+              <caret line="565" column="11" selection-start-line="565" selection-start-column="11" selection-end-line="565" selection-end-column="11" />
             </state>
           </provider>
         </entry>
@@ -75,7 +60,7 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file:///usr/include/c++/7/thread">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="202">
+            <state relative-caret-position="532">
               <caret line="134" selection-start-line="134" selection-end-line="134" />
             </state>
           </provider>
@@ -84,8 +69,8 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/lib/include/ModuleHTTP.h">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="345">
-              <caret line="23" column="16" selection-start-line="23" selection-start-column="16" selection-end-line="23" selection-end-column="16" />
+            <state relative-caret-position="390">
+              <caret line="26" column="22" selection-start-line="26" selection-start-column="22" selection-end-line="26" selection-end-column="22" />
               <folding>
                 <element signature="e#51#74#0" expanded="true" />
               </folding>
@@ -93,19 +78,10 @@
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/src/Input.cpp">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="330">
-              <caret line="31" column="5" lean-forward="true" selection-start-line="31" selection-start-column="5" selection-end-line="31" selection-end-column="5" />
-            </state>
-          </provider>
-        </entry>
-      </file>
       <file pinned="false" current-in-tab="false">
         <entry file="file:///usr/include/c++/7/bits/basic_string.h">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="202">
+            <state relative-caret-position="6285">
               <caret line="419" column="6" selection-start-line="419" selection-start-column="6" selection-end-line="419" selection-end-column="6" />
             </state>
           </provider>
@@ -114,8 +90,8 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/lib/test/test_ModuleHTTP.cpp">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="184">
-              <caret line="126" selection-start-line="126" selection-end-line="126" />
+            <state relative-caret-position="150">
+              <caret line="10" selection-start-line="10" selection-end-line="10" />
               <folding>
                 <element signature="e#0#24#0" expanded="true" />
                 <element signature="e#91#119#0" expanded="true" />
@@ -124,6 +100,15 @@
           </provider>
         </entry>
       </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/thirdparty/cpp-httplib/httplib.h">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="177">
+              <caret line="4092" column="5" selection-start-line="4092" selection-start-column="2" selection-end-line="4092" selection-end-column="5" />
+            </state>
+          </provider>
+        </entry>
+      </file>
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/lib/include/IInput.h">
           <provider selected="true" editor-type-id="text-editor">
@@ -139,7 +124,7 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/lib/src/ModuleBase.cpp">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="412">
+            <state relative-caret-position="352">
               <caret line="61" selection-start-line="61" selection-end-line="61" />
             </state>
           </provider>
@@ -161,6 +146,7 @@
       <find>Gener</find>
       <find>st</find>
       <find>std::cout</find>
+      <find>try</find>
     </findStrings>
   </component>
   <component name="Git.Settings">
@@ -239,6 +225,7 @@
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
+      <pane id="Scope" />
       <pane id="ProjectPane">
         <subPane>
           <expand>
@@ -278,14 +265,6 @@
               <item name="lib" type="462c0819:PsiDirectoryNode" />
               <item name="test" type="462c0819:PsiDirectoryNode" />
             </path>
-            <path>
-              <item name="mdd" type="b2602c69:ProjectViewProjectNode" />
-              <item name="master_thesis_ws" type="47feb1d3:ProjectViewModuleNode" />
-              <item name="master_thesis_ws" type="462c0819:PsiDirectoryNode" />
-              <item name="lib" type="462c0819:PsiDirectoryNode" />
-              <item name="test" type="462c0819:PsiDirectoryNode" />
-              <item name="server" type="462c0819:PsiDirectoryNode" />
-            </path>
             <path>
               <item name="mdd" type="b2602c69:ProjectViewProjectNode" />
               <item name="master_thesis_ws" type="47feb1d3:ProjectViewModuleNode" />
@@ -296,7 +275,6 @@
           <select />
         </subPane>
       </pane>
-      <pane id="Scope" />
     </panes>
   </component>
   <component name="PropertiesComponent">
@@ -436,43 +414,45 @@
       <workItem from="1590497401566" duration="1517000" />
       <workItem from="1590576799306" duration="7324000" />
       <workItem from="1590657068263" duration="18515000" />
+      <workItem from="1590678409969" duration="72000" />
+      <workItem from="1590685036534" duration="3040000" />
     </task>
     <servers />
   </component>
   <component name="TestHistory">
-    <history-entry file="All_in_auslegung_test - 2020.05.28 at 16h 08m 43s.xml">
+    <history-entry file="All_in_auslegung_test - 2020.05.28 at 19h 10m 21s.xml">
       <configuration name="All in auslegung_test" configurationId="CMakeGoogleTestRunConfigurationType" />
     </history-entry>
-    <history-entry file="All_in_auslegung_test - 2020.05.28 at 16h 09m 36s.xml">
+    <history-entry file="All_in_auslegung_test - 2020.05.28 at 19h 10m 35s.xml">
       <configuration name="All in auslegung_test" configurationId="CMakeGoogleTestRunConfigurationType" />
     </history-entry>
-    <history-entry file="All_in_auslegung_test - 2020.05.28 at 16h 13m 28s.xml">
+    <history-entry file="All_in_auslegung_test - 2020.05.28 at 19h 11m 28s.xml">
       <configuration name="All in auslegung_test" configurationId="CMakeGoogleTestRunConfigurationType" />
     </history-entry>
-    <history-entry file="All_in_auslegung_test - 2020.05.28 at 16h 13m 35s.xml">
+    <history-entry file="All_in_auslegung_test - 2020.05.28 at 19h 33m 43s.xml">
       <configuration name="All in auslegung_test" configurationId="CMakeGoogleTestRunConfigurationType" />
     </history-entry>
-    <history-entry file="All_in_auslegung_test - 2020.05.28 at 16h 13m 58s.xml">
+    <history-entry file="All_in_auslegung_test - 2020.05.28 at 19h 33m 51s.xml">
       <configuration name="All in auslegung_test" configurationId="CMakeGoogleTestRunConfigurationType" />
     </history-entry>
-    <history-entry file="All_in_auslegung_test - 2020.05.28 at 16h 16m 51s.xml">
+    <history-entry file="All_in_auslegung_test - 2020.05.28 at 19h 35m 24s.xml">
       <configuration name="All in auslegung_test" configurationId="CMakeGoogleTestRunConfigurationType" />
     </history-entry>
-    <history-entry file="All_in_auslegung_test - 2020.05.28 at 16h 17m 10s.xml">
+    <history-entry file="All_in_auslegung_test - 2020.05.28 at 19h 35m 48s.xml">
       <configuration name="All in auslegung_test" configurationId="CMakeGoogleTestRunConfigurationType" />
     </history-entry>
-    <history-entry file="All_in_auslegung_test - 2020.05.28 at 16h 17m 47s.xml">
+    <history-entry file="All_in_auslegung_test - 2020.05.28 at 19h 37m 06s.xml">
       <configuration name="All in auslegung_test" configurationId="CMakeGoogleTestRunConfigurationType" />
     </history-entry>
-    <history-entry file="All_in_auslegung_test - 2020.05.28 at 16h 18m 35s.xml">
+    <history-entry file="All_in_auslegung_test - 2020.05.28 at 19h 37m 51s.xml">
       <configuration name="All in auslegung_test" configurationId="CMakeGoogleTestRunConfigurationType" />
     </history-entry>
-    <history-entry file="All_in_auslegung_test - 2020.05.28 at 16h 19m 46s.xml">
+    <history-entry file="All_in_auslegung_test - 2020.05.28 at 19h 38m 34s.xml">
       <configuration name="All in auslegung_test" configurationId="CMakeGoogleTestRunConfigurationType" />
     </history-entry>
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="195163000" />
+    <option name="totallyTimeSpent" value="198275000" />
   </component>
   <component name="TodoView" selected-index="1">
     <todo-panel id="selected-file">
@@ -485,20 +465,21 @@
   </component>
   <component name="ToolWindowManager">
     <frame x="0" y="-2" width="1920" height="1082" extended-state="6" />
+    <editor active="true" />
     <layout>
-      <window_info content_ui="combo" id="Project" order="0" sideWeight="0.49921754" visible="true" weight="0.2614728" />
+      <window_info active="true" content_ui="combo" id="Project" order="0" sideWeight="0.49921754" visible="true" weight="0.2678762" />
       <window_info id="Structure" order="1" sideWeight="0.5007825" side_tool="true" weight="0.22572039" />
       <window_info id="Favorites" order="2" sideWeight="0.5007825" side_tool="true" weight="0.22572039" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" />
-      <window_info anchor="bottom" id="Run" order="2" weight="0.3557188" />
+      <window_info anchor="bottom" id="Run" order="2" visible="true" weight="0.3557188" />
       <window_info anchor="bottom" id="Debug" order="3" weight="0.3336831" />
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
       <window_info anchor="bottom" id="TODO" order="6" weight="0.32948583" />
       <window_info anchor="bottom" id="Database Changes" order="7" />
       <window_info anchor="bottom" id="Messages" order="8" weight="0.3231899" />
-      <window_info anchor="bottom" id="Terminal" order="9" weight="0.2518363" />
+      <window_info anchor="bottom" id="Terminal" order="9" weight="0.2513089" />
       <window_info anchor="bottom" id="Event Log" order="10" side_tool="true" />
       <window_info anchor="bottom" id="Version Control" order="11" weight="0.32948583" />
       <window_info anchor="bottom" id="CMake" order="12" weight="0.32948583" />
@@ -570,18 +551,18 @@
       <breakpoints>
         <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
           <url>file://$PROJECT_DIR$/lib/test/test_ModuleHTTP.cpp</url>
-          <line>145</line>
+          <line>151</line>
           <option name="timeStamp" value="64" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
           <url>file://$PROJECT_DIR$/lib/test/test_ModuleHTTP.cpp</url>
-          <line>126</line>
+          <line>132</line>
           <option name="timeStamp" value="69" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
-          <url>file://$PROJECT_DIR$/lib/src/ModuleHTTP.cpp</url>
-          <line>120</line>
-          <option name="timeStamp" value="70" />
+          <url>file://$PROJECT_DIR$/lib/test/test_ModuleHTTP.cpp</url>
+          <line>131</line>
+          <option name="timeStamp" value="72" />
         </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
@@ -592,13 +573,6 @@
     </watches-manager>
   </component>
   <component name="editorHistoryManager">
-    <entry file="file:///usr/include/c++/7/bits/vector.tcc">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="164">
-          <caret line="68" selection-start-line="68" selection-end-line="68" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/lib/README.MD">
       <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
         <state split_layout="SPLIT">
@@ -761,13 +735,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/thirdparty/cpp-httplib/httplib.h">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="3150">
-          <caret line="210" selection-start-line="210" selection-end-line="210" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/.gitignore">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="30">
@@ -867,85 +834,99 @@
         </state>
       </provider>
     </entry>
-    <entry file="file:///usr/include/c++/7/bits/basic_string.h">
+    <entry file="file://$PROJECT_DIR$/lib/test/server/.gitignore">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="202">
-          <caret line="419" column="6" selection-start-line="419" selection-start-column="6" selection-end-line="419" selection-end-column="6" />
+        <state relative-caret-position="15">
+          <caret line="1" column="11" lean-forward="true" selection-start-line="1" selection-start-column="11" selection-end-line="1" selection-end-column="11" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/ModuleBase.cpp">
+    <entry file="file://$PROJECT_DIR$/lib/src/ModuleMath.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="412">
-          <caret line="61" selection-start-line="61" selection-end-line="61" />
+        <state relative-caret-position="135">
+          <caret line="9" column="39" selection-start-line="9" selection-start-column="39" selection-end-line="9" selection-end-column="39" />
+          <folding>
+            <element signature="e#0#23#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/test/server/.gitignore">
+    <entry file="file://$PROJECT_DIR$/lib/test/test_ModuleMath.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="15">
-          <caret line="1" column="11" lean-forward="true" selection-start-line="1" selection-start-column="11" selection-end-line="1" selection-end-column="11" />
+        <state relative-caret-position="885">
+          <caret line="59" selection-start-line="59" selection-end-line="59" />
+          <folding>
+            <element signature="e#0#24#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/include/IInput.h">
+    <entry file="file://$PROJECT_DIR$/lib/src/Input.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="120">
-          <caret line="8" column="28" selection-start-line="8" selection-start-column="28" selection-end-line="8" selection-end-column="28" />
-          <folding>
-            <element signature="e#43#63#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="465">
+          <caret line="31" column="5" selection-start-line="31" selection-start-column="5" selection-end-line="31" selection-end-column="5" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/Input.cpp">
+    <entry file="file:///usr/include/c++/7/bits/basic_string.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="330">
-          <caret line="31" column="5" lean-forward="true" selection-start-line="31" selection-start-column="5" selection-end-line="31" selection-end-column="5" />
+        <state relative-caret-position="6285">
+          <caret line="419" column="6" selection-start-line="419" selection-start-column="6" selection-end-line="419" selection-end-column="6" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/ModuleMath.cpp">
+    <entry file="file://$PROJECT_DIR$/lib/include/IInput.h">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="120">
-          <caret line="9" column="39" lean-forward="true" selection-start-line="9" selection-start-column="39" selection-end-line="9" selection-end-column="39" />
+          <caret line="8" column="28" selection-start-line="8" selection-start-column="28" selection-end-line="8" selection-end-column="28" />
           <folding>
-            <element signature="e#0#23#0" expanded="true" />
+            <element signature="e#43#63#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/test/test_ModuleMath.cpp">
+    <entry file="file://$PROJECT_DIR$/thirdparty/cpp-httplib/httplib.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="578">
-          <caret line="59" selection-start-line="59" selection-end-line="59" />
-          <folding>
-            <element signature="e#0#24#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="177">
+          <caret line="4092" column="5" selection-start-line="4092" selection-start-column="2" selection-end-line="4092" selection-end-column="5" />
         </state>
       </provider>
     </entry>
     <entry file="file:///usr/include/c++/7/thread">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="202">
+        <state relative-caret-position="532">
           <caret line="134" selection-start-line="134" selection-end-line="134" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/lib/include/ModuleHTTP.h">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="345">
-          <caret line="23" column="16" selection-start-line="23" selection-start-column="16" selection-end-line="23" selection-end-column="16" />
+        <state relative-caret-position="390">
+          <caret line="26" column="22" selection-start-line="26" selection-start-column="22" selection-end-line="26" selection-end-column="22" />
           <folding>
             <element signature="e#51#74#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
+    <entry file="file:///usr/include/unistd.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="188">
+          <caret line="565" column="11" selection-start-line="565" selection-start-column="11" selection-end-line="565" selection-end-column="11" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/lib/src/ModuleBase.cpp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="352">
+          <caret line="61" selection-start-line="61" selection-end-line="61" />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/lib/test/test_ModuleHTTP.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="184">
-          <caret line="126" selection-start-line="126" selection-end-line="126" />
+        <state relative-caret-position="150">
+          <caret line="10" selection-start-line="10" selection-end-line="10" />
           <folding>
             <element signature="e#0#24#0" expanded="true" />
             <element signature="e#91#119#0" expanded="true" />
@@ -955,8 +936,8 @@
     </entry>
     <entry file="file://$PROJECT_DIR$/lib/src/ModuleHTTP.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="421">
-          <caret line="119" column="9" selection-start-line="119" selection-start-column="9" selection-end-line="119" selection-end-column="9" />
+        <state relative-caret-position="345">
+          <caret line="104" column="5" lean-forward="true" selection-start-line="104" selection-start-column="5" selection-end-line="104" selection-end-column="5" />
           <folding>
             <element signature="e#0#23#0" expanded="true" />
           </folding>

+ 4 - 0
lib/include/ModuleHTTP.h

@@ -3,6 +3,8 @@
 
 #include "ModuleBase.h"
 #include <httplib.h>
+#include <unistd.h>
+
 
 using namespace httplib;
 
@@ -12,6 +14,7 @@ namespace mdd{
         std::string _fname;
         std::string _id;
         int _port;
+        pid_t _child_pid = 0;
     protected:
         bool connect();
         std::string str_to_json(const std::string& input);
@@ -21,6 +24,7 @@ namespace mdd{
 
     public:
         ModuleHTTP(std::string fname, std::string id, int port);
+        ~ModuleHTTP();
         bool update() override;
     };
 }

+ 21 - 5
lib/src/ModuleHTTP.cpp

@@ -2,9 +2,10 @@
 #include <httplib.h>
 #include <iostream>
 #include <thread>
+#include <wait.h>
+#include <chrono>
 
 using namespace httplib;
-
 namespace mdd{
 
     bool ModuleHTTP::connect(){
@@ -114,16 +115,31 @@ namespace mdd{
         _port(port)
     {
         setType("HTTP");
+
         if(!fname.empty()){
-            std::string command = "python3 " + fname+"&";
-            system(command.c_str());
+            _child_pid = fork();
+            if(_child_pid == 0)
+            {
+                char*const arghs[] = {"python3", (char*const)fname.c_str(), NULL};
+                execvp("python3", arghs);
+            }
         }
         while(!connect()){
-            usleep(1000);
+            std::this_thread::sleep_for(std::chrono::microseconds(500));
         }
         updateLayout();
     }
 
+    ModuleHTTP::~ModuleHTTP()
+    {
+        if(_child_pid != 0)
+        {
+            kill(_child_pid, SIGINT);
+            int status;
+            waitpid(_child_pid, &status, 0);
+        }
+    }
+
     bool ModuleHTTP::update() {
         Client cli(_id, _port);
         json new_inputs;
@@ -137,7 +153,7 @@ namespace mdd{
                                 return true; // return 'false' if you want to cancel the request.
                             },"application/json");
         while(!connect()){
-            usleep(1000);
+            std::this_thread::sleep_for(std::chrono::microseconds(500));
         }
         updateOutputs();
     }

+ 11 - 5
lib/test/test_ModuleHTTP.cpp

@@ -42,10 +42,15 @@ void serverThread()
     });
 
     svr.Get("/status", [&](const Request& req, Response& res) {
-        json body;
-        body["status"] = status;
-        std::cout << status << std::endl;
-        res.set_content(body.dump(), "application/json");
+        try{
+            json body;
+            body["status"] = status;
+            std::cout << status << std::endl;
+            res.set_content(body.dump(), "application/json");
+        }
+        catch(std::exception){
+            std::cout << "Exeption caught"<<std::endl;
+        }
     });
 
     svr.Post("/update",
@@ -73,9 +78,11 @@ void serverThread()
     );
 
     svr.Get("/stop", [&](const Request& req, Response& res) {
+        std::cout << "server stoped"<<std::endl;
         svr.stop();
     });
     svr.listen("localhost", 8888);
+    std::cout << "server closed"<<std::endl;
 }
 
 TEST(ModuleHTTP, updateLayout_intern){
@@ -123,7 +130,6 @@ TEST(ModuleHTTP, updateLayout_extern){
 
 TEST(ModuleHTTP, update_intern){
     std::thread server (serverThread);
-    usleep(500000);
     ModuleHTTP module("", "localhost", 8888);
     auto inputs_types = module.getInputs();
     auto inputs_ids = module.getInputIDs();