Skip to content

Commit

Permalink
Benchmark example updated
Browse files Browse the repository at this point in the history
Signed-off-by: Javier Gil Aviles <javiergil@eprosima.com>
  • Loading branch information
Javgilavi committed Dec 4, 2024
1 parent 07638e5 commit 4c8a8db
Show file tree
Hide file tree
Showing 44 changed files with 5,863 additions and 0 deletions.
1 change: 1 addition & 0 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

set(fastdds_FOUND TRUE)

add_subdirectory(cpp/benchmark)
add_subdirectory(cpp/configuration)
add_subdirectory(cpp/content_filter)
add_subdirectory(cpp/custom_payload_pool)
Expand Down
56 changes: 56 additions & 0 deletions examples/cpp/benchmark/Application.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// Copyright 2024 Proyectos y Sistemas de Mantenimiento SL (eProsima).
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/**
* @file Application.cpp
*
*/

#include "Application.hpp"

#include "SubscriberApp.hpp"
#include "PublisherApp.hpp"

using namespace eprosima::fastdds::dds;

namespace eprosima {
namespace fastdds {
namespace examples {
namespace benchmark {

//! Factory method to create a publisher or subscriber
std::shared_ptr<Application> Application::make_app(
const CLIParser::benchmark_config& config)
{
std::shared_ptr<Application> entity;
switch (config.entity)
{
case CLIParser::EntityKind::PUBLISHER:
entity = std::make_shared<PublisherApp>(config.pub_config);
break;
case CLIParser::EntityKind::SUBSCRIBER:
entity = std::make_shared<SubscriberApp>(config.sub_config);
break;
case CLIParser::EntityKind::UNDEFINED:
default:
throw std::runtime_error("Entity initialization failed");
break;
}
return entity;
}

} // namespace benchmark
} // namespace examples
} // namespace fastdds
} // namespace eprosima
55 changes: 55 additions & 0 deletions examples/cpp/benchmark/Application.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// Copyright 2024 Proyectos y Sistemas de Mantenimiento SL (eProsima).
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/**
* @file Application.hpp
*
*/

#ifndef FASTDDS_EXAMPLES_CPP_BENCHMARK__APPLICATION_HPP
#define FASTDDS_EXAMPLES_CPP_BENCHMARK__APPLICATION_HPP

#include <atomic>

#include "CLIParser.hpp"

namespace eprosima {
namespace fastdds {
namespace examples {
namespace benchmark {

class Application
{
public:

//! Virtual destructor
virtual ~Application() = default;

//! Run application
virtual void run() = 0;

//! Trigger the end of execution
virtual void stop() = 0;

//! Factory method to create applications based on configuration
static std::shared_ptr<Application> make_app(
const CLIParser::benchmark_config& config);
};

} // namespace benchmark
} // namespace examples
} // namespace fastdds
} // namespace eprosima

#endif // FASTDDS_EXAMPLES_CPP_BENCHMARK__APPLICATION_HPP
178 changes: 178 additions & 0 deletions examples/cpp/benchmark/Benchmark.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/*!
* @file Benchmark.hpp
* This header file contains the declaration of the described types in the IDL file.
*
* This file was generated by the tool fastddsgen.
*/

#ifndef FAST_DDS_GENERATED__BENCHMARK_HPP
#define FAST_DDS_GENERATED__BENCHMARK_HPP

#include <cstdint>
#include <utility>

#if defined(_WIN32)
#if defined(EPROSIMA_USER_DLL_EXPORT)
#define eProsima_user_DllExport __declspec( dllexport )
#else
#define eProsima_user_DllExport
#endif // EPROSIMA_USER_DLL_EXPORT
#else
#define eProsima_user_DllExport
#endif // _WIN32

#if defined(_WIN32)
#if defined(EPROSIMA_USER_DLL_EXPORT)
#if defined(BENCHMARK_SOURCE)
#define BENCHMARK_DllAPI __declspec( dllexport )
#else
#define BENCHMARK_DllAPI __declspec( dllimport )
#endif // BENCHMARK_SOURCE
#else
#define BENCHMARK_DllAPI
#endif // EPROSIMA_USER_DLL_EXPORT
#else
#define BENCHMARK_DllAPI
#endif // _WIN32

/*!
* @brief This class represents the structure BenchMark defined by the user in the IDL file.
* @ingroup Benchmark
*/
class BenchMark
{
public:

/*!
* @brief Default constructor.
*/
eProsima_user_DllExport BenchMark()
{
}

/*!
* @brief Default destructor.
*/
eProsima_user_DllExport ~BenchMark()
{
}

/*!
* @brief Copy constructor.
* @param x Reference to the object BenchMark that will be copied.
*/
eProsima_user_DllExport BenchMark(
const BenchMark& x)
{
m_index = x.m_index;

}

/*!
* @brief Move constructor.
* @param x Reference to the object BenchMark that will be copied.
*/
eProsima_user_DllExport BenchMark(
BenchMark&& x) noexcept
{
m_index = x.m_index;
}

/*!
* @brief Copy assignment.
* @param x Reference to the object BenchMark that will be copied.
*/
eProsima_user_DllExport BenchMark& operator =(
const BenchMark& x)
{

m_index = x.m_index;

return *this;
}

/*!
* @brief Move assignment.
* @param x Reference to the object BenchMark that will be copied.
*/
eProsima_user_DllExport BenchMark& operator =(
BenchMark&& x) noexcept
{

m_index = x.m_index;
return *this;
}

/*!
* @brief Comparison operator.
* @param x BenchMark object to compare.
*/
eProsima_user_DllExport bool operator ==(
const BenchMark& x) const
{
return (m_index == x.m_index);
}

/*!
* @brief Comparison operator.
* @param x BenchMark object to compare.
*/
eProsima_user_DllExport bool operator !=(
const BenchMark& x) const
{
return !(*this == x);
}

/*!
* @brief This function sets a value in member index
* @param _index New value for member index
*/
eProsima_user_DllExport void index(
uint32_t _index)
{
m_index = _index;
}

/*!
* @brief This function returns the value of member index
* @return Value of member index
*/
eProsima_user_DllExport uint32_t index() const
{
return m_index;
}

/*!
* @brief This function returns a reference to member index
* @return Reference to member index
*/
eProsima_user_DllExport uint32_t& index()
{
return m_index;
}



private:

uint32_t m_index{0};

};

#endif // _FAST_DDS_GENERATED_BENCHMARK_HPP_


6 changes: 6 additions & 0 deletions examples/cpp/benchmark/Benchmark.idl
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
@extensibility(APPENDABLE)
struct BenchMark
{
unsigned long index;
};

46 changes: 46 additions & 0 deletions examples/cpp/benchmark/BenchmarkCdrAux.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/*!
* @file BenchmarkCdrAux.hpp
* This source file contains some definitions of CDR related functions.
*
* This file was generated by the tool fastddsgen.
*/

#ifndef FAST_DDS_GENERATED__BENCHMARKCDRAUX_HPP
#define FAST_DDS_GENERATED__BENCHMARKCDRAUX_HPP

#include "Benchmark.hpp"

constexpr uint32_t BenchMark_max_cdr_typesize {8UL};
constexpr uint32_t BenchMark_max_key_cdr_typesize {0UL};


namespace eprosima {
namespace fastcdr {

class Cdr;
class CdrSizeCalculator;

eProsima_user_DllExport void serialize_key(
eprosima::fastcdr::Cdr& scdr,
const BenchMark& data);


} // namespace fastcdr
} // namespace eprosima

#endif // FAST_DDS_GENERATED__BENCHMARKCDRAUX_HPP

Loading

0 comments on commit 4c8a8db

Please sign in to comment.