Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement changes in io interfaces #7

Merged
merged 5 commits into from Nov 12, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -30,6 +30,11 @@
namespace rosbag2_bag_v2_plugins
{

namespace
{
constexpr const char * const IDENTIFIER = "rosbag_v2";
}

RosbagV2Storage::RosbagV2Storage()
: ros_v2_bag_(std::make_unique<rosbag::Bag>()), bag_view_of_replayable_messages_(nullptr) {}

Expand Down Expand Up @@ -104,16 +109,29 @@ std::vector<rosbag2_storage::TopicMetadata> RosbagV2Storage::get_all_topics_and_
return topics_with_type;
}

std::string RosbagV2Storage::get_storage_identifier() const
{
return IDENTIFIER;
}

uint64_t RosbagV2Storage::get_bagfile_size() const
{
return rosbag2_storage::FilesystemHelper::get_file_size(ros_v2_bag_->getFileName());
}

std::string RosbagV2Storage::get_relative_path() const
{
return rosbag2_storage::FilesystemHelper::get_file_name(ros_v2_bag_->getFileName());
}

rosbag2_storage::BagMetadata RosbagV2Storage::get_metadata()
{
auto bag_view = std::make_unique<rosbag::View>(*ros_v2_bag_);
auto full_file_path = ros_v2_bag_->getFileName();
rosbag2_storage::BagMetadata metadata;
metadata.storage_identifier = "rosbag_v2";
metadata.bag_size = rosbag2_storage::FilesystemHelper::get_file_size(full_file_path);
metadata.relative_file_paths = {
rosbag2_storage::FilesystemHelper::get_file_name(full_file_path)
};
metadata.storage_identifier = get_storage_identifier();
metadata.bag_size = get_bagfile_size();
metadata.relative_file_paths = {get_relative_path()};
metadata.duration = std::chrono::nanoseconds(
bag_view->getEndTime().toNSec() - bag_view->getBeginTime().toNSec());
metadata.starting_time = std::chrono::time_point<std::chrono::high_resolution_clock>(
Expand Down
Expand Up @@ -43,6 +43,16 @@ class RosbagV2Storage : public rosbag2_storage::storage_interfaces::ReadOnlyInte

rosbag2_storage::BagMetadata get_metadata() override;

uint64_t get_bagfile_size() const override;
zmichaels11 marked this conversation as resolved.
Show resolved Hide resolved
zmichaels11 marked this conversation as resolved.
Show resolved Hide resolved

std::string get_relative_path() const override;

/**
* Returns the identifier for the rosbag_v2 plugin.
* \returns the identifier "rosbag_v2"
*/
std::string get_storage_identifier() const override;
zmichaels11 marked this conversation as resolved.
Show resolved Hide resolved
zmichaels11 marked this conversation as resolved.
Show resolved Hide resolved

private:
template<typename T>
bool vector_has_already_element(std::vector<T> vector, const T & element)
Expand Down
Expand Up @@ -76,7 +76,7 @@ TEST_F(RosbagV2StorageTestFixture, get_metadata_returns_bagfile_description)

auto bag_metadata = storage_->get_metadata();

EXPECT_THAT(bag_metadata.version, Eq(1));
EXPECT_THAT(bag_metadata.version, Eq(2));
zmichaels11 marked this conversation as resolved.
Show resolved Hide resolved
EXPECT_THAT(bag_metadata.storage_identifier, StrEq("rosbag_v2"));
EXPECT_THAT(bag_metadata.bag_size, Eq(9023u));
EXPECT_THAT(bag_metadata.relative_file_paths, ElementsAre("test_bag.bag"));
Expand Down