Beginning the design of the program. It could change in the future.
This commit is contained in:
parent
7ea618bcbf
commit
980f48959c
@ -8,23 +8,35 @@ set(CMAKE_CXX_COMPILER_LAUNCHER ccache)
|
|||||||
|
|
||||||
find_package(Boost REQUIRED COMPONENTS system)
|
find_package(Boost REQUIRED COMPONENTS system)
|
||||||
find_package(OpenSSL REQUIRED)
|
find_package(OpenSSL REQUIRED)
|
||||||
|
find_package(OpenMP REQUIRED)
|
||||||
include_directories(${Boost_INCLUDE_DIR} ${OpenSSL_INCLUDE_DIR})
|
include_directories(${Boost_INCLUDE_DIR} ${OpenSSL_INCLUDE_DIR})
|
||||||
|
|
||||||
|
set(COMPILE_DEFINITIONS
|
||||||
|
$<$<CONFIG:DEBUG>:_GLIBCXX_DEBUG>
|
||||||
|
BOOST_ASIO_NO_DEPRECATED
|
||||||
|
BOOST_ASIO_NO_TS_EXECUTORS
|
||||||
|
#[[_FORTIFY_SOURCE=2]]
|
||||||
|
)
|
||||||
|
|
||||||
set(COMPILE_FLAGS
|
set(COMPILE_FLAGS
|
||||||
-pipe
|
-pipe
|
||||||
-march=skylake # change to native or your architecture.
|
-march=skylake # change to native or your architecture.
|
||||||
-mtune=skylake # same as above
|
-mtune=skylake # same as above
|
||||||
-mrdrnd
|
-mrdseed # be careful about this, this is linked to the x86 architecture.
|
||||||
|
-mrdrnd # same as above
|
||||||
|
-stdlib=libc++
|
||||||
|
-Wpedantic
|
||||||
-Wall
|
-Wall
|
||||||
-Wextra
|
-Wextra
|
||||||
-Wpessimizing-move
|
-Wmove
|
||||||
-Wredundant-move
|
-Wopenmp
|
||||||
-funroll-loops
|
-funroll-loops
|
||||||
-flto=thin -fwhole-program-vtables
|
-flto=thin -fwhole-program-vtables
|
||||||
-fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
|
-fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
|
||||||
)
|
)
|
||||||
set(LINKER_OPTIONS
|
set(LINKER_OPTIONS
|
||||||
PRIVATE -Wl,--sort-common,--as-needed
|
PRIVATE -Wl,--sort-common,--as-needed
|
||||||
|
-stdlib=libc++
|
||||||
-flto=thin
|
-flto=thin
|
||||||
-fwhole-program-vtables
|
-fwhole-program-vtables
|
||||||
-fuse-ld=gold
|
-fuse-ld=gold
|
||||||
@ -32,16 +44,24 @@ set(LINKER_OPTIONS
|
|||||||
|
|
||||||
set(LINKER_FLAGS
|
set(LINKER_FLAGS
|
||||||
jemalloc
|
jemalloc
|
||||||
|
${Boost_LIBRARIES}
|
||||||
|
OpenSSL::SSL
|
||||||
|
OpenMP::OpenMP_CXX
|
||||||
)
|
)
|
||||||
|
|
||||||
file(GLOB HEADERS includes/*.hpp)
|
file(GLOB HEADERS includes/*.hpp)
|
||||||
|
|
||||||
set(FILES
|
set(FILES
|
||||||
main.cpp)
|
main.cpp
|
||||||
|
src/network.cpp
|
||||||
|
include/information.hpp
|
||||||
|
src/cache_files.cpp
|
||||||
|
include/cache_files.hpp
|
||||||
|
)
|
||||||
|
|
||||||
add_executable(GeminiServer ${FILES})
|
add_executable(GeminiServer ${FILES})
|
||||||
target_precompile_headers(GeminiServer PRIVATE ${HEADERS})
|
target_precompile_headers(GeminiServer PRIVATE ${HEADERS})
|
||||||
target_compile_definitions(GeminiServer PRIVATE _GLIBCXX_DEBUG BOOST_ASIO_NO_DEPRECATED BOOST_ASIO_NO_TS_EXECUTORS)
|
target_compile_definitions(GeminiServer PRIVATE ${COMPILE_DEFINITIONS})
|
||||||
target_compile_options(GeminiServer PRIVATE ${COMPILE_FLAGS})
|
target_compile_options(GeminiServer PRIVATE ${COMPILE_FLAGS})
|
||||||
target_link_options(GeminiServer ${LINKER_OPTIONS})
|
target_link_options(GeminiServer ${LINKER_OPTIONS})
|
||||||
target_link_libraries(GeminiServer ${Boost_LIBRARIES} ${LINKER_FLAGS} OpenSSL::SSL)
|
target_link_libraries(GeminiServer ${LINKER_FLAGS})
|
46
class_diagram.puml
Normal file
46
class_diagram.puml
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
@startuml
|
||||||
|
|
||||||
|
|
||||||
|
Configuration ..> "produces" Information
|
||||||
|
Network ..> "uses" TaskRequest
|
||||||
|
Network ..> "uses" Information
|
||||||
|
TaskRequest ..> "uses" Information
|
||||||
|
TaskRequest ..> "uses" CacheFiles
|
||||||
|
|
||||||
|
class TaskRequest {
|
||||||
|
- request: string
|
||||||
|
}
|
||||||
|
|
||||||
|
class Network {
|
||||||
|
- context: io_context
|
||||||
|
- ssl: ssl::stream<tcp>
|
||||||
|
|
||||||
|
+ Network()
|
||||||
|
+ Network(&&)
|
||||||
|
+ operator=(&&)
|
||||||
|
}
|
||||||
|
|
||||||
|
class Configuration {
|
||||||
|
+ filename: const string
|
||||||
|
|
||||||
|
+ Configuration(string filename)
|
||||||
|
+ create_infos(): Information
|
||||||
|
}
|
||||||
|
|
||||||
|
class Information {
|
||||||
|
+ enable_cache: const bool
|
||||||
|
+ cache_size: const int
|
||||||
|
+ ssl_pem_path: const path
|
||||||
|
+ ssl_cert_path: const path
|
||||||
|
}
|
||||||
|
|
||||||
|
class CacheFiles {
|
||||||
|
- files: unordered_set<string>
|
||||||
|
- content: unordered_map<string, string>
|
||||||
|
|
||||||
|
+ CacheFiles()
|
||||||
|
+ get_files(): files
|
||||||
|
+ get_content(): content
|
||||||
|
}
|
||||||
|
|
||||||
|
@enduml
|
15
include/cache_files.hpp
Normal file
15
include/cache_files.hpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#ifndef GEMINISERVER_CACHE_FILES_HPP
|
||||||
|
#define GEMINISERVER_CACHE_FILES_HPP
|
||||||
|
|
||||||
|
|
||||||
|
namespace gemini {
|
||||||
|
/**
|
||||||
|
* \brief This class is used to store the files in cache.
|
||||||
|
*/
|
||||||
|
class CacheFiles {
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif //GEMINISERVER_CACHE_FILES_HPP
|
14
include/information.hpp
Normal file
14
include/information.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#ifndef GEMINISERVER_INFORMATION_HPP
|
||||||
|
#define GEMINISERVER_INFORMATION_HPP
|
||||||
|
|
||||||
|
namespace gemini {
|
||||||
|
/**
|
||||||
|
* \brief This struct is used to store information inside, used by any other class/struct.
|
||||||
|
*/
|
||||||
|
struct Information {
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif //GEMINISERVER_INFORMATION_HPP
|
15
include/network.hpp
Normal file
15
include/network.hpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#ifndef GEMINISERVER_NETWORK_HPP
|
||||||
|
#define GEMINISERVER_NETWORK_HPP
|
||||||
|
|
||||||
|
|
||||||
|
namespace gemini {
|
||||||
|
/**
|
||||||
|
* \brief This is class is used for all the network things for the server.
|
||||||
|
*/
|
||||||
|
class Network {
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif //GEMINISERVER_NETWORK_HPP
|
1
src/cache_files.cpp
Normal file
1
src/cache_files.cpp
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "../include/cache_files.hpp"
|
1
src/network.cpp
Normal file
1
src/network.cpp
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "../include/network.hpp"
|
Loading…
Reference in New Issue
Block a user