diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-06-15 14:19:35 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-06-16 22:22:10 +0800 |
| commit | 82b6612418908654a61b7947550b796ce4ed57d6 (patch) | |
| tree | 436dcba871bfad2dcc2bc90a51e59fde86dc33f8 | |
| parent | 08688972ae56b474e2e2fd954c5caaeb1233a1be (diff) | |
fix(cmake): linking
| -rw-r--r-- | CMakeLists.txt | 24 | ||||
| -rw-r--r-- | include/libsock/server/client.hpp | 5 | ||||
| -rw-r--r-- | include/libsock/server/server.hpp | 7 | ||||
| -rw-r--r-- | include/libsock/types.hpp | 16 | ||||
| -rw-r--r-- | src/misc/FileDescriptor.cpp | 2 | ||||
| -rw-r--r-- | src/misc/FileDescriptor.hpp | 5 | ||||
| -rw-r--r-- | src/server/client.cpp | 5 | ||||
| -rw-r--r-- | src/server/clients.cpp | 4 | ||||
| -rw-r--r-- | src/server/server.cpp | 7 |
9 files changed, 55 insertions, 20 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 727108f..5937aa0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.19) project( - libsock + sock VERSION 1.0.0 DESCRIPTION "Minimal C++ socket library") @@ -36,17 +36,23 @@ else() message(STATUS "Configuring libsock in Release") endif() -file(GLOB_RECURSE SRCFILES CONFIGURE_DEPENDS "src/*.cpp" "include/*.hpp") +# Separate source files and headers +file(GLOB_RECURSE PRIVATE_SOURCES CONFIGURE_DEPENDS "src/*.cpp") +file(GLOB_RECURSE PRIVATE_HEADERS CONFIGURE_DEPENDS "src/*.hpp") file(GLOB_RECURSE PUBLIC_HEADERS CONFIGURE_DEPENDS "include/*.hpp") +# Create list of all source files (private sources + public headers) +set(ALL_SOURCES ${PRIVATE_SOURCES} ${PUBLIC_HEADERS}) + find_package(PkgConfig REQUIRED) -add_library(libsock SHARED ${SRCFILES}) +add_library(sock SHARED ${ALL_SOURCES}) target_include_directories( - libsock + sock PUBLIC "./include" - PRIVATE "./src") -set_target_properties(libsock PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION 1) + PRIVATE "./src" + PRIVATE "./src/misc") # Add this so FileDescriptor.hpp can be found +set_target_properties(sock PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION 1) # tests add_custom_target(tests) # @@ -61,7 +67,9 @@ set_target_properties(libsock PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION 1) # libsock_connection "connection") add_dependencies(tests libsock_connection) # # Installation -install(TARGETS libsock) -install(DIRECTORY "include/libsock" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(TARGETS sock) +install(DIRECTORY "include/libsock" + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PATTERN "misc" EXCLUDE) install(FILES ${CMAKE_BINARY_DIR}/libsock.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) diff --git a/include/libsock/server/client.hpp b/include/libsock/server/client.hpp index b86b440..ec5c6bc 100644 --- a/include/libsock/server/client.hpp +++ b/include/libsock/server/client.hpp @@ -1,7 +1,6 @@ #pragma once -#include "misc/FileDescriptor.hpp" -#include "misc/memory.hpp" +#include "../types.hpp" #include <format> #include <functional> #include <netinet/in.h> @@ -51,7 +50,7 @@ class Client { private: WP<Client> self; - SP<CFileDescriptor> m_sockfd; + SP<LibSock::CFileDescriptor> m_sockfd; sockaddr_in m_addr; socklen_t m_addrLen = sizeof(m_addr); std::string m_name; diff --git a/include/libsock/server/server.hpp b/include/libsock/server/server.hpp index c97c945..d831fd8 100644 --- a/include/libsock/server/server.hpp +++ b/include/libsock/server/server.hpp @@ -1,6 +1,5 @@ #pragma once -#include "misc/FileDescriptor.hpp" -#include "misc/memory.hpp" +#include "../types.hpp" #include <mutex> #include <netinet/in.h> @@ -11,10 +10,10 @@ class Server { public: Server(uint16_t port, bool reuseaddr = true, bool keepalive = false); ~Server(); - SP<CFileDescriptor> getSocket() const; + SP<LibSock::CFileDescriptor> getSocket() const; private: - SP<CFileDescriptor> m_sockfd; + SP<LibSock::CFileDescriptor> m_sockfd; sockaddr_in m_addr; uint16_t m_port; diff --git a/include/libsock/types.hpp b/include/libsock/types.hpp new file mode 100644 index 0000000..f8116ab --- /dev/null +++ b/include/libsock/types.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include <memory> + +template <typename T> +using SP = std::shared_ptr<T>; + +template <typename T> +using WP = std::weak_ptr<T>; + +template <typename T> +using UP = std::unique_ptr<T>; + +namespace LibSock { +class CFileDescriptor; +} diff --git a/src/misc/FileDescriptor.cpp b/src/misc/FileDescriptor.cpp index 92505f5..59fa688 100644 --- a/src/misc/FileDescriptor.cpp +++ b/src/misc/FileDescriptor.cpp @@ -5,6 +5,8 @@ #include <unistd.h> #include <utility> +using namespace LibSock; + CFileDescriptor::CFileDescriptor(int const fd) : m_fd(fd) {} diff --git a/src/misc/FileDescriptor.hpp b/src/misc/FileDescriptor.hpp index 75aeb73..dd9f8fe 100644 --- a/src/misc/FileDescriptor.hpp +++ b/src/misc/FileDescriptor.hpp @@ -1,6 +1,9 @@ #pragma once #include <fcntl.h> + +namespace LibSock { + class CFileDescriptor { public: CFileDescriptor() = default; @@ -33,3 +36,5 @@ class CFileDescriptor { private: int m_fd = -1; }; + +} // namespace LibSock diff --git a/src/server/client.cpp b/src/server/client.cpp index f99cb97..9efad18 100644 --- a/src/server/client.cpp +++ b/src/server/client.cpp @@ -1,5 +1,6 @@ #include "libsock/server/client.hpp" -#include "../misc/memory.hpp" +#include "libsock/types.hpp" +#include "misc/FileDescriptor.hpp" // #include "chatManager.hpp" #include "libsock/server/server.hpp" // #include "sessionManager.hpp" @@ -14,7 +15,7 @@ using namespace LibSock::Client; Client::Client(bool track, bool oneShot) : m_track(track), m_oneShot(oneShot) { - m_sockfd = std::make_shared<CFileDescriptor>( + m_sockfd = std::make_shared<LibSock::CFileDescriptor>( accept(LibSock::Server::pServer->getSocket()->get(), reinterpret_cast<sockaddr *>(&m_addr), &m_addrLen)); // if this is in the init list, it will run before diff --git a/src/server/clients.cpp b/src/server/clients.cpp index 0327ea3..e42579c 100644 --- a/src/server/clients.cpp +++ b/src/server/clients.cpp @@ -99,6 +99,10 @@ std::vector<SP<Client>> Clients::getClients() const { return m_vClients | std::views::transform([](const auto &s) { return s.second; }) | std::ranges::to<std::vector>(); } +std::vector<SData> Clients::getDatas() const { + return m_vDatas; +} + void Clients::kick(WP<Client> clientWeak, const bool kill, const std::string &reason) { auto client = clientWeak.lock(); if (!client) diff --git a/src/server/server.cpp b/src/server/server.cpp index 0692a74..2e07809 100644 --- a/src/server/server.cpp +++ b/src/server/server.cpp @@ -1,5 +1,6 @@ #include "libsock/server/server.hpp" -#include "misc/memory.hpp" +#include "libsock/types.hpp" +#include "misc/FileDescriptor.hpp" #include <cstring> #include <mutex> #include <sys/socket.h> @@ -8,7 +9,7 @@ using namespace LibSock::Server; Server::Server(uint16_t port, bool reuseaddr, bool keepalive) : m_sockfd( - std::make_shared<CFileDescriptor>(socket(AF_INET, SOCK_STREAM, 0))) { + std::make_shared<LibSock::CFileDescriptor>(socket(AF_INET, SOCK_STREAM, 0))) { std::lock_guard<std::mutex> lk(m_mutex); if (!m_sockfd->isValid() || m_sockfd->get() < 0) throw std::runtime_error("Failed to create socket"); @@ -35,4 +36,4 @@ Server::Server(uint16_t port, bool reuseaddr, bool keepalive) Server::~Server() { m_sockfd.reset(); } -std::shared_ptr<CFileDescriptor> Server::getSocket() const { return m_sockfd; } +std::shared_ptr<LibSock::CFileDescriptor> Server::getSocket() const { return m_sockfd; } |
