Inject list of services instead of service factory

pull/63/head
michal.szwaj 2018-04-06 20:24:08 +02:00
parent dfd3cb7b0c
commit 24bbe66954
3 changed files with 13 additions and 13 deletions

View File

@ -25,7 +25,7 @@
#include <f1x/aasdk/Channel/AV/VideoServiceChannel.hpp>
#include <f1x/openauto/autoapp/Configuration/IConfiguration.hpp>
#include <f1x/openauto/autoapp/Projection/IAndroidAutoEntity.hpp>
#include <f1x/openauto/autoapp/Projection/IServiceFactory.hpp>
#include <f1x/openauto/autoapp/Projection/IService.hpp>
#include <f1x/openauto/autoapp/Projection/IPinger.hpp>
namespace f1x
@ -45,7 +45,7 @@ public:
aasdk::transport::ITransport::Pointer transport,
aasdk::messenger::IMessenger::Pointer messenger,
configuration::IConfiguration::Pointer configuration,
IServiceFactory& serviceFactory,
ServiceList serviceList,
IPinger::Pointer pinger);
~AndroidAutoEntity() override;
@ -73,9 +73,8 @@ private:
aasdk::messenger::IMessenger::Pointer messenger_;
aasdk::channel::control::IControlServiceChannel::Pointer controlServiceChannel_;
configuration::IConfiguration::Pointer configuration_;
IServiceFactory& serviceFactory_;
IPinger::Pointer pinger_;
ServiceList serviceList_;
IPinger::Pointer pinger_;
IAndroidAutoEntityEventHandler* eventHandler_;
};

View File

@ -34,7 +34,7 @@ AndroidAutoEntity::AndroidAutoEntity(boost::asio::io_service& ioService,
aasdk::transport::ITransport::Pointer transport,
aasdk::messenger::IMessenger::Pointer messenger,
configuration::IConfiguration::Pointer configuration,
IServiceFactory& serviceFactory,
ServiceList serviceList,
IPinger::Pointer pinger)
: strand_(ioService)
, cryptor_(std::move(cryptor))
@ -42,7 +42,7 @@ AndroidAutoEntity::AndroidAutoEntity(boost::asio::io_service& ioService,
, messenger_(std::move(messenger))
, controlServiceChannel_(std::make_shared<aasdk::channel::control::ControlServiceChannel>(strand_, messenger_))
, configuration_(std::move(configuration))
, serviceFactory_(serviceFactory)
, serviceList_(std::move(serviceList))
, pinger_(std::move(pinger))
, eventHandler_(nullptr)
{
@ -58,16 +58,13 @@ void AndroidAutoEntity::start(IAndroidAutoEntityEventHandler& eventHandler)
strand_.dispatch([this, self = this->shared_from_this(), eventHandler = &eventHandler]() {
OPENAUTO_LOG(info) << "[AndroidAutoEntity] start.";
cryptor_->init();
serviceList_ = serviceFactory_.create(messenger_);
eventHandler_ = eventHandler;
std::for_each(serviceList_.begin(), serviceList_.end(), std::bind(&IService::start, std::placeholders::_1));
this->schedulePing();
auto versionRequestPromise = aasdk::channel::SendPromise::defer(strand_);
versionRequestPromise->then([]() {}, std::bind(&AndroidAutoEntity::onChannelError, this->shared_from_this(), std::placeholders::_1));
controlServiceChannel_->sendVersionRequest(std::move(versionRequestPromise));
eventHandler_ = eventHandler;
controlServiceChannel_->receive(this->shared_from_this());
});
}
@ -78,11 +75,11 @@ void AndroidAutoEntity::stop()
OPENAUTO_LOG(info) << "[AndroidAutoEntity] stop.";
eventHandler_ = nullptr;
pinger_->cancel();
std::for_each(serviceList_.begin(), serviceList_.end(), std::bind(&IService::stop, std::placeholders::_1));
pinger_->cancel();
messenger_->stop();
cryptor_->deinit();
transport_->stop();
cryptor_->deinit();
});
}

View File

@ -63,11 +63,15 @@ IAndroidAutoEntity::Pointer AndroidAutoEntityFactory::create(aasdk::transport::I
{
auto sslWrapper(std::make_shared<aasdk::transport::SSLWrapper>());
auto cryptor(std::make_shared<aasdk::messenger::Cryptor>(std::move(sslWrapper)));
cryptor->init();
auto messenger(std::make_shared<aasdk::messenger::Messenger>(ioService_,
std::make_shared<aasdk::messenger::MessageInStream>(ioService_, transport, cryptor),
std::make_shared<aasdk::messenger::MessageOutStream>(ioService_, transport, cryptor)));
auto serviceList = serviceFactory_.create(messenger);
auto pinger(std::make_shared<Pinger>(ioService_, 5000));
return std::make_shared<AndroidAutoEntity>(ioService_, std::move(cryptor), std::move(transport), std::move(messenger), configuration_, serviceFactory_, std::move(pinger));
return std::make_shared<AndroidAutoEntity>(ioService_, std::move(cryptor), std::move(transport), std::move(messenger), configuration_, std::move(serviceList), std::move(pinger));
}
}