[DEV] add the capabilities to change the disconnection of gateway on the router

This commit is contained in:
Edouard DUPIN 2017-02-21 21:46:51 +01:00
parent 8a92ef772b
commit 2c85f1992b
6 changed files with 29 additions and 14 deletions

View File

@ -136,6 +136,7 @@ int main(int _argc, const char *_argv[]) {
// The default service port is 1985 // The default service port is 1985
m_client.propertyPort.set(1985); m_client.propertyPort.set(1985);
#endif #endif
// default delay to disconnect is 30 seconds:
uint32_t routerDisconnectionDelay = 30; uint32_t routerDisconnectionDelay = 30;
for (int32_t iii=0; iii<_argc ; ++iii) { for (int32_t iii=0; iii<_argc ; ++iii) {
std::string data = _argv[iii]; std::string data = _argv[iii];
@ -148,7 +149,14 @@ int main(int _argc, const char *_argv[]) {
} else if (etk::start_with(data, "--router-port=") == true) { } else if (etk::start_with(data, "--router-port=") == true) {
basicGateway.propertyRouterPort.set(etk::string_to_uint16_t(std::string(&data[14]))); basicGateway.propertyRouterPort.set(etk::string_to_uint16_t(std::string(&data[14])));
} else if (etk::start_with(data, "--router-delay=") == true) { } else if (etk::start_with(data, "--router-delay=") == true) {
routerDisconnectionDelay = etk::string_to_uint32_t(std::string(&data[15])); int32_t value = etk::string_to_int32_t(std::string(&data[15]));
if (value == -1) {
routerDisconnectionDelay = 999999999;
} else if (value == 0) {
// do nothing
} else {
routerDisconnectionDelay = value;
}
} else if (etk::start_with(data, "--service-ip=") == true) { } else if (etk::start_with(data, "--service-ip=") == true) {
basicGateway.propertyServiceIp.set(std::string(&data[13])); basicGateway.propertyServiceIp.set(std::string(&data[13]));
#ifdef GATEWAY_ENABLE_LAUNCHER #ifdef GATEWAY_ENABLE_LAUNCHER
@ -182,7 +190,7 @@ int main(int _argc, const char *_argv[]) {
APPL_PRINT(" --service-ip=XXX Service connection IP (default: " << basicGateway.propertyServiceIp.get() << ")"); APPL_PRINT(" --service-ip=XXX Service connection IP (default: " << basicGateway.propertyServiceIp.get() << ")");
APPL_PRINT(" --service-port=XXX Service connection PORT (default: " << basicGateway.propertyServicePort.get() << ")"); APPL_PRINT(" --service-port=XXX Service connection PORT (default: " << basicGateway.propertyServicePort.get() << ")");
APPL_PRINT(" --service-max=XXX Service Maximum IO (default: " << basicGateway.propertyServiceMax.get() << ")"); APPL_PRINT(" --service-max=XXX Service Maximum IO (default: " << basicGateway.propertyServiceMax.get() << ")");
APPL_PRINT(" --router-delay=XXX Delay before disconnect from the router (default: " << routerDisconnectionDelay << ")"); APPL_PRINT(" --router-delay=XXX Delay before disconnect from the router (default: " << routerDisconnectionDelay << "; 0=automatic set by the gateway; -1=never disconnect; other the time)");
#ifdef GATEWAY_ENABLE_LAUNCHER #ifdef GATEWAY_ENABLE_LAUNCHER
APPL_PRINT(" specific for internal launcher:"); APPL_PRINT(" specific for internal launcher:");
APPL_PRINT(" --base-path=XXX base path to search data (default: 'USERDATA:')"); APPL_PRINT(" --base-path=XXX base path to search data (default: 'USERDATA:')");

View File

@ -77,6 +77,8 @@ void appl::Windows::init() {
m_composer->loadFromFile("DATA:gui.xml"); m_composer->loadFromFile("DATA:gui.xml");
setSubWidget(m_composer); setSubWidget(m_composer);
drawWidgetTree();
m_listViewer = ememory::dynamicPointerCast<appl::widget::ListViewer>(m_composer->getSubObjectNamed("ws-name-list-viewer")); m_listViewer = ememory::dynamicPointerCast<appl::widget::ListViewer>(m_composer->getSubObjectNamed("ws-name-list-viewer"));
m_listViewer->signalSelect.connect(sharedFromThis(), &appl::Windows::onCallbackSelectMedia); m_listViewer->signalSelect.connect(sharedFromThis(), &appl::Windows::onCallbackSelectMedia);
@ -99,7 +101,6 @@ void appl::Windows::init() {
subBind(ewol::widget::Button, "access-fast-home", signalPressed, sharedFromThis(), &appl::Windows::onCallbackSelectHome); subBind(ewol::widget::Button, "access-fast-home", signalPressed, sharedFromThis(), &appl::Windows::onCallbackSelectHome);
subBind(ewol::widget::Button, "access-fast-group", signalPressed, sharedFromThis(), &appl::Windows::onCallbackSelectGroup); subBind(ewol::widget::Button, "access-fast-group", signalPressed, sharedFromThis(), &appl::Windows::onCallbackSelectGroup);
// Direct display list: // Direct display list:
ewol::propertySetOnObjectNamed("view-selection", "select", "ws-name-list-viewer"); ewol::propertySetOnObjectNamed("view-selection", "select", "ws-name-list-viewer");
subBind(ewol::widget::Menu, "menu-bar", signalSelect, sharedFromThis(), &appl::Windows::onCallbackMenuEvent); subBind(ewol::widget::Menu, "menu-bar", signalSelect, sharedFromThis(), &appl::Windows::onCallbackMenuEvent);

View File

@ -16,7 +16,6 @@
#include <ewol/widget/Image.hpp> #include <ewol/widget/Image.hpp>
#include <ewol/widget/Composer.hpp> #include <ewol/widget/Composer.hpp>
#include <ewol/widget/Manager.hpp> #include <ewol/widget/Manager.hpp>
//#include <vector>
#include <vector> #include <vector>
#include <etk/tool.hpp> #include <etk/tool.hpp>
#include <appl/debug.hpp> #include <appl/debug.hpp>
@ -30,9 +29,8 @@ appl::widget::Player::Player() {
void appl::widget::Player::init() { void appl::widget::Player::init() {
ewol::widget::Composer::init(); ewol::widget::Composer::init();
if (loadFromFile("DATA:gui-player.xml", getId()) == false) { if (*propertySubFile == "") {
APPL_ERROR("Can not load Player GUI from file ..."); propertySubFile.set("DATA:gui-player.xml");
return;
} }
subBind(ewol::widget::Button, "[" + etk::to_string(getId()) + "]appl-player-bt-previous", signalPressed, sharedFromThis(), &appl::widget::Player::onCallbackButtonPrevious); subBind(ewol::widget::Button, "[" + etk::to_string(getId()) + "]appl-player-bt-previous", signalPressed, sharedFromThis(), &appl::widget::Player::onCallbackButtonPrevious);
subBind(ewol::widget::Button, "[" + etk::to_string(getId()) + "]appl-player-bt-play", signalValue, sharedFromThis(), &appl::widget::Player::onCallbackButtonPlay); subBind(ewol::widget::Button, "[" + etk::to_string(getId()) + "]appl-player-bt-play", signalValue, sharedFromThis(), &appl::widget::Player::onCallbackButtonPlay);

View File

@ -139,7 +139,8 @@ appl::Router::Router() :
propertyClientMax(this, "client-max", 8000, "Maximum of client at the same time", &appl::Router::onPropertyChangeClientMax), propertyClientMax(this, "client-max", 8000, "Maximum of client at the same time", &appl::Router::onPropertyChangeClientMax),
propertyGateWayIp(this, "gw-ip", "127.0.0.1", "Ip to listen Gateway", &appl::Router::onPropertyChangeGateWayIp), propertyGateWayIp(this, "gw-ip", "127.0.0.1", "Ip to listen Gateway", &appl::Router::onPropertyChangeGateWayIp),
propertyGateWayPort(this, "gw-port", 1984, "Port to listen Gateway", &appl::Router::onPropertyChangeGateWayPort), propertyGateWayPort(this, "gw-port", 1984, "Port to listen Gateway", &appl::Router::onPropertyChangeGateWayPort),
propertyGateWayMax(this, "gw-max", 8000, "Maximum of Gateway at the same time", &appl::Router::onPropertyChangeGateWayMax) { propertyGateWayMax(this, "gw-max", 8000, "Maximum of Gateway at the same time", &appl::Router::onPropertyChangeGateWayMax),
propertyDelayToStop(this, "delay-to-stop", 0, "Delay before the client stop the connection in second (default: 0=automatic set by the gateway; -1=never disconnect; other the time )") {
m_interfaceClientServer = ememory::makeShared<appl::TcpServerInput>(this, false); m_interfaceClientServer = ememory::makeShared<appl::TcpServerInput>(this, false);
m_interfaceGateWayServer = ememory::makeShared<appl::TcpServerInput>(this, true); m_interfaceGateWayServer = ememory::makeShared<appl::TcpServerInput>(this, true);
load_db(); load_db();
@ -218,6 +219,7 @@ ememory::SharedPtr<appl::GateWayInterface> appl::Router::get(const std::string&
} else { } else {
// We're in the child here. // We're in the child here.
APPL_ERROR("Child Execution ..."); APPL_ERROR("Child Execution ...");
// TODO : Correct this ==> this is really bad
std::string binary = "/home/heero/dev/perso/out/Linux_x86_64/debug/staging/clang/zeus-package-base/zeus-package-base.app/bin/zeus-gateway"; std::string binary = "/home/heero/dev/perso/out/Linux_x86_64/debug/staging/clang/zeus-package-base/zeus-package-base.app/bin/zeus-gateway";
std::string userConf = "--user=" + it.m_name; std::string userConf = "--user=" + it.m_name;
std::string basePath = "--base-path=" + it.m_basePath; std::string basePath = "--base-path=" + it.m_basePath;
@ -234,12 +236,14 @@ ememory::SharedPtr<appl::GateWayInterface> appl::Router::get(const std::string&
//std::string logFile = " "; //std::string logFile = " ";
APPL_INFO("New Child log in = " << logFile); APPL_INFO("New Child log in = " << logFile);
#endif #endif
std::string delay = "--router-delay=" + etk::to_string(*propertyDelayToStop);
int ret = execlp( binary.c_str(), int ret = execlp( binary.c_str(),
binary.c_str(), // must repeate the binary name to have the name as first argument ... binary.c_str(), // must repeate the binary name to have the name as first argument ...
userConf.c_str(), userConf.c_str(),
"--srv=user", "--srv=user",
"--srv=picture", "--srv=picture",
"--srv=video", "--srv=video",
delay.c_str(),
basePath.c_str(), basePath.c_str(),
logFile.c_str(), logFile.c_str(),
NULL); NULL);

View File

@ -27,6 +27,7 @@ namespace appl {
eproperty::Value<std::string> propertyGateWayIp; eproperty::Value<std::string> propertyGateWayIp;
eproperty::Value<uint16_t> propertyGateWayPort; eproperty::Value<uint16_t> propertyGateWayPort;
eproperty::Value<uint16_t> propertyGateWayMax; eproperty::Value<uint16_t> propertyGateWayMax;
eproperty::Value<int32_t> propertyDelayToStop;
public: public:
Router(); Router();
virtual ~Router(); virtual ~Router();

View File

@ -34,16 +34,19 @@ int main(int _argc, const char *_argv[]) {
basicRouter.propertyGateWayPort.set(etk::string_to_uint16_t(std::string(&data[10]))); basicRouter.propertyGateWayPort.set(etk::string_to_uint16_t(std::string(&data[10])));
} else if (etk::start_with(data, "--gw-max=") == true) { } else if (etk::start_with(data, "--gw-max=") == true) {
basicRouter.propertyGateWayMax.set(etk::string_to_uint16_t(std::string(&data[9]))); basicRouter.propertyGateWayMax.set(etk::string_to_uint16_t(std::string(&data[9])));
} else if (etk::start_with(data, "--delay-stop-user=") == true) {
basicRouter.propertyDelayToStop.set(etk::string_to_int32_t(std::string(&data[18])));
} else if ( data == "-h" } else if ( data == "-h"
|| data == "--help") { || data == "--help") {
APPL_PRINT(etk::getApplicationName() << " - help : "); APPL_PRINT(etk::getApplicationName() << " - help : ");
APPL_PRINT(" " << _argv[0] << " [options]"); APPL_PRINT(" " << _argv[0] << " [options]");
APPL_PRINT(" --client-ip=XXX Client connection IP (default: 1.7.0.0.1)"); APPL_PRINT(" --client-ip=XXX Client connection IP (default: 1.7.0.0.1)");
APPL_PRINT(" --client-port=XXX Client connection PORT (default: 1983)"); APPL_PRINT(" --client-port=XXX Client connection PORT (default: 1983)");
APPL_PRINT(" --client-max=XXX Client Maximum parallele connection (default: 80)"); APPL_PRINT(" --client-max=XXX Client Maximum parallele connection (default: 80)");
APPL_PRINT(" --gw-ip=XXX Gateway connection IP (default: 1.7.0.0.1)"); APPL_PRINT(" --gw-ip=XXX Gateway connection IP (default: 1.7.0.0.1)");
APPL_PRINT(" --gw-port=XXX Gateway connection PORT (default: 1984)"); APPL_PRINT(" --gw-port=XXX Gateway connection PORT (default: 1984)");
APPL_PRINT(" --gw-max=XXX Gateway Maximum IO (default: 15)"); APPL_PRINT(" --gw-max=XXX Gateway Maximum IO (default: 15)");
APPL_PRINT(" --delay-stop-user=XXX Delay before the client stop the connection in second (default: 0=automatic set by the gateway; -1=never disconnect; other the time )");
return -1; return -1;
} }
} }