generated from wessel/boilerplate
fix(FinalGradeDeterminator): build error fix, implement datamap
Implement datamap to catch incoming grades and store them by student course and name
This commit is contained in:
@@ -12,7 +12,7 @@ FinalGradeDeterminator::FinalGradeDeterminator() : Node("final_grade_determinato
|
|||||||
exam_subscriber_ = this->create_subscription<g2_2025_interfaces::msg::Exam>(
|
exam_subscriber_ = this->create_subscription<g2_2025_interfaces::msg::Exam>(
|
||||||
"exam_results", 10,
|
"exam_results", 10,
|
||||||
std::bind(
|
std::bind(
|
||||||
&ExamResultGenerator::exam_results_callback,
|
&FinalGradeDeterminator::exam_results_callback,
|
||||||
this,
|
this,
|
||||||
std::placeholders::_1
|
std::placeholders::_1
|
||||||
)
|
)
|
||||||
@@ -22,18 +22,24 @@ FinalGradeDeterminator::FinalGradeDeterminator() : Node("final_grade_determinato
|
|||||||
}
|
}
|
||||||
|
|
||||||
void FinalGradeDeterminator::exam_results_callback(const g2_2025_interfaces::msg::Exam::SharedPtr msg){
|
void FinalGradeDeterminator::exam_results_callback(const g2_2025_interfaces::msg::Exam::SharedPtr msg){
|
||||||
dataMap_[{ msg->student_name, msg->course_name}].push_back(msg->result);
|
studentCourseCombo_.student_name = msg->student_name;
|
||||||
if (dataMap_[{ msg->student_name, msg->course_name}].size() = PARAM)
|
studentCourseCombo_.course_name = msg->course_name;
|
||||||
{
|
|
||||||
|
|
||||||
|
dataMap_[studentCourseCombo_].push_back(msg->result);
|
||||||
|
if (dataMap_[studentCourseCombo_].size() == PARAM)
|
||||||
|
{
|
||||||
|
RCLCPP_INFO(this->get_logger(),
|
||||||
|
"%s // %s is full",
|
||||||
|
msg->student_name.c_str(), msg->course_name.c_str()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FinalGradeDeterminator::grade_calculator_response(rclcpp::Client<g2_2025_interfaces::srv::Exams>::SharedFuture future){
|
void FinalGradeDeterminator::grade_calculator_response(rclcpp::Client<g2_2025_interfaces::srv::Exams>::SharedFuture future){
|
||||||
auto response = future.get();
|
auto response = future.get();
|
||||||
StudentCourse passthrough;
|
// StudentCourse passthrough;
|
||||||
passthrough.
|
// passthrough.course_name
|
||||||
db_manager_->store_final_course_result()
|
// db_manager_->store_final_course_result();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace assignments::one::final_grade_determinator
|
} // namespace assignments::one::final_grade_determinator
|
||||||
|
|||||||
@@ -28,11 +28,12 @@ private:
|
|||||||
|
|
||||||
std::unique_ptr<DatabaseManager> db_manager_;
|
std::unique_ptr<DatabaseManager> db_manager_;
|
||||||
|
|
||||||
std::map<std::pair<std::string, std::string>, std::vector<int>> dataMap_;
|
StudentCourse studentCourseCombo_;
|
||||||
|
StudentCourseResultMap dataMap_;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void exam_results_callback(const g2_2025_interfaces::msg::Exam::SharedPtr msg);
|
void exam_results_callback(const g2_2025_interfaces::msg::Exam::SharedPtr msg);
|
||||||
void grade_calculator_response(rclcpp::Client<g2_2025_interfaces::srv::Exams>::SharedFuture future)
|
void grade_calculator_response(rclcpp::Client<g2_2025_interfaces::srv::Exams>::SharedFuture future);
|
||||||
};
|
};
|
||||||
} // namespace assignments::one::final_grade_determinator
|
} // namespace assignments::one::final_grade_determinator
|
||||||
Reference in New Issue
Block a user