fixed compilation by modifying wrappers to account for the shared_ptr mService

This commit is contained in:
csoler 2019-11-23 15:11:22 +01:00
parent 009ed54ce2
commit b8b7d103e1
No known key found for this signature in database
GPG key ID: 7BCA522266C0804C
9 changed files with 33 additions and 57 deletions

View file

@ -337,7 +337,7 @@ JsonApiServer::JsonApiServer(): configMutex("JsonApiServer config")
std::function<void(std::shared_ptr<const RsEvent>)> multiCallback =
[this, weakSession, hId](std::shared_ptr<const RsEvent> event)
{
mService.schedule( [weakSession, hId, event]()
mService->schedule( [weakSession, hId, event]()
{
auto session = weakSession.lock();
if(!session || session->is_closed())
@ -601,9 +601,9 @@ void JsonApiServer::handleCorsOptions(
const std::shared_ptr<restbed::Session> session )
{ session->close(rb::NO_CONTENT, corsOptionsHeaders); }
int JsonApiServer::status() const
int JsonApiServer::status()
{
if(RestbedService::isRunning() && RestbedService::isClient(this))
if(RestbedService::isRunning())
return JSONAPI_STATUS_RUNNING;
else
return JSONAPI_STATUS_NOT_RUNNING;

View file

@ -69,10 +69,11 @@ public:
bool restart() override { return RestbedService::restart(); }
bool stop() override { return RestbedService::stop();}
int status() const override;
int status() override;
void setListeningPort(uint16_t port) override { return RestbedService::setListeningPort(port); }
void setBindingAddress(const std::string& bind_address) override { return RestbedService::setBindAddress(bind_address); }
uint16_t listeningPort() const override { return RestbedService::listeningPort() ; }
virtual void connectToConfigManager(p3ConfigMgr *cfgmgr);
@ -189,6 +190,6 @@ private:
}
std::vector<std::shared_ptr<rb::Resource> > _resources;
std::set<JsonApiResourceProvider *> _resource_providers;
std::set<const JsonApiResourceProvider *> _resource_providers;
};

View file

@ -31,7 +31,7 @@ RestbedService::RestbedService()
mBindingAddress = "127.0.0.1";
}
void RestbedService::stop()
bool RestbedService::stop()
{
mService->stop();
@ -42,19 +42,15 @@ void RestbedService::stop()
std::cerr << "(II) shutting down restbed service." << std::endl;
rstime::rs_usleep(1000*1000);
}
return true;
}
uint16_t RestbedService::listeningPort() const { return mListeningPort ; }
void RestbedService::setListeningPort(uint16_t p) { mListeningPort = p ; }
void RestbedService::setBindAddress(const std::string& bindAddress) { mBindingAddress = bindAddress ; }
uint16_t RestbedService::listeningPort() const { return mListeningPort;}
void RestbedService::runloop() override
void RestbedService::runloop()
{
if(_resources.empty())
{
RsErr() << "(EE) please call RestbedService::setResources() before launching the service!" << std::endl;
return;
}
auto settings = std::make_shared< restbed::Settings >( );
settings->set_port( mListeningPort );
settings->set_bind_address( mBindingAddress );

View file

@ -35,10 +35,11 @@ public:
bool restart();
bool stop();
bool isRunning();
bool isRunning() const;
void setListeningPort(uint16_t port) ;
void setBindAddress(const std::string& bind_address);
uint16_t listeningPort() const ;
// should be overloaded by sub-class in order to provide resources to the restbed Service.
@ -47,9 +48,9 @@ public:
protected:
void runloop() override;
private:
std::shared_ptr<restbed::Service> mService; // managed by RestbedService because it needs to be properly deleted when restarted.
private:
uint16_t mListeningPort;
std::string mBindingAddress;
};