in kinesis_video_streamer/src/streamer.cpp [39:78]
KinesisManagerStatus StreamerNode::Initialize(std::shared_ptr<Aws::Client::Ros2NodeParameterReader> parameter_reader,
std::shared_ptr<RosStreamSubscriptionInstaller> subscription_installer)
{
parameter_reader_ = parameter_reader;
subscription_installer_ = subscription_installer;
/* Log4cplus setup for the Kinesis Producer SDK */
std::string log4cplus_config;
parameter_reader_->ReadParam(
GetKinesisVideoParameter(kStreamParameters.log4cplus_config), log4cplus_config);
if (!log4cplus_config.empty()) {
log4cplus::PropertyConfigurator::doConfigure(log4cplus_config);
} else {
log4cplus::BasicConfigurator configurator;
configurator.configure();
}
Aws::Client::ClientConfigurationProvider configuration_provider(parameter_reader_);
Aws::Client::ClientConfiguration aws_sdk_config =
configuration_provider.GetClientConfiguration();
/* Set up subscription callbacks */
if (!subscription_installer_->SetDefaultCallbacks()) {
AWS_LOG_FATAL(__func__, "Failed to set up subscription callbacks.");
return KINESIS_MANAGER_STATUS_ERROR_BASE;
}
auto kinesis_client = std::unique_ptr<KinesisClient>(
Aws::New<Aws::Kinesis::KinesisClientFacade>(__func__, aws_sdk_config));
stream_manager_ = std::make_shared<KinesisStreamManager>(
parameter_reader_.get(), &stream_definition_provider_, subscription_installer_.get(),
std::move(kinesis_client));
subscription_installer_->set_stream_manager(stream_manager_.get());
/* Initialization of video producer */
KinesisManagerStatus initialize_video_producer_result =
stream_manager_->InitializeVideoProducer(aws_sdk_config.region.c_str());
if (KINESIS_MANAGER_STATUS_FAILED(initialize_video_producer_result)) {
AWS_LOGSTREAM_FATAL(__func__, "Failed to initialize video producer. Error code: "
<< initialize_video_producer_result);
return initialize_video_producer_result;
}
return KINESIS_MANAGER_STATUS_SUCCESS;
}