Parcourir la source

Add network module skeleton with Socket prototype

Patrick-Christopher Mattulat il y a 2 ans
Parent
commit
2094dcd6ba

+ 54 - 0
CMakeLists.txt

@@ -18,6 +18,7 @@ set(MODULE_NAME_CORE ls_std_core)
 set(MODULE_NAME_ENCODING ls_std_encoding)
 set(MODULE_NAME_EVENT ls_std_event)
 set(MODULE_NAME_IO ls_std_io)
+set(MODULE_NAME_NETWORK ls_std_network)
 set(MODULE_NAME_TIME ls_std_time)
 
 set(GOOGLE_TEST_MODULE googletest-1.11.0)
@@ -178,6 +179,9 @@ set(SOURCE_FILES_IO
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/io/StandardOutputWriter.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/io/StorableFile.cpp)
 
+set(SOURCE_FILES_NETWORK
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/network/socket/Socket.cpp)
+
 set(SOURCE_FILES_TIME
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/time/Date.cpp)
 
@@ -254,6 +258,9 @@ if (${LS_STD_BUILD_WITH_TESTS})
             ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/io/xml/TestDataFactory.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/io/xml/XmlParserTestWrapper.cpp)
 
+    set(TEST_FILES_NETWORK
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/network/socket/SocketTest.cpp)
+
     set(TEST_FILES_SERIALIZATION
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/serialization/JsonTest.cpp)
 
@@ -314,6 +321,15 @@ if (${LS_STD_BUILD_WITH_TESTS})
     add_executable(${MODULE_NAME_IO}_test ${TEST_FILES_IO})
 endif ()
 
+##########################################################
+# Build Tests (network)
+##########################################################
+
+if (${LS_STD_BUILD_WITH_TESTS})
+    message("${MODULE_NAME_NETWORK}: Building tests...")
+    add_executable(${MODULE_NAME_NETWORK}_test ${TEST_FILES_NETWORK})
+endif ()
+
 ##########################################################
 # Build Tests (time)
 ##########################################################
@@ -335,6 +351,7 @@ if (${LS_STD_BUILD_WITH_TESTS})
             ${TEST_FILES_ENCODING}
             ${TEST_FILES_EVENT}
             ${TEST_FILES_IO}
+            ${TEST_FILES_NETWORK}
             ${TEST_FILES_SERIALIZATION}
             ${TEST_FILES_TIME})
 endif ()
@@ -462,6 +479,28 @@ if (${LS_STD_BUILD_MODULE})
     set_target_properties("${MODULE_NAME_IO}" PROPERTIES DEBUG_POSTFIX "_d")
 endif ()
 
+##########################################################
+# Build Library (network)
+##########################################################
+
+message("${PROJECT_NAME}: Building ${MODULE_NAME_NETWORK} library version ${PROJECT_VERSION}...")
+
+if (${LS_STD_BUILD_STATIC})
+    add_library("${MODULE_NAME_NETWORK}" STATIC ${SOURCE_FILES_NETWORK})
+    set_target_properties("${MODULE_NAME_NETWORK}" PROPERTIES DEBUG_POSTFIX "_d")
+endif ()
+
+if (${LS_STD_BUILD_SHARED})
+    add_library("${MODULE_NAME_NETWORK}" SHARED ${SOURCE_FILES_NETWORK})
+    target_link_libraries("${MODULE_NAME_NETWORK}" ${MODULE_NAME_CORE})
+    set_target_properties("${MODULE_NAME_NETWORK}" PROPERTIES DEBUG_POSTFIX "_d")
+endif ()
+
+if (${LS_STD_BUILD_MODULE})
+    add_library("${MODULE_NAME_NETWORK}" MODULE ${SOURCE_FILES_NETWORK})
+    set_target_properties("${MODULE_NAME_NETWORK}" PROPERTIES DEBUG_POSTFIX "_d")
+endif ()
+
 ##########################################################
 # Build Library (time)
 ##########################################################
@@ -561,6 +600,20 @@ if (${LS_STD_BUILD_WITH_TESTS})
             "${MODULE_NAME_CORE}")
 endif ()
 
+##########################################################
+# Linking (network)
+##########################################################
+
+if (${LS_STD_BUILD_WITH_TESTS})
+    message("${MODULE_NAME_NETWORK}: Linking libraries for test application...")
+    target_link_libraries(${MODULE_NAME_NETWORK}_test
+            gtest
+            gmock
+            gtest_main
+            "${MODULE_NAME_NETWORK}"
+            "${MODULE_NAME_CORE}")
+endif ()
+
 ##########################################################
 # Linking (time)
 ##########################################################
@@ -590,5 +643,6 @@ if (${LS_STD_BUILD_WITH_TESTS})
             "${MODULE_NAME_ENCODING}"
             "${MODULE_NAME_EVENT}"
             "${MODULE_NAME_IO}"
+            "${MODULE_NAME_NETWORK}"
             "${MODULE_NAME_TIME}")
 endif ()

+ 17 - 0
include/ls_std/ls_std_network.hpp

@@ -0,0 +1,17 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2022-11-16
+ * Changed:         2022-11-16
+ *
+ * */
+
+#ifndef LS_STD_LS_STD_NETWORK_HPP
+#define LS_STD_LS_STD_NETWORK_HPP
+
+#include <ls_std/network/core/ProtocolType.hpp>
+#include <ls_std/network/socket/Socket.hpp>
+#include <ls_std/network/socket/SocketParameter.hpp>
+
+#endif

+ 21 - 0
include/ls_std/network/core/ProtocolType.hpp

@@ -0,0 +1,21 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2022-11-16
+ * Changed:         2022-11-16
+ *
+ * */
+
+#ifndef LS_STD_PROTOCOL_TYPE_HPP
+#define LS_STD_PROTOCOL_TYPE_HPP
+
+namespace ls::std::network
+{
+  enum ProtocolType
+  {
+    TCP = 0
+  };
+}
+
+#endif

+ 32 - 0
include/ls_std/network/socket/Socket.hpp

@@ -0,0 +1,32 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2022-11-16
+ * Changed:         2022-11-16
+ *
+ * */
+
+#ifndef LS_STD_SOCKET_HPP
+#define LS_STD_SOCKET_HPP
+
+#include <ls_std/os/dynamic_goal.hpp>
+#include <ls_std/core/Class.hpp>
+#include "SocketParameter.hpp"
+
+namespace ls::std::network
+{
+  class LS_STD_DYNAMIC_GOAL Socket : public ls::std::core::Class
+  {
+    public:
+
+      explicit Socket(const ls::std::network::SocketParameter& _parameter);
+      ~Socket() override = default;
+
+    private:
+
+      ls::std::network::SocketParameter parameter;
+  };
+}
+
+#endif

+ 23 - 0
include/ls_std/network/socket/SocketParameter.hpp

@@ -0,0 +1,23 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2022-11-16
+ * Changed:         2022-11-16
+ *
+ * */
+
+#ifndef LS_STD_SOCKET_PARAMETER_HPP
+#define LS_STD_SOCKET_PARAMETER_HPP
+
+#include <ls_std/network/core/ProtocolType.hpp>
+
+namespace ls::std::network
+{
+  struct SocketParameter
+  {
+    ProtocolType protocolType{};
+  };
+}
+
+#endif

+ 14 - 0
source/ls_std/network/socket/Socket.cpp

@@ -0,0 +1,14 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2022-11-16
+ * Changed:         2022-11-16
+ *
+ * */
+
+#include <ls_std/network/socket/Socket.hpp>
+
+ls::std::network::Socket::Socket(const ls::std::network::SocketParameter &_parameter) : ls::std::core::Class("Socket"),
+                                                                                        parameter(_parameter)
+{}

+ 35 - 0
test/cases/network/socket/SocketTest.cpp

@@ -0,0 +1,35 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2020-11-16
+ * Changed:         2022-11-16
+ *
+ * */
+
+#include <gtest/gtest.h>
+#include <ls_std/ls_std_network.hpp>
+
+using namespace ls::std::network;
+
+namespace
+{
+  class SocketTest : public ::testing::Test
+  {
+    protected:
+
+      SocketTest() = default;
+      ~SocketTest() override = default;
+
+      void SetUp() override
+      {}
+
+      void TearDown() override
+      {}
+  };
+
+  TEST_F(SocketTest, getClassName)
+  {
+    ASSERT_STREQ("Socket", Socket{SocketParameter{}}.getClassName().c_str());
+  }
+}