changed layout of restbed/json/webui so that JsonApi is the only server (with thread functionality in a separate class) and webui is a resource provider

This commit is contained in:
csoler 2019-11-23 00:17:17 +01:00
parent 997501a24d
commit 009ed54ce2
No known key found for this signature in database
GPG key ID: 7BCA522266C0804C
8 changed files with 156 additions and 170 deletions

View file

@ -136,7 +136,7 @@ void p3WebUI::setHtmlFilesDirectory(const std::string& html_dir)
int p3WebUI::status() const
{
if(isRunning())
if(rsJsonAPI->status()==RsJsonAPI::JSONAPI_STATUS_RUNNING && rsJsonAPI->hasResourceProvider(this))
return WEBUI_STATUS_RUNNING;
else
return WEBUI_STATUS_NOT_RUNNING;
@ -153,3 +153,22 @@ void p3WebUI::setUserPassword(const std::string& passwd)
std::cerr << "(EE) JsonAPI is not available in this buildof Retroshare! Cannot register a user password for the WebUI" << std::endl;
#endif
}
bool p3WebUI::restart()
{
rsJsonAPI->registerResourceProvider(this);
return rsJsonAPI->restart();
}
bool p3WebUI::stop()
{
rsJsonAPI->unregisterResourceProvider(this);
if(rsJsonAPI->status()==RsJsonAPI::JSONAPI_STATUS_RUNNING)
return rsJsonAPI->restart();
else
return true;
}

View file

@ -24,23 +24,26 @@
#include <vector>
#include <memory>
#include "retroshare/rswebui.h"
#include "jsonapi/restbedservice.h"
#include "jsonapi/jsonapi.h"
class p3WebUI: public RsWebUI, public RestbedService
class p3WebUI: public RsWebUI, public JsonApiResourceProvider
{
public:
p3WebUI(){}
virtual ~p3WebUI(){}
virtual void setHtmlFilesDirectory(const std::string& html_dir) override;
// implements RsWebUI
virtual bool restart() override { return RestbedService::restart();}
virtual bool stop() override { return RestbedService::stop();}
virtual void setListeningPort(uint16_t port) override { RestbedService::setListeningPort(port) ;}
virtual void setBindingAddress(const std::string& address) override { RestbedService::setBindAddress(address) ;}
virtual void setHtmlFilesDirectory(const std::string& html_dir) override;
virtual void setUserPassword(const std::string& passwd) override;
virtual int status() const override;
virtual bool restart() override ;
virtual bool stop() override ;
virtual int status() const override;
// implements JsonApiResourceProvider
virtual std::string getName() const override { return "Web Interface" ;}
virtual std::vector<std::shared_ptr<restbed::Resource> > getResources() const override;
};

View file

@ -398,9 +398,9 @@ int RsInit::InitRetroShare(const RsConfigOptions& conf)
RsInfo() << "Allocating jsonAPI server (not launched yet) " << std::endl;
JsonApiServer *jas = new JsonApiServer();
jas->setListeningPort(conf.jsonApiPort);
jas->setBindingAddress(conf.jsonApiBindAddress);
jas->setBindAddress(conf.jsonApiBindAddress);
if(conf.jsonApiPort != NULL)
if(conf.jsonApiPort != 0)
{
RsInfo() << "Launching jsonAPI server on port " << conf.jsonApiPort << std::endl;
jas->restart();