Browse Source

Add UnixSocketDescriptor class

Patrick-Christopher Mattulat 1 year ago
parent
commit
8a8ee03395

+ 4 - 2
CMakeLists.txt

@@ -203,7 +203,8 @@ if(${CMAKE_CXX_COMPILER_ID} STREQUAL GNU OR
             ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/network/core/ProtocolFamilyMapper.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/network/core/ProtocolMapper.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/network/socket/Socket.cpp
-            ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/network/socket/SocketAddressMapper.cpp)
+            ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/network/socket/SocketAddressMapper.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/network/socket/UnixSocketDescriptor.cpp)
 endif()
 
 set(SOURCE_FILES_TIME
@@ -288,7 +289,8 @@ set(TEST_FILES_CORE
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/network/core/ProtocolFamilyMapperTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/network/core/ProtocolMapperTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/network/socket/SocketAddressMapperTest.cpp
-            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/network/socket/SocketTest.cpp)
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/network/socket/SocketTest.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/network/socket/UnixSocketDescriptorTest.cpp)
 
     set(TEST_FILES_SERIALIZATION
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/serialization/JsonTest.cpp)

+ 2 - 1
include/ls_std/ls_std_network.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2022-11-16
- * Changed:         2022-12-16
+ * Changed:         2022-12-31
  *
  * */
 
@@ -23,5 +23,6 @@
 #include <ls_std/network/socket/SocketAddressMapper.hpp>
 #include <ls_std/network/socket/SocketAddressMapperParameter.hpp>
 #include <ls_std/network/socket/SocketParameter.hpp>
+#include <ls_std/network/socket/UnixSocketDescriptor.hpp>
 
 #endif

+ 37 - 0
include/ls_std/network/socket/UnixSocketDescriptor.hpp

@@ -0,0 +1,37 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2022-12-30
+ * Changed:         2022-12-31
+ *
+ * */
+
+#ifndef LS_STD_UNIX_SOCKET_DESCRIPTOR_HPP
+#define LS_STD_UNIX_SOCKET_DESCRIPTOR_HPP
+
+#include <ls_std/core/types/SocketTypes.hpp>
+
+namespace ls::std::network
+{
+  class UnixSocketDescriptor
+  {
+    public:
+
+      explicit UnixSocketDescriptor(const ls::std::core::type::connection_id& _connectionId, const int& _descriptor);
+      ~UnixSocketDescriptor();
+
+      bool operator == (const ls::std::network::UnixSocketDescriptor& _socketDescriptor) const;
+      bool operator != (const ls::std::network::UnixSocketDescriptor& _socketDescriptor) const;
+
+      [[nodiscard]] ls::std::core::type::connection_id getConnectionId() const;
+      [[nodiscard]] int getDescriptor() const;
+
+    private:
+
+      ls::std::core::type::connection_id connectionId{};
+      int descriptor{};
+  };
+}
+
+#endif

+ 38 - 0
source/ls_std/network/socket/UnixSocketDescriptor.cpp

@@ -0,0 +1,38 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2022-12-30
+ * Changed:         2022-12-31
+ *
+ * */
+
+#include <ls_std/network/socket/UnixSocketDescriptor.hpp>
+
+ls::std::network::UnixSocketDescriptor::UnixSocketDescriptor(const ls::std::core::type::connection_id& _connectionId, const int& _descriptor) :
+connectionId(_connectionId),
+descriptor(_descriptor)
+{}
+
+ls::std::network::UnixSocketDescriptor::~UnixSocketDescriptor()
+= default;
+
+bool ls::std::network::UnixSocketDescriptor::operator==(const ls::std::network::UnixSocketDescriptor &_socketDescriptor) const
+{
+  return this->connectionId == _socketDescriptor.getConnectionId();
+}
+
+bool ls::std::network::UnixSocketDescriptor::operator!=(const ls::std::network::UnixSocketDescriptor &_socketDescriptor) const
+{
+  return this->connectionId != _socketDescriptor.getDescriptor();
+}
+
+ls::std::core::type::connection_id ls::std::network::UnixSocketDescriptor::getConnectionId() const
+{
+  return this->connectionId;
+}
+
+int ls::std::network::UnixSocketDescriptor::getDescriptor() const
+{
+  return this->descriptor;
+}

+ 1 - 2
test/cases/network/socket/SocketAddressMapperTest.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-18
- * Changed:         2022-12-28
+ * Changed:         2022-12-31
  *
  * */
 
@@ -14,7 +14,6 @@
 #if LS_STD_UNIX_PLATFORM
 #include <sys/socket.h>
 #include "ls_std/network/socket/Socket.hpp"
-
 #endif
 
 using namespace ls::std::network;

+ 42 - 0
test/cases/network/socket/UnixSocketDescriptorTest.cpp

@@ -0,0 +1,42 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2022-12-31
+ * Changed:         2022-12-31
+ *
+ * */
+
+#include <gtest/gtest.h>
+#include <ls_std/ls_std_network.hpp>
+
+using namespace ls::std::network;
+
+namespace
+{
+  class UnixSocketDescriptorTest : public ::testing::Test
+  {
+    protected:
+
+      UnixSocketDescriptorTest() = default;
+      ~UnixSocketDescriptorTest() override = default;
+
+      void SetUp() override
+      {}
+
+      void TearDown() override
+      {}
+  };
+
+  TEST_F(UnixSocketDescriptorTest, getConnectionId)
+  {
+    UnixSocketDescriptor socketDescriptor{1, 14};
+    ASSERT_EQ(1, socketDescriptor.getConnectionId());
+  }
+
+  TEST_F(UnixSocketDescriptorTest, getDescriptor)
+  {
+    UnixSocketDescriptor socketDescriptor{1, 14};
+    ASSERT_EQ(14, socketDescriptor.getDescriptor());
+  }
+}