From 49fed662e5b71c96fccaecc98721af0bce2ac8ea Mon Sep 17 00:00:00 2001 From: Mirko Waechter <mirko.waechter@kit.edu> Date: Mon, 16 Jul 2018 17:39:00 +0200 Subject: [PATCH] RobotPool: added possibility to create n robots on RobotPool creation --- source/RobotAPI/libraries/core/RobotPool.cpp | 10 ++++++-- source/RobotAPI/libraries/core/RobotPool.h | 2 +- .../libraries/core/test/RobotTest.cpp | 25 ++++++++++--------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/source/RobotAPI/libraries/core/RobotPool.cpp b/source/RobotAPI/libraries/core/RobotPool.cpp index 52dc4f8d6..d12f6f2b1 100644 --- a/source/RobotAPI/libraries/core/RobotPool.cpp +++ b/source/RobotAPI/libraries/core/RobotPool.cpp @@ -28,10 +28,14 @@ namespace armarx { - RobotPool::RobotPool(VirtualRobot::RobotPtr robot) : + RobotPool::RobotPool(VirtualRobot::RobotPtr robot, size_t defaultSize) : baseRobot(robot) { - + std::vector<VirtualRobot::RobotPtr> tempVec; + for (size_t i = 0; i < defaultSize; ++i) + { + tempVec.push_back(getRobot()); + } } VirtualRobot::RobotPtr RobotPool::getRobot(int inflation) @@ -94,7 +98,9 @@ namespace armarx newList.push_back(r); } else + { count++; + } } pair.second = newList; } diff --git a/source/RobotAPI/libraries/core/RobotPool.h b/source/RobotAPI/libraries/core/RobotPool.h index cb205f613..e22c1a898 100644 --- a/source/RobotAPI/libraries/core/RobotPool.h +++ b/source/RobotAPI/libraries/core/RobotPool.h @@ -36,7 +36,7 @@ namespace armarx // VirtualRobot::RobotPtr robot; // }; - RobotPool(VirtualRobot::RobotPtr robot); + RobotPool(VirtualRobot::RobotPtr robot, size_t defaultSize = 1); /** * @brief getRobot * @param inflation inflation of collision model in mm diff --git a/source/RobotAPI/libraries/core/test/RobotTest.cpp b/source/RobotAPI/libraries/core/test/RobotTest.cpp index ebc75bb9f..c34a4d38a 100644 --- a/source/RobotAPI/libraries/core/test/RobotTest.cpp +++ b/source/RobotAPI/libraries/core/test/RobotTest.cpp @@ -50,25 +50,26 @@ BOOST_AUTO_TEST_CASE(RobotPoolTest) ArmarXDataPath::getAbsolutePath(fn, fn); std::string robotFilename = fn; VirtualRobot::RobotPtr robot = VirtualRobot::RobotIO::loadRobot(robotFilename, VirtualRobot::RobotIO::eCollisionModel); - RobotPool pool(robot); + RobotPool pool(robot, 2); { + BOOST_CHECK_EQUAL(pool.getPoolSize(), 2); auto clone = pool.getRobot(); - ARMARX_CHECK_EQUAL(pool.getPoolSize(), 1); - ARMARX_CHECK_EQUAL(pool.getRobotsInUseCount(), 1); + BOOST_CHECK_EQUAL(pool.getPoolSize(), 2); + BOOST_CHECK_EQUAL(pool.getRobotsInUseCount(), 1); { auto clone2 = pool.getRobot(); - ARMARX_CHECK_EQUAL(pool.getPoolSize(), 2); - ARMARX_CHECK_EQUAL(pool.getRobotsInUseCount(), 2); + BOOST_CHECK_EQUAL(pool.getPoolSize(), 2); + BOOST_CHECK_EQUAL(pool.getRobotsInUseCount(), 2); } - ARMARX_CHECK_EQUAL(pool.getPoolSize(), 2); - ARMARX_CHECK_EQUAL(pool.getRobotsInUseCount(), 1); + BOOST_CHECK_EQUAL(pool.getPoolSize(), 2); + BOOST_CHECK_EQUAL(pool.getRobotsInUseCount(), 1); auto clone2 = pool.getRobot(); - ARMARX_CHECK_EQUAL(pool.getPoolSize(), 2); - ARMARX_CHECK_EQUAL(pool.getRobotsInUseCount(), 2); + BOOST_CHECK_EQUAL(pool.getPoolSize(), 2); + BOOST_CHECK_EQUAL(pool.getRobotsInUseCount(), 2); } - ARMARX_CHECK_EQUAL(pool.getRobotsInUseCount(), 0); - ARMARX_CHECK_EQUAL(pool.clean(), 2); - ARMARX_CHECK_EQUAL(pool.getPoolSize(), 0); + BOOST_CHECK_EQUAL(pool.getRobotsInUseCount(), 0); + BOOST_CHECK_EQUAL(pool.clean(), 2); + BOOST_CHECK_EQUAL(pool.getPoolSize(), 0); } -- GitLab