Init Commit

This commit is contained in:
2021-12-18 11:27:44 +08:00
commit acfb9a3dae
14 changed files with 275 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
cmake-build-*/
.idea/

26
CMakeLists.txt Normal file
View File

@@ -0,0 +1,26 @@
cmake_minimum_required(VERSION 3.21)
project(RegistryCenter)
set(CMAKE_CXX_STANDARD 17)
if (NOT CMAKE_PREFIX_PATH)
set(CMAKE_PREFIX_PATH "Z:\\Qt\\5.15.2\\msvc2019_64")
endif ()
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(QT_LIBS Core RemoteObjects Network Sql)
find_package(Qt5 COMPONENTS
${QT_LIBS}
REQUIRED)
add_subdirectory(QtRO)
if (NOT ONLY_REGISTRY_CENTER_CLIENT)
add_subdirectory(Server)
add_subdirectory(Example)
endif ()

0
Example/CMakeLists.txt Normal file
View File

21
QtRO/CMakeLists.txt Normal file
View File

@@ -0,0 +1,21 @@
# ServiceStatus Source and Replica
qt_generate_repc(ServiceStatusRepSourceSrc ServiceStatus.rep SOURCE)
add_library(ServiceStatusSource STATIC ${ServiceStatusRepSourceSrc})
target_link_libraries(ServiceStatusSource PUBLIC Qt5::RemoteObjects)
target_include_directories(ServiceStatusSource PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
qt_generate_repc(ServiceStatusRepReplicaSrc ServiceStatus.rep REPLICA)
add_library(ServiceStatusReplica STATIC ${ServiceStatusRepReplicaSrc})
target_link_libraries(ServiceStatusReplica PUBLIC Qt5::RemoteObjects)
target_include_directories(ServiceStatusReplica PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
# Option Source and Replica
qt_generate_repc(OptionRepSourceSrc Options.rep SOURCE)
add_library(OptionSource STATIC ${OptionRepSourceSrc})
target_link_libraries(OptionSource PUBLIC Qt5::RemoteObjects)
target_include_directories(OptionSource PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
qt_generate_repc(OptionRepReplicaSrc Options.rep REPLICA)
add_library(OptionReplica STATIC ${OptionRepReplicaSrc})
target_link_libraries(OptionReplica PUBLIC Qt5::RemoteObjects)
target_include_directories(OptionReplica PUBLIC ${CMAKE_CURRENT_BINARY_DIR})

8
QtRO/Options.rep Normal file
View File

@@ -0,0 +1,8 @@
class Options{
ENUM OptionType{READONLY, TYPE_LINE_EDIT, TYPE_COMBO_BOX}
SLOT(void registerOption(QString optionId, QString optionName, QVariant defaultValue, OptionType type, bool autoLoad = false, QString editConfig = "", QString description = ""))
SLOT(QVariant getOption(QString optionId))
SLOT(void setOption(QString optionId, QVariant value))
SIGNAL(optionChanged(QString optionId, QVariant value))
}

3
QtRO/ServiceStatus.rep Normal file
View File

@@ -0,0 +1,3 @@
class ServiceStatus{
SLOT(void reportStatus(QString appId,QString appName))
}

46
Server/CMakeLists.txt Normal file
View File

@@ -0,0 +1,46 @@
project(RegistryCenterServer)
add_subdirectory(Service)
set(
RegistryCenterServer_SRCS
main.cpp
)
add_executable(${PROJECT_NAME} ${RegistryCenterServer_SRCS})
target_link_libraries(
${PROJECT_NAME}
Qt5::Core
Qt5::RemoteObjects
)
target_link_libraries(${PROJECT_NAME} ServerService)
if (WIN32)
set(DEBUG_SUFFIX)
if (MSVC AND (CMAKE_BUILD_TYPE MATCHES "Debug"))
set(DEBUG_SUFFIX "d")
endif ()
set(QT_INSTALL_PATH "${CMAKE_PREFIX_PATH}")
if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
endif ()
endif ()
if (EXISTS "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
endif ()
foreach (QT_LIB ${QT_LIBS})
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${QT_INSTALL_PATH}/bin/Qt5${QT_LIB}${DEBUG_SUFFIX}.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>")
endforeach (QT_LIB)
endif ()

View File

@@ -0,0 +1,11 @@
set(
ServerServiceSrcs
ServiceStatus.cpp
ServiceStatus.h
Options.cpp
Options.h
)
add_library(ServerService STATIC ${ServerServiceSrcs})
target_link_libraries(ServerService ServiceStatusSource)
target_link_libraries(ServerService OptionSource)

View File

@@ -0,0 +1,30 @@
//
// Created by fly on 2021/12/17.
//
#include "Options.h"
Options::Options(QObject *parent) : OptionsSource(parent) {
}
void Options::registerOption(
QString optionId,
QString optionName,
QVariant defaultValue,
OptionsSource::OptionType type,
bool autoLoad,
QString editConfig,
QString description
) {
}
QVariant Options::getOption(QString optionId) {
return {};
}
void Options::setOption(QString optionId, QVariant value) {
}

33
Server/Service/Options.h Normal file
View File

@@ -0,0 +1,33 @@
//
// Created by fly on 2021/12/17.
//
#ifndef REGISTRYCENTER_OPTIONS_H
#define REGISTRYCENTER_OPTIONS_H
#include <rep_Options_source.h>
class Options : public OptionsSource {
Q_OBJECT
public:
explicit Options(QObject *parent = nullptr);
~Options() override = default;
void registerOption(
QString optionId,
QString optionName,
QVariant defaultValue,
OptionsSource::OptionType type,
bool autoLoad,
QString editConfig,
QString description
) override;
QVariant getOption(QString optionId) override;
void setOption(QString optionId, QVariant value) override;
};
#endif //REGISTRYCENTER_OPTIONS_H

View File

@@ -0,0 +1,18 @@
//
// Created by fly on 2021/12/17.
//
#include "ServiceStatus.h"
ServiceStatus::ServiceStatus(QObject *parent) : ServiceStatusSource(parent) {
}
ServiceStatus::~ServiceStatus() {
}
void ServiceStatus::reportStatus(QString appId, QString appName) {
}

View File

@@ -0,0 +1,22 @@
//
// Created by fly on 2021/12/17.
//
#ifndef REGISTRYCENTER_SERVICESTATUS_H
#define REGISTRYCENTER_SERVICESTATUS_H
#include <rep_ServiceStatus_source.h>
class ServiceStatus : public ServiceStatusSource {
Q_OBJECT
public:
explicit ServiceStatus(QObject *parent = nullptr);
~ServiceStatus() override;
void reportStatus(QString appId, QString appName) override;
};
#endif //REGISTRYCENTER_SERVICESTATUS_H

53
Server/main.cpp Normal file
View File

@@ -0,0 +1,53 @@
#include <QCoreApplication>
#include <QRemoteObjectRegistryHost>
#include <QSettings>
#include <QFile>
#include <QString>
#include <QStringList>
#include <QScopedPointer>
#include "Service/ServiceStatus.h"
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
QScopedPointer<QSettings> settings(new QSettings);
do {
auto arguments = QCoreApplication::arguments();
//没有传入配置文件路径
if (arguments.size() < 2) {
break;
}
const auto &configFile = arguments.at(1);
//传入的路径文件不存在
if (!QFile::exists(configFile)) {
break;
}
settings.reset(
new QSettings(
configFile,
QSettings::IniFormat
)
);
} while (false);
//启动注册中心服务
QRemoteObjectRegistryHost registryHost(
QUrl(
settings->value(
"registry/url",
"tcp://*:7478"
).toString()
)
);
//服务状态监控服务
auto *serviceStatus = new ServiceStatus;
registryHost.enableRemoting(serviceStatus);
return QCoreApplication::exec();
}

2
conf/registry.ini Normal file
View File

@@ -0,0 +1,2 @@
[registry]
url=tcp://*:7478