bool RosStreamSubscriptionInstaller::SetupRekognitionEnabledKinesisVideoFrameTransport()

in kinesis_video_streamer/src/ros_stream_subscription_installer.cpp [67:95]


bool RosStreamSubscriptionInstaller::SetupRekognitionEnabledKinesisVideoFrameTransport(
  const RekognitionEnabledKinesisVideoFrameTransportCallbackFn callback)
{
  if (!callback) {
    AWS_LOG_ERROR(__func__, "Invalid callback was provided");
    return false;
  }
  SubscriberSetupFn rekognition_kinesis_video_frame_setup_closure =
    [this, callback](const StreamSubscriptionDescriptor & descriptor) -> bool {
    if (descriptor.rekognition_topic_name.empty()) {
      AWS_LOG_ERROR(__func__, "Can't set up subscription: Rekognition topic name is empty.");
      return false;
    }
    boost::function<void(const kinesis_video_msgs::KinesisVideoFrame::ConstPtr &)> callback_wrapper;
    ros::Publisher publisher = handle_->advertise<std_msgs::String>(
      descriptor.rekognition_topic_name, descriptor.message_queue_size);
    callback_wrapper = [this, callback, descriptor, publisher](
                         const kinesis_video_msgs::KinesisVideoFrame::ConstPtr & frame) -> void {
      callback(*this->stream_manager_, descriptor.stream_name, frame, publisher);
    };
    standard_subscribers_.push_back(handle_->subscribe(
      descriptor.topic_name.c_str(), descriptor.message_queue_size, callback_wrapper));
    publishers_[descriptor.topic_name] = publisher;
    return true;
  };
  installers_.insert({KINESIS_STREAM_INPUT_TYPE_REKOGNITION_ENABLED_KINESIS_VIDEO_FRAME,
                      rekognition_kinesis_video_frame_setup_closure});
  return true;
}