Inject list of services instead of service factory
This commit is contained in:
parent
dfd3cb7b0c
commit
24bbe66954
@ -25,7 +25,7 @@
|
|||||||
#include <f1x/aasdk/Channel/AV/VideoServiceChannel.hpp>
|
#include <f1x/aasdk/Channel/AV/VideoServiceChannel.hpp>
|
||||||
#include <f1x/openauto/autoapp/Configuration/IConfiguration.hpp>
|
#include <f1x/openauto/autoapp/Configuration/IConfiguration.hpp>
|
||||||
#include <f1x/openauto/autoapp/Projection/IAndroidAutoEntity.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>
|
#include <f1x/openauto/autoapp/Projection/IPinger.hpp>
|
||||||
|
|
||||||
namespace f1x
|
namespace f1x
|
||||||
@ -45,7 +45,7 @@ public:
|
|||||||
aasdk::transport::ITransport::Pointer transport,
|
aasdk::transport::ITransport::Pointer transport,
|
||||||
aasdk::messenger::IMessenger::Pointer messenger,
|
aasdk::messenger::IMessenger::Pointer messenger,
|
||||||
configuration::IConfiguration::Pointer configuration,
|
configuration::IConfiguration::Pointer configuration,
|
||||||
IServiceFactory& serviceFactory,
|
ServiceList serviceList,
|
||||||
IPinger::Pointer pinger);
|
IPinger::Pointer pinger);
|
||||||
~AndroidAutoEntity() override;
|
~AndroidAutoEntity() override;
|
||||||
|
|
||||||
@ -73,9 +73,8 @@ private:
|
|||||||
aasdk::messenger::IMessenger::Pointer messenger_;
|
aasdk::messenger::IMessenger::Pointer messenger_;
|
||||||
aasdk::channel::control::IControlServiceChannel::Pointer controlServiceChannel_;
|
aasdk::channel::control::IControlServiceChannel::Pointer controlServiceChannel_;
|
||||||
configuration::IConfiguration::Pointer configuration_;
|
configuration::IConfiguration::Pointer configuration_;
|
||||||
IServiceFactory& serviceFactory_;
|
|
||||||
IPinger::Pointer pinger_;
|
|
||||||
ServiceList serviceList_;
|
ServiceList serviceList_;
|
||||||
|
IPinger::Pointer pinger_;
|
||||||
IAndroidAutoEntityEventHandler* eventHandler_;
|
IAndroidAutoEntityEventHandler* eventHandler_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ AndroidAutoEntity::AndroidAutoEntity(boost::asio::io_service& ioService,
|
|||||||
aasdk::transport::ITransport::Pointer transport,
|
aasdk::transport::ITransport::Pointer transport,
|
||||||
aasdk::messenger::IMessenger::Pointer messenger,
|
aasdk::messenger::IMessenger::Pointer messenger,
|
||||||
configuration::IConfiguration::Pointer configuration,
|
configuration::IConfiguration::Pointer configuration,
|
||||||
IServiceFactory& serviceFactory,
|
ServiceList serviceList,
|
||||||
IPinger::Pointer pinger)
|
IPinger::Pointer pinger)
|
||||||
: strand_(ioService)
|
: strand_(ioService)
|
||||||
, cryptor_(std::move(cryptor))
|
, cryptor_(std::move(cryptor))
|
||||||
@ -42,7 +42,7 @@ AndroidAutoEntity::AndroidAutoEntity(boost::asio::io_service& ioService,
|
|||||||
, messenger_(std::move(messenger))
|
, messenger_(std::move(messenger))
|
||||||
, controlServiceChannel_(std::make_shared<aasdk::channel::control::ControlServiceChannel>(strand_, messenger_))
|
, controlServiceChannel_(std::make_shared<aasdk::channel::control::ControlServiceChannel>(strand_, messenger_))
|
||||||
, configuration_(std::move(configuration))
|
, configuration_(std::move(configuration))
|
||||||
, serviceFactory_(serviceFactory)
|
, serviceList_(std::move(serviceList))
|
||||||
, pinger_(std::move(pinger))
|
, pinger_(std::move(pinger))
|
||||||
, eventHandler_(nullptr)
|
, eventHandler_(nullptr)
|
||||||
{
|
{
|
||||||
@ -58,16 +58,13 @@ void AndroidAutoEntity::start(IAndroidAutoEntityEventHandler& eventHandler)
|
|||||||
strand_.dispatch([this, self = this->shared_from_this(), eventHandler = &eventHandler]() {
|
strand_.dispatch([this, self = this->shared_from_this(), eventHandler = &eventHandler]() {
|
||||||
OPENAUTO_LOG(info) << "[AndroidAutoEntity] start.";
|
OPENAUTO_LOG(info) << "[AndroidAutoEntity] start.";
|
||||||
|
|
||||||
cryptor_->init();
|
eventHandler_ = eventHandler;
|
||||||
|
|
||||||
serviceList_ = serviceFactory_.create(messenger_);
|
|
||||||
std::for_each(serviceList_.begin(), serviceList_.end(), std::bind(&IService::start, std::placeholders::_1));
|
std::for_each(serviceList_.begin(), serviceList_.end(), std::bind(&IService::start, std::placeholders::_1));
|
||||||
this->schedulePing();
|
this->schedulePing();
|
||||||
|
|
||||||
auto versionRequestPromise = aasdk::channel::SendPromise::defer(strand_);
|
auto versionRequestPromise = aasdk::channel::SendPromise::defer(strand_);
|
||||||
versionRequestPromise->then([]() {}, std::bind(&AndroidAutoEntity::onChannelError, this->shared_from_this(), std::placeholders::_1));
|
versionRequestPromise->then([]() {}, std::bind(&AndroidAutoEntity::onChannelError, this->shared_from_this(), std::placeholders::_1));
|
||||||
controlServiceChannel_->sendVersionRequest(std::move(versionRequestPromise));
|
controlServiceChannel_->sendVersionRequest(std::move(versionRequestPromise));
|
||||||
eventHandler_ = eventHandler;
|
|
||||||
controlServiceChannel_->receive(this->shared_from_this());
|
controlServiceChannel_->receive(this->shared_from_this());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -78,11 +75,11 @@ void AndroidAutoEntity::stop()
|
|||||||
OPENAUTO_LOG(info) << "[AndroidAutoEntity] stop.";
|
OPENAUTO_LOG(info) << "[AndroidAutoEntity] stop.";
|
||||||
|
|
||||||
eventHandler_ = nullptr;
|
eventHandler_ = nullptr;
|
||||||
pinger_->cancel();
|
|
||||||
std::for_each(serviceList_.begin(), serviceList_.end(), std::bind(&IService::stop, std::placeholders::_1));
|
std::for_each(serviceList_.begin(), serviceList_.end(), std::bind(&IService::stop, std::placeholders::_1));
|
||||||
|
pinger_->cancel();
|
||||||
messenger_->stop();
|
messenger_->stop();
|
||||||
cryptor_->deinit();
|
|
||||||
transport_->stop();
|
transport_->stop();
|
||||||
|
cryptor_->deinit();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,11 +63,15 @@ IAndroidAutoEntity::Pointer AndroidAutoEntityFactory::create(aasdk::transport::I
|
|||||||
{
|
{
|
||||||
auto sslWrapper(std::make_shared<aasdk::transport::SSLWrapper>());
|
auto sslWrapper(std::make_shared<aasdk::transport::SSLWrapper>());
|
||||||
auto cryptor(std::make_shared<aasdk::messenger::Cryptor>(std::move(sslWrapper)));
|
auto cryptor(std::make_shared<aasdk::messenger::Cryptor>(std::move(sslWrapper)));
|
||||||
|
cryptor->init();
|
||||||
|
|
||||||
auto messenger(std::make_shared<aasdk::messenger::Messenger>(ioService_,
|
auto messenger(std::make_shared<aasdk::messenger::Messenger>(ioService_,
|
||||||
std::make_shared<aasdk::messenger::MessageInStream>(ioService_, transport, cryptor),
|
std::make_shared<aasdk::messenger::MessageInStream>(ioService_, transport, cryptor),
|
||||||
std::make_shared<aasdk::messenger::MessageOutStream>(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));
|
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…
x
Reference in New Issue
Block a user