mirror of https://github.com/f1xpl/openauto.git
Inject list of services instead of service factory
parent
dfd3cb7b0c
commit
24bbe66954
|
@ -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_;
|
||||
};
|
||||
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue