WIP. RemoteServer, DbUpdate settings implemented
This commit is contained in:
@@ -24,3 +24,24 @@ ConfigReader::getUserInterfaceConfig(Service::UserInterfaceService::Config& conf
|
||||
config.dbPath = _config.lookup("main.db");
|
||||
}
|
||||
|
||||
void
|
||||
ConfigReader::getRemoteServerConfig(Service::RemoteServerService::Config& config)
|
||||
{
|
||||
config.enable = _config.lookup("remote.enable");
|
||||
if (!config.enable)
|
||||
return;
|
||||
|
||||
config.port = static_cast<unsigned int>(_config.lookup("remote.listen-endpoint.port"));
|
||||
config.address = boost::asio::ip::address::from_string((const char*)_config.lookup("remote.listen-endpoint.addr"));
|
||||
|
||||
config.dbPath = _config.lookup("main.db");
|
||||
}
|
||||
|
||||
void
|
||||
ConfigReader::getDatabaseUpdateConfig(Service::DatabaseUpdateService::Config& config)
|
||||
{
|
||||
config.enable = true;
|
||||
|
||||
config.dbPath = _config.lookup("main.db");
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include <libconfig.h++>
|
||||
|
||||
#include "service/UserInterfaceService.hpp"
|
||||
#include "service/RemoteServerService.hpp"
|
||||
#include "service/DatabaseUpdateService.hpp"
|
||||
|
||||
class ConfigReader
|
||||
{
|
||||
@@ -13,7 +15,8 @@ class ConfigReader
|
||||
ConfigReader(boost::filesystem::path p);
|
||||
|
||||
void getUserInterfaceConfig(Service::UserInterfaceService::Config& config);
|
||||
|
||||
void getRemoteServerConfig(Service::RemoteServerService::Config& config);
|
||||
void getDatabaseUpdateConfig(Service::DatabaseUpdateService::Config& config);
|
||||
|
||||
private:
|
||||
|
||||
|
||||
+18
-8
@@ -14,12 +14,15 @@ int main(int argc, char* argv[])
|
||||
|
||||
int res = EXIT_FAILURE;
|
||||
|
||||
assert(argc > 0);
|
||||
assert(argv[0] != NULL);
|
||||
|
||||
try
|
||||
{
|
||||
// TODO generate a nice command line help with args
|
||||
|
||||
// Open configuration file
|
||||
boost::filesystem::path configFile("/etc/lms.conf");
|
||||
boost::filesystem::path configFile("/etc/lms.conf"); // TODO
|
||||
if (argc > 1)
|
||||
configFile = boost::filesystem::path(argv[1]);
|
||||
|
||||
@@ -32,14 +35,16 @@ int main(int argc, char* argv[])
|
||||
|
||||
ConfigReader configReader(configFile);
|
||||
|
||||
Service::DatabaseUpdateService::Config dbUpdateConfig;
|
||||
configReader.getDatabaseUpdateConfig(dbUpdateConfig);
|
||||
|
||||
Service::UserInterfaceService::Config uiConfig;
|
||||
configReader.getUserInterfaceConfig(uiConfig);
|
||||
|
||||
Service::ServiceManager& serviceManager = Service::ServiceManager::instance();
|
||||
Service::RemoteServerService::Config remoteConfig;
|
||||
configReader.getRemoteServerConfig(remoteConfig);
|
||||
|
||||
// TODO Retreive the database path in some config file
|
||||
const boost::filesystem::path dbPath("test.db");
|
||||
Remote::Server::Server::endpoint_type remoteListenEndpoint( boost::asio::ip::address::from_string("0.0.0.0"), 5080);
|
||||
Service::ServiceManager& serviceManager = Service::ServiceManager::instance();
|
||||
|
||||
// lib init
|
||||
Av::AvInit();
|
||||
@@ -48,9 +53,14 @@ int main(int argc, char* argv[])
|
||||
|
||||
std::cout << "Starting services..." << std::endl;
|
||||
|
||||
serviceManager.startService( std::make_shared<Service::DatabaseUpdateService>( dbPath) );
|
||||
serviceManager.startService( std::make_shared<Service::RemoteServerService>( remoteListenEndpoint, dbPath) );
|
||||
serviceManager.startService( std::make_shared<Service::UserInterfaceService>(boost::filesystem::path(argv[0]), uiConfig));
|
||||
if (dbUpdateConfig.enable)
|
||||
serviceManager.startService( std::make_shared<Service::DatabaseUpdateService>( dbUpdateConfig ) );
|
||||
|
||||
if (remoteConfig.enable)
|
||||
serviceManager.startService( std::make_shared<Service::RemoteServerService>( remoteConfig ));
|
||||
|
||||
if (uiConfig.enable)
|
||||
serviceManager.startService( std::make_shared<Service::UserInterfaceService>(boost::filesystem::path(argv[0]), uiConfig));
|
||||
|
||||
std::cout << "Running..." << std::endl;
|
||||
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
namespace Service {
|
||||
|
||||
DatabaseUpdateService::DatabaseUpdateService(const boost::filesystem::path& p)
|
||||
DatabaseUpdateService::DatabaseUpdateService(const Config& config)
|
||||
: _metadataParser(),
|
||||
_databaseUpdater( p, _metadataParser)
|
||||
_databaseUpdater( config.dbPath, _metadataParser)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,12 @@ class DatabaseUpdateService : public Service
|
||||
|
||||
typedef std::shared_ptr<DatabaseUpdateService> pointer;
|
||||
|
||||
DatabaseUpdateService(const boost::filesystem::path& p);
|
||||
struct Config {
|
||||
bool enable;
|
||||
boost::filesystem::path dbPath;
|
||||
};
|
||||
|
||||
DatabaseUpdateService(const Config& config);
|
||||
|
||||
// Service interface
|
||||
void start(void);
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
namespace Service {
|
||||
|
||||
RemoteServerService::RemoteServerService(const Remote::Server::Server::endpoint_type& endpoint, boost::filesystem::path dbPath)
|
||||
: _server(endpoint, dbPath)
|
||||
RemoteServerService::RemoteServerService(const Config& config)
|
||||
: _server(boost::asio::ip::tcp::endpoint(config.address, config.port), config.dbPath)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define REMOTE_SERVER_SERVICE_HPP
|
||||
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/asio/ip/address.hpp>
|
||||
|
||||
#include "Service.hpp"
|
||||
|
||||
@@ -13,7 +14,14 @@ class RemoteServerService : public Service
|
||||
{
|
||||
public:
|
||||
|
||||
RemoteServerService(const Remote::Server::Server::endpoint_type& endpoint, boost::filesystem::path dbPath);
|
||||
struct Config {
|
||||
bool enable;
|
||||
boost::asio::ip::address address;
|
||||
unsigned short port;
|
||||
boost::filesystem::path dbPath;
|
||||
};
|
||||
|
||||
RemoteServerService(const Config& config);
|
||||
|
||||
void start(void);
|
||||
void stop(void);
|
||||
|
||||
Reference in New Issue
Block a user