diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..f7923b9 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,57 @@ +cmake_minimum_required(VERSION 3.12.4) + +if(NOT CMAKE_VERSION VERSION_LESS 3.0) + cmake_policy(SET CMP0048 NEW) +endif() + +project(DistributedATS) +#set(CMAKE_SUPPRESS_REGENERATION true) + +# Find requirements +if(NOT fastcdr_FOUND) + find_package(fastcdr REQUIRED) +endif() + +if(NOT fastdds_FOUND) + find_package(fastdds 3 REQUIRED) +endif() + +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +FIND_PACKAGE( Boost 1.40 COMPONENTS program_options REQUIRED ) +INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} ) +link_directories(${Boost_LIBRARY_DIRS}) + +link_directories(${QUICKFIX_INSTALL_PREFIX}/lib) + +include_directories(Common) +add_subdirectory(GenTools/idl) + +include_directories(GenTools/idl) +add_subdirectory(FIXGateway/src) +add_subdirectory(DataService/src) +add_subdirectory(MatchingEngine/src) +add_subdirectory(LatencyTest) + +set(CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "-o linker-signed") + +install(DIRECTORY MiscATS DESTINATION ${CMAKE_INSTALL_PREFIX}) +install(CODE " + file(GLOB_RECURSE SCRIPT_FILES + \"\${CMAKE_INSTALL_PREFIX}/MiscATS/*.sh\") + foreach(script \${SCRIPT_FILES}) + execute_process(COMMAND chmod +x \${script}) + endforeach() +") +install(FILES FIXGateway/scripts/fixgateway.sh + DataService/scripts/dataservice.sh + MatchingEngine/scripts/matchingengine.sh + DESTINATION scripts + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) + +install(FILES config/log4cxx.xml DESTINATION config) +install(FILES FIXGateway/spec/FIX44.xml DESTINATION spec) diff --git a/Common/BasicDomainParticipant.h b/Common/BasicDomainParticipant.h index 474aeb8..a3bfc60 100644 --- a/Common/BasicDomainParticipant.h +++ b/Common/BasicDomainParticipant.h @@ -1,409 +1,288 @@ /* - Copyright (C) 2018 Mike Kipnis - - This file is part of QLDDS, a free-software/open-source library - for utilization of QuantLib in the distributed envrionment via DDS. + Copyright (C) 2024 Mike Kipnis - DistributedATS +*/ - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. +#pragma once - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -#ifndef __BASIC_DOMAIN_PARTICIPANT_H__ -#define __BASIC_DOMAIN_PARTICIPANT_H__ -#include -#include -#include -#include -#include -#include -#include +static auto logger = log4cxx::Logger::getRootLogger(); namespace distributed_ats_utils { - - /* - BasicDomainParticipant provides convenience functions to create publishers, - subscribers, thread safe default data readers and data writers. - This class is essentially a wrapper around DDS API. - */ - - -class BasicDomainParticipant -{ -public: - // OpenDDS Initialization - DDS::DomainParticipant_var _participant; - DDS::DomainParticipantFactory_var _dpf; - DDS::Publisher_var _publisher; - DDS::Subscriber_var _subscriber; - - public: - - // Instantiate a domain participant for a provided domain id - BasicDomainParticipant( DDS::DomainParticipantFactory_var dpf, const DDS::DomainId_t& domainID ) : _dpf( dpf ) + /* + basic_domain_participant provides convenience functions to create publishers, + subscribers, thread safe default data readers and data writers. + This class is essentially a wrapper around FastDDS API. + */ + using domain_participant_ptr = std::shared_ptr; + using publisher_ptr = std::unique_ptr; + using subscriber_ptr = std::unique_ptr; + using data_writer_ptr = std::unique_ptr; + using data_reader_ptr = std::unique_ptr; + using content_filtered_topic_ptr = std::unique_ptr; + using data_reader_listener_ptr = std::unique_ptr; + + template + using topic_tuple = std::tuple< + std::unique_ptr, + std::unique_ptr, + std::unique_ptr + >; + + template + using topic_tuple_ptr = std::unique_ptr>; + + template + using data_reader_tuple = std::tuple< + content_filtered_topic_ptr, + data_reader_listener_ptr, + data_reader_ptr + >; + + template + using data_reader_tuple_ptr = std::unique_ptr>; + + + class basic_domain_participant { - _participant = _dpf->create_participant( domainID, - PARTICIPANT_QOS_DEFAULT, - DDS::DomainParticipantListener::_nil(), - ::OpenDDS::DCPS::DEFAULT_STATUS_MASK); - - if (CORBA::is_nil ( _participant.in ()) ) + class pub_listener : public eprosima::fastdds::dds::DataWriterListener { - std::stringstream error; - - error << "Unable to create participant. DomainID : [" << domainID << "]"; - - ACE_ERROR( (LM_ERROR, "(%T|%P|%t) %s.\n", error.str().c_str() ) ); - throw Exception( error.str() ); - } - -#ifdef OPENDDS_RAPIDJSON - OpenDDS::DCPS::Observer_rch observer = OpenDDS::DCPS::make_rch(); - dynamic_cast(_participant.in())->set_observer(observer, SampleObserver::e_SAMPLE_SENT | SampleObserver::e_SAMPLE_RECEIVED | SampleObserver::e_SAMPLE_READ | SampleObserver::e_SAMPLE_TAKEN); -#endif - } - - - // Deletes domain participant - virtual ~BasicDomainParticipant() - { - _participant->delete_contained_entities(); - _dpf->delete_participant( _participant ); - } - - // Creates a publisher - bool createPublisher( const DDS::PublisherQos & qos = PUBLISHER_QOS_DEFAULT ) - { - // (PUBLISHER_QOS_DEFAULT is defined in Marked_Default_Qos.h) - _publisher = _participant->create_publisher( qos , DDS::PublisherListener::_nil(), - ::OpenDDS::DCPS::DEFAULT_STATUS_MASK); - if (CORBA::is_nil (_publisher.in ())) + public: + + pub_listener() : matched_(0), _topic_description("Undefined") {}; + pub_listener(const eprosima::fastdds::dds::Topic* topic) + : matched_(0) { - ACE_ERROR( (LM_ERROR, "(%T|%P|%t) create_publisher failed." ) ); - return false; + std::stringstream desc_stream; + desc_stream << "Type : " << topic->get_type_name() << " - " << "Name : " << topic->get_name() << std::endl; + _topic_description = desc_stream.str(); + + LOG4CXX_INFO(logger, "PubListener Description : " << _topic_description); } - - return true; - } - - // Creates a subscriber - bool createSubscriber( const DDS::SubscriberQos & qos = SUBSCRIBER_QOS_DEFAULT ) - { - // (SUBSCRIBER_QOS_DEFAULT is defined in Marked_Default_Qos.h) - _subscriber = _participant->create_subscriber( qos, DDS::SubscriberListener::_nil(), - ::OpenDDS::DCPS::DEFAULT_STATUS_MASK); - if (CORBA::is_nil (_subscriber.in ())) { - ACE_ERROR( (LM_ERROR, "(%T|%P|%t) create_subscriber failed." ) ); - return false; - } - return true; - } - - // - // Registers a topic and a type for a given DataType, see Registering the Data Type and Creating a Topic - // in OpenDDS developers guide. - // - // Example, Topic and Type for ratehelpers::qlSwapRateHelper : - // - // createTopicAndRegisterType - // < ratehelpers::qlSwapRateHelperTypeSupport_var, ratehelpers::qlSwapRateHelperTypeSupportImpl > - // ( "SWAP_RATE_HELPER_TOPIC" ); - // - template< class SERVANT_var, class IMPLEMENTATION_var > - DDS::Topic_ptr createTopicAndRegisterType( const char* topic_name, const char* topic_type = "" ) - { - SERVANT_var servant = new IMPLEMENTATION_var; - - CORBA::String_var type_name; + ~pub_listener() override + { + } - if ( strcmp( topic_type, "" ) == 0 ) - { - servant->register_type(_participant, ""); - type_name = servant->get_type_name(); - } else - type_name = CORBA::string_dup( topic_type ); + void on_publication_matched( + eprosima::fastdds::dds::DataWriter*, + const eprosima::fastdds::dds::PublicationMatchedStatus& info) override + { + if (info.current_count_change == 1) + { + matched_ = info.total_count; + LOG4CXX_INFO(logger, "Publisher matched:" << _topic_description << " Count : " << matched_ ); + } + else if (info.current_count_change == -1) + { + matched_ = info.total_count; + LOG4CXX_INFO(logger, "Publisher unmatched:" << _topic_description << " Count : " << matched_ ); + } + else + { + LOG4CXX_ERROR(logger, "" << info.current_count_change << " is not a valid value for PublicationMatchedStatus current count change"); + + } + } - if (DDS::RETCODE_OK != servant->register_type( _participant.in (), type_name ) ) + std::atomic_int matched_; + std::string _topic_description; + }; + + + public: + // Instantiate a domain participant for a provided domain id + basic_domain_participant( eprosima::fastdds::dds::DomainId_t domain_id, const std::string& participant_name ) + : _participant_name(participant_name) { - std::stringstream error; - - error << "register_type for [" << type_name << "] failed." << endl; + eprosima::fastdds::dds::DomainParticipantQos participantQos; - throw Exception( error.str() ); - - } + participantQos.name(_participant_name); + participantQos.setup_transports(eprosima::fastdds::rtps::BuiltinTransports::LARGE_DATA); - ::DDS::TopicQos topic_qos; - _participant->get_default_topic_qos(topic_qos); - topic_qos.reliability.kind = DDS::RELIABLE_RELIABILITY_QOS; + _participant = domain_participant_ptr( eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->create_participant(domain_id, participantQos)); - DDS::Topic_var topic = _participant->create_topic ( topic_name, type_name, - topic_qos, DDS::TopicListener::_nil(), ::OpenDDS::DCPS::DEFAULT_STATUS_MASK); - if (CORBA::is_nil (topic.in ())) + if (_participant == nullptr) + { + throw std::runtime_error("Failed to create a participant : " + _participant_name); + } + } + + + // Deletes domain participant + virtual ~basic_domain_participant() { - std::stringstream error; - - error << "create_topic for [" << topic_name << "] failed." << endl; - - throw Exception( error.str() ); + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->delete_participant(_participant.get()); } + + bool create_publisher() + { + _publisher = publisher_ptr(_participant->create_publisher( + eprosima::fastdds::dds::PUBLISHER_QOS_DEFAULT, nullptr)); - return DDS::Topic::_duplicate ( topic.in() ); - } - - // - // Creates DataWriter - // - template - DataWriter_var createDataWriter( DDS::Topic_var topic, int matchedPublications = 0, const DDS::DataWriterQos dataWriterQos = DATAWRITER_QOS_DEFAULT ) - { - ::DDS::DataWriterQos dw_qos; - _publisher->get_default_datawriter_qos (dw_qos); - - ::DDS::TopicQos topic_qos; - - topic->get_qos( topic_qos ); - _publisher->copy_from_topic_qos (dw_qos, topic_qos); - - DDS::DataWriter_var base_dw = _publisher->create_datawriter( topic.in (), dw_qos, - DDS::DataWriterListener::_nil(), ::OpenDDS::DCPS::DEFAULT_STATUS_MASK); - - if (CORBA::is_nil ( base_dw.in ())) { - - std::stringstream error; - - error << "create_datawriter for [" << topic->get_name() << "] failed."; - - throw Exception( error.str() ); + return !(_publisher == nullptr); } + + bool create_subscriber() + { + _subscriber = subscriber_ptr(_participant->create_subscriber( + eprosima::fastdds::dds::SUBSCRIBER_QOS_DEFAULT, nullptr)); - DataWriter_var dw = DataWriter::_narrow(base_dw.in()); - if (CORBA::is_nil (dw.in ())) { - - std::stringstream error; - - error << "DataWriter for [" << topic->get_name() << "] could not be narrowed."; - - throw Exception( error.str() ); - + return !(_subscriber == nullptr); } + + template< class TOPIC_SUPPORT_TYPE, class TOPIC_TYPE> + topic_tuple_ptr make_topic(const std::string& topic_name ) + { + std::unique_ptr topic_type_ptr(new TOPIC_TYPE()); + std::unique_ptr type_support_ptr(new eprosima::fastdds::dds::TypeSupport(new TOPIC_SUPPORT_TYPE)); - // Block until Subscriber is available - DDS::StatusCondition_var condition = dw->get_statuscondition(); - condition->set_enabled_statuses(DDS::PUBLICATION_MATCHED_STATUS); + type_support_ptr->register_type(_participant.get()); - DDS::WaitSet_var ws = new DDS::WaitSet; - ws->attach_condition(condition); + std::unique_ptr topic_ptr(_participant->create_topic ( topic_name, type_support_ptr->get_type_name(), eprosima::fastdds::dds::TOPIC_QOS_DEFAULT )); - while (true) + return topic_tuple_ptr( new topic_tuple (std::move(topic_ptr), std::move(topic_type_ptr), std::move(type_support_ptr)) ); + } + + template + data_reader_tuple_ptr make_data_reader_tuple(const topic_tuple_ptr& topic_tuple, + eprosima::fastdds::dds::DataReaderListener* data_reader_listener, + const std::string& filter_name, + const std::string& filter, + const std::vector& expression_parameters, bool quote_all_expressions = true ) { - DDS::PublicationMatchedStatus matches; - if (dw->get_publication_matched_status(matches) != DDS::RETCODE_OK) + std::vector final_expression_parameters; + + if (quote_all_expressions) { - std::stringstream warn; - - warn << "get_publication_matched_status for [" << topic->get_name() << "] failed."; - - ACE_ERROR( (LM_WARNING, "(%T|%P|%t) %s.", warn.str().c_str() ) ); - - return dw; + final_expression_parameters.reserve(expression_parameters.size()); + for (const auto& v : expression_parameters) + { + final_expression_parameters.push_back("'" + v + "'"); + } + } + else + { + final_expression_parameters = expression_parameters; } - if ( matches.current_count >= matchedPublications ) - break; + auto filter_ptr = make_content_filtered_topic(filter_name, topic_tuple, filter, final_expression_parameters); - DDS::ConditionSeq conditions; - DDS::Duration_t timeout = { 30, 0 }; - if (ws->wait(conditions, timeout) != DDS::RETCODE_OK) { - - std::stringstream warn; - - warn << "wait for [" << topic->get_name() << "] failed."; - - ACE_ERROR( (LM_WARNING, "(%T|%P|%t) %s.", warn.str().c_str() ) ); - - return dw; + if ( filter_ptr == nullptr ) + { + throw std::runtime_error("make_content_filtered_topic failed : " + filter_name ); } - } - - ws->detach_condition(condition); - - return dw; - - } - - // - // Creates a DataReader and supplies it with a reference to a mutex lock. - // This mutex is being locked before making a QuantLibAddin call - // and unlocked after. - // - template< class DRListener_var > - DDS::DataReader_ptr createDataReaderListener( ACE_Mutex& mutex, DDS::Topic_var topic, DDS::DataReaderQos dataReaderQos = DATAREADER_QOS_DEFAULT ) - { - DDS::DataReaderListener_var listener (new DRListener_var( mutex ) ); - - if (CORBA::is_nil ( listener.in ()) ) { - cerr << "listener is nil." << endl; - ACE_OS::exit(1); - } - - ::DDS::DataReaderQos dr_qos; - _subscriber->get_default_datareader_qos (dr_qos); + + data_reader_listener_ptr drl_ptr(data_reader_listener); + auto data_reader = make_datareader(filter_ptr,drl_ptr); - ::DDS::TopicQos topic_qos; + return data_reader_tuple_ptr(new data_reader_tuple(std::move(filter_ptr), std::move(drl_ptr), std::move(data_reader))); - topic->get_qos( topic_qos ); - _subscriber->copy_from_topic_qos (dr_qos, topic_qos); + }; + + + template + data_reader_tuple_ptr make_data_reader_tuple(const topic_tuple_ptr& topic_tuple, + eprosima::fastdds::dds::DataReaderListener* data_reader_listener) + { + data_reader_listener_ptr drl_ptr(data_reader_listener); + auto data_reader = make_datareader(topic_tuple, drl_ptr); - DDS::DataReader_var dr = - _subscriber->create_datareader(topic.in (), dr_qos, listener.in (), - ::OpenDDS::DCPS::DEFAULT_STATUS_MASK); + return data_reader_tuple_ptr(new data_reader_tuple(nullptr, std::move(drl_ptr), std::move(data_reader))); - return DDS::DataReader::_duplicate( dr.in() ); - - } + }; + + + template + data_writer_ptr make_data_writer( const topic_tuple_ptr& topic_tuple ) + { + auto topic = std::get<0>(*topic_tuple).get(); + return data_writer_ptr(_publisher->create_datawriter(topic, - template< class DRListener_var > - DDS::DataReader_ptr - createDataReaderListener( DDS::Topic_var topic, DDS::DataReaderQos dataReaderQos ) - { - DDS::DataReaderListener_var listener (new DRListener_var ); - - if (CORBA::is_nil ( listener.in ()) ) { - cerr << "listener is nil." << endl; - ACE_OS::exit(1); + eprosima::fastdds::dds::DATAWRITER_QOS_DEFAULT,new pub_listener(topic))); } - - ::DDS::DataReaderQos dr_qos; - _subscriber->get_default_datareader_qos (dr_qos); - - ::DDS::TopicQos topic_qos; - - topic->get_qos( topic_qos ); - _subscriber->copy_from_topic_qos (dr_qos, topic_qos); - - DDS::DataReader_var dr = - _subscriber->create_datareader(topic.in (), dr_qos, listener.in (), - ::OpenDDS::DCPS::DEFAULT_STATUS_MASK); - - return DDS::DataReader::_duplicate( dr.in() ); - }; - DDS::DataReader_ptr createDataReaderListener( DDS::Topic_var topic,DDS::DataReaderListener_var listener, - DDS::DataReaderQos dataReaderQos = DATAREADER_QOS_DEFAULT ) - { - //DDS::DataReaderListener_var listener (new DRListener_var ); + template + data_writer_ptr make_data_writer( const topic_tuple_ptr& topic_tuple, eprosima::fastdds::dds::DataWriterListener* listener) + { + auto topic = std::get<0>(*topic_tuple).get(); - if (CORBA::is_nil ( listener.in ()) ) { - cerr << "listener is nil." << endl; - ACE_OS::exit(1); + return data_writer_ptr(_publisher->create_datawriter(topic, + eprosima::fastdds::dds::DATAWRITER_QOS_DEFAULT,listener)); } - - ::DDS::DataReaderQos dr_qos; - _subscriber->get_default_datareader_qos (dr_qos); - - ::DDS::TopicQos topic_qos; - - topic->get_qos( topic_qos ); - _subscriber->copy_from_topic_qos (dr_qos, topic_qos); - - DDS::DataReader_var dr = - _subscriber->create_datareader(topic.in (), dr_qos, listener.in (), - ::OpenDDS::DCPS::DEFAULT_STATUS_MASK); - - return DDS::DataReader::_duplicate( dr.in() ); - - } - DDS::DataReader_ptr createDataReaderListener( DDS::TopicDescription_ptr topic,DDS::DataReaderListener_var listener, - DDS::DataReaderQos dataReaderQos = DATAREADER_QOS_DEFAULT) - { - if (CORBA::is_nil ( listener.in ()) ) { - cerr << "listener is nil." << endl; - ACE_OS::exit(1); + template + content_filtered_topic_ptr make_content_filtered_topic( + const std::string& filter_name, + const topic_tuple_ptr& topic_tuple, + const std::string& filter_expression, + const std::vector& expression_parameters) + { + + auto* topic = std::get<0>(*topic_tuple).get(); + if (topic == nullptr) + { + throw std::runtime_error("Topic is null in make_content_filtered_topic : " + filter_name ); + } + + return content_filtered_topic_ptr(_participant->create_contentfilteredtopic( + filter_name, + topic, + filter_expression, + expression_parameters)); + } + + + template + data_reader_ptr + make_datareader( const topic_tuple_ptr& topic_tuple, data_reader_listener_ptr& listener ) + { + return data_reader_ptr(_subscriber->create_datareader( + std::get<0>(*topic_tuple).get(), + eprosima::fastdds::dds::DATAREADER_QOS_DEFAULT, listener.get()) + ); + }; + + data_reader_ptr + make_datareader( const content_filtered_topic_ptr& content_filtered_topic, + const data_reader_listener_ptr& listener ) + { + return data_reader_ptr( _subscriber->create_datareader(content_filtered_topic.get(), eprosima::fastdds::dds::DATAREADER_QOS_DEFAULT, listener.get())); + }; + + + const domain_participant_ptr& get_domain_participant() + { + return _participant; } - ::DDS::DataReaderQos dr_qos; - _subscriber->get_default_datareader_qos (dr_qos); - - ::DDS::TopicQos topic_qos; - - //topic->get_qos( topic_qos ); - //_subscriber->copy_from_topic_qos (dr_qos, topic_qos); - - DDS::DataReader_var dr = - _subscriber->create_datareader(topic, dr_qos, listener.in (), - ::OpenDDS::DCPS::DEFAULT_STATUS_MASK); - - return DDS::DataReader::_duplicate( dr.in() ); - - + const std::string& get_participant_name() { return _participant_name;}; + + private: + domain_participant_ptr _participant; + publisher_ptr _publisher; + subscriber_ptr _subscriber; + std::string _participant_name; + }; - DDS::DomainParticipant_ptr getDomainParticipant() - { - return DDS::DomainParticipant::_duplicate( _participant.in() ); - } - - DDS::Publisher_ptr getPublisher() - { - return DDS::Publisher::_duplicate( _publisher.in() ); - } - - DDS::Subscriber_ptr getSubscriber() - { - return DDS::Subscriber::_duplicate( _subscriber.in() ); - } - - void setPublisher( DDS::Publisher_ptr publisher ) - { - _publisher = publisher; - } - - void setSubscriber( DDS::Subscriber_ptr subscriber ) - { - _subscriber = subscriber; - } - - class Exception : public std::exception - { - public: - explicit Exception ( const std::string& what ) : _what( what ) {}; - - ~Exception() throw() {}; - - const char* what() const throw() - { - return _what.c_str(); - } - - protected: - std::string _what; - }; - - + using basic_domain_participant_ptr = std::shared_ptr; }; - -typedef std::shared_ptr BasicDomainParticipantPtr; - -}; - -#endif + diff --git a/Common/Common.h b/Common/Common.h index c09d1a5..a568402 100644 --- a/Common/Common.h +++ b/Common/Common.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,33 +26,27 @@ */ -#ifndef __COMMON_H__ -#define __COMMON_H__ +#pragma once -static const DDS::DomainId_t DISTRIBUTED_ATS_DOMAIN_ID = 1066; +constexpr const char* LOGON_TOPIC_NAME = "LOGON_TOPIC"; +constexpr const char* LOGOUT_TOPIC_NAME = "LOGOUT_TOPIC"; -static const char* LOGON_TOPIC_NAME = "LOGON_TOPIC"; -static const char* LOGOUT_TOPIC_NAME = "LOGOUT_TOPIC"; +constexpr const char* NEW_ORDER_SINGLE_TOPIC_NAME = "NEW_ORDER_SINGLE_TOPIC"; +constexpr const char* EXECUTION_REPORT_TOPIC_NAME = "EXECUTION_REPORT_TOPIC"; +constexpr const char* ORDER_CANCEL_REQUEST_TOPIC_NAME = "ORDER_CANCEL_REQUEST_TOPIC"; +constexpr const char* ORDER_CANCEL_REJECT_TOPIC_NAME = "ORDER_CANCEL_REJECT_TOPIC"; -static const char* NEW_ORDER_SINGLE_TOPIC_NAME = "NEW_ORDER_SINGLE_TOPIC"; -static const char* EXECUTION_REPORT_TOPIC_NAME = "EXECUTION_REPORT_TOPIC"; -static const char* ORDER_CANCEL_REQUEST_TOPIC_NAME = "ORDER_CANCEL_REQUEST_TOPIC"; -static const char* ORDER_CANCEL_REJECT_TOPIC_NAME = "ORDER_CANCEL_REJECT_TOPIC"; +constexpr const char* ORDER_MASS_CANCEL_REQUEST_TOPIC_NAME = "ORDER_MASS_CANCEL_REQUEST_TOPIC"; +constexpr const char* ORDER_MASS_CANCEL_REPORT_TOPIC_NAME = "ORDER_MASS_CANCEL_REPORT_TOPIC"; -static const char* ORDER_MASS_CANCEL_REQUEST_TOPIC_NAME = "ORDER_MASS_CANCEL_REQUEST_TOPIC"; -static const char* ORDER_MASS_CANCEL_REPORT_TOPIC_NAME = "ORDER_MASS_CANCEL_REPORT_TOPIC"; +constexpr const char* MARKET_DATA_INCREMENTAL_REFRESH_TOPIC_NAME = "MARKET_DATA_INCREMENTAL_REFRESH_TOPIC_NAME"; +constexpr const char* MARKET_DATA_REQUEST_TOPIC_NAME = "MARKET_DATA_REQUEST_TOPIC_NAME"; +constexpr const char* MARKET_DATA_SNAPSHOT_FULL_REFRESH_TOPIC_NAME = "MARKET_DATA_SNAPSHOT_FULL_REFRESH_TOPIC_NAME"; -static const char* MARKET_DATA_INCREMENTAL_REFRESH_TOPIC_NAME = "MARKET_DATA_INCREMENTAL_REFRESH_TOPIC_NAME"; -static const char* MARKET_DATA_REQUEST_TOPIC_NAME = "MARKET_DATA_REQUEST_TOPIC_NAME"; -static const char* MARKET_DATA_SNAPSHOT_FULL_REFRESH_TOPIC_NAME = "MARKET_DATA_SNAPSHOT_FULL_REFRESH_TOPIC_NAME"; +constexpr const char* SECURITY_LIST_REQUEST_TOPIC_NAME = "SECURITY_LIST_REQUEST_TOPIC_NAME"; +constexpr const char* SECURITY_LIST_TOPIC_NAME = "SECURITY_LIST_TOPIC"; -static const char* SECURITY_LIST_REQUEST_TOPIC_NAME = "SECURITY_LIST_REQUEST_TOPIC_NAME"; -static const char* SECURITY_LIST_TOPIC_NAME = "SECURITY_LIST_TOPIC_NAME"; +constexpr const char* ORDER_MASS_STATUS_REQUEST_TOPIC_NAME = "ORDER_MASS_STATUS_REQUEST_TOPIC"; -static const char* ORDER_MASS_STATUS_REQUEST_TOPIC_NAME = "ORDER_MASS_STATUS_REQUEST_TOPIC"; - -static const char* ORDER_CANCEL_REPLACE_REQUEST_TOPIC_NAME = "ORDER_CANCEL_REPLACE_REQUEST_TOPIC"; - - -#endif +constexpr const char* ORDER_CANCEL_REPLACE_REQUEST_TOPIC_NAME = "ORDER_CANCEL_REPLACE_REQUEST_TOPIC"; diff --git a/Common/ConfigFileHelper.h b/Common/ConfigFileHelper.h deleted file mode 100644 index 001f2e1..0000000 --- a/Common/ConfigFileHelper.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef __CONFIG_FILE_HELPER -#define __CONFIG_FILE_HELPER - -#include -#include - - -class ConfigFileHelper -{ - - - public: - ConfigFileHelper( const ACE_TCHAR* config_file_name ) - { - m_config.open(); - - ACE_Ini_ImpExp ini_config( m_config ); - - ini_config.import_config( config_file_name ); - - m_config_root = m_config.root_section(); - - - }; - - int get_string_value( const ACE_TCHAR* section_name, const ACE_TCHAR* parameter_name, ACE_TString& value ) - { - ACE_Configuration_Section_Key section; - - if ( m_config.open_section ( m_config_root, section_name, 1, section ) ) - { - return ACE_OS::last_error(); - } - - if ( m_config.get_string_value ( section, parameter_name, value) ) - { - return ACE_OS::last_error(); - }; - - return 0; - }; - - int get_integer_value( const ACE_TCHAR* section, const ACE_TCHAR* name, int* int_value) - { - ACE_TString StringValue; - ACE_TCHAR pszString[30]; - ACE_OS::strcpy (pszString, ACE_TEXT ("0")); - int IntegerValue = 0; - - if ( get_string_value( section, name, StringValue ) ) - { - return ACE_OS::last_error(); - } - - ACE_OS::strncpy (pszString, StringValue.c_str (), 30); - - IntegerValue = ACE_OS::atoi (pszString); - *int_value = IntegerValue; - - return 0; - - }; - - protected: - ConfigFileHelper(); - - private: - ACE_Configuration_Heap m_config; - ACE_Configuration_Section_Key m_config_root; -}; - -#endif diff --git a/GenTools/idl/ConvertUtils.h b/Common/ConvertUtils.h similarity index 86% rename from GenTools/idl/ConvertUtils.h rename to Common/ConvertUtils.h index 0ba9206..a6e2e9d 100644 --- a/GenTools/idl/ConvertUtils.h +++ b/Common/ConvertUtils.h @@ -1,7 +1,7 @@ /* Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -22,17 +22,16 @@ SOFTWARE. */ -#ifndef __CONVERT_UTILS__ -#define __CONVERT_UTILS__ +#pragma once #include namespace DistributedATS { - inline void convert_dds_string_to_fix( const char* string_in, const int FIX_TAG, FIX::FieldMap& fix_field_map_out ) + inline void convert_dds_string_to_fix( const std::string& string_in, const int FIX_TAG, FIX::FieldMap& fix_field_map_out ) { - if ( strlen( string_in ) > 0 ) + if ( string_in.length() > 0 ) { FIX::StringField fixField(FIX_TAG, string_in); fix_field_map_out.setField( fixField ); @@ -51,5 +50,3 @@ namespace DistributedATS }; } - -#endif diff --git a/Common/LoggerHelper.h b/Common/LoggerHelper.h index bafced2..0930bbe 100644 --- a/Common/LoggerHelper.h +++ b/Common/LoggerHelper.h @@ -1,18 +1,23 @@ -#ifndef __LOGGER_HELPER__ -#define __LOGGER_HELPER__ +#pragma once +#include +#include namespace LoggerHelper { template - inline void log_debug( DATS_CLASS& obj, const char* context = "" ) + inline void log_debug( LOG4CXX_NS::LoggerPtr logger, DATS_CLASS& obj, const std::string& context ) { - STREAM ss; DATS_LOGGER::log( ss, obj ); - std::string complete_str = ss.str(); - ACE_DEBUG( ( LM_DEBUG, ACE_TEXT("(%P|%t|%D) %s : %s\n\n"), context, complete_str.c_str() ) ); + LOG4CXX_DEBUG(logger, context << ":" << ss.str()); }; -}; -#endif + template + inline void log_info( LOG4CXX_NS::LoggerPtr logger, DATS_CLASS& obj, const std::string& context ) + { + STREAM ss; + DATS_LOGGER::log( ss, obj ); + LOG4CXX_INFO(logger, context << ":" << ss.str()); + }; +}; diff --git a/Common/SampleObserver.h b/Common/SampleObserver.h deleted file mode 100644 index 0ebab53..0000000 --- a/Common/SampleObserver.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef SAMPLE_OBSERVER_H -#define SAMPLE_OBSERVER_H - -#include -#include -#include - -class SampleObserver : public OpenDDS::DCPS::Observer { -public: - void on_sample_sent(DDS::DataWriter_ptr, const Sample& s) - { - ACE_DEBUG((LM_INFO, - ACE_TEXT("(%P|%t) Sent : %s\n"), - OpenDDS::DCPS::to_json(s).c_str())); - } - - void on_sample_received(DDS::DataReader_ptr, const Sample& s) - { - ACE_DEBUG((LM_INFO, - ACE_TEXT("(%P|%t) Received : %s\n"), - OpenDDS::DCPS::to_json(s).c_str())); - - } - - void on_sample_read(DDS::DataReader_ptr, const Sample& s) - { - ACE_DEBUG((LM_INFO, - ACE_TEXT("(%P|%t) Read : %s\n"), - OpenDDS::DCPS::to_json(s).c_str())); - - } - - void on_sample_taken(DDS::DataReader_ptr, const Sample& s) - { - ACE_DEBUG((LM_INFO, - ACE_TEXT("(%P|%t) Taken : %s\n"), - OpenDDS::DCPS::to_json(s).c_str())); - - } -}; - -#endif // SAMPLE_OBSERVER_H diff --git a/DataService/config/sample_data_service.ini b/DataService/config/sample_data_service.ini index ccabf36..efed469 100644 --- a/DataService/config/sample_data_service.ini +++ b/DataService/config/sample_data_service.ini @@ -1,9 +1,5 @@ [database] -portnumber=3306 -hostname=localhost -username=dataservice -password=Welcome#1 -database=distributed_ats +database_file=distributed_ats.db [dataservice] name=DATA_SERVICE_A diff --git a/DataService/scripts/dataservice.sh b/DataService/scripts/dataservice.sh index 38a4d10..587c3e7 100755 --- a/DataService/scripts/dataservice.sh +++ b/DataService/scripts/dataservice.sh @@ -6,35 +6,15 @@ PRG="$0" PROGNAME=DataService CONFIG_FILE_NAME=$2 -if [ "$1" != "start" ] && [ "$1" != "stop" ] && [ "$1" != "check" ] ; -then - echo "Unsupported Command - "$1 : "Supported Commands : (start/stop/check)"; - exit 1; -fi +export LOG_FILE_NAME=$2.log -if [ -z "$CONFIG_FILE_NAME" ] -then - echo "Config File Name is not set"; - exit 1; -fi +. $DATS_HOME/dats_env.sh -#PRGDIR=`dirname "$PRG"` - -if [ -z "$BASEDIR" ] -then - BASEDIR=`cd ".." > /dev/null; pwd` -fi - -if [ ! -d "$BASEDIR/logs/" ] -then - mkdir $BASEDIR/logs/ -fi - -logfile=$BASEDIR/logs/$PROGNAME.$CONFIG_FILE_NAME.console.log +logfile=$BASEDIR_ATS/logs/$PROGNAME.$CONFIG_FILE_NAME.console.log #ldd $DATS_HOME/bin/$PROGNAME >> $logfile -PROCESS="$PROGNAME -c $BASEDIR/config/$CONFIG_FILE_NAME -DCPSConfigFile $DATS_HOME/Protocols/tcp.ini -ORBLogFile $BASEDIR/logs/$PROGNAME.$CONFIG_FILE_NAME.log" +PROCESS="$PROGNAME -c $BASEDIR_ATS/config/$CONFIG_FILE_NAME" #echo PROCESS=$PROCESS >> $logfile idn=$(id -u) diff --git a/DataService/sql/sqlite/distributed_ats.db b/DataService/sql/sqlite/distributed_ats.db index 5da0cdc..ecf3aca 100644 Binary files a/DataService/sql/sqlite/distributed_ats.db and b/DataService/sql/sqlite/distributed_ats.db differ diff --git a/DataService/src/AuthService.cpp b/DataService/src/AuthService.cpp index 8151fbe..3e7c470 100644 --- a/DataService/src/AuthService.cpp +++ b/DataService/src/AuthService.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,105 +26,85 @@ */ #include -#include -#include "LogonDataReaderListenerImpl.hpp" - #include "AuthService.h" #include - +#include +#include #include -#include - #include #include - #include +#include +#include +#include using namespace DistributedATS; -AuthService::AuthService(std::shared_ptr basicDomainParticipantPtr, - const FIX::DatabaseConnectionID& dbConnectionID, - ACE_Thread_Manager *thr_mgr ) : ACE_Task (thr_mgr), m_dbConnectionID( dbConnectionID ) +AuthService::AuthService(std::shared_ptr basic_domain_participant_ptr, + const FIX::DatabaseConnectionID& dbConnectionID) : m_dbConnectionID( dbConnectionID ) { - m_basicDomainParticipantPtr = basicDomainParticipantPtr; + _basic_domain_participant_ptr = basic_domain_participant_ptr; + _logon_request_queue = std::make_shared(); + + std::atomic_init(&_is_running, true); + + _service_thread = std::thread(&AuthService::service, this); }; AuthService::~AuthService() { - + std::atomic_init(&_is_running, false); + _service_thread.join(); } - - - - -void AuthService::createLogonTopic( const std::string& data_service_filter_expression/*, - const char* logon_topic_name, const char* logout_topic_name*/ ) +void AuthService::createLogonTopic() { - DDS::Topic_var logon_topic = - m_basicDomainParticipantPtr->createTopicAndRegisterType < DistributedATS_Logon::LogonTypeSupport_var, DistributedATS_Logon::LogonTypeSupportImpl > + _logon_topic_tuple = + _basic_domain_participant_ptr->make_topic < DistributedATS_Logon::LogonPubSubType, DistributedATS_Logon::Logon > ( LOGON_TOPIC_NAME ); + std::string data_service_filter_expression_auth = "DATS_DestinationUser = %0"; + - std::string data_service_filter_expression_auth = data_service_filter_expression + - " and m_Header.TargetCompID = 'AUTH'"; - - m_cft_logon = - m_basicDomainParticipantPtr->getDomainParticipant()->create_contentfilteredtopic( "LOGON_FILTER" , logon_topic, - data_service_filter_expression_auth.c_str(), DDS::StringSeq()); ; + _logon_data_reader_tuple = _basic_domain_participant_ptr->make_data_reader_tuple(_logon_topic_tuple, + new LogonDataReaderListenerImpl( _logon_request_queue ), "FILTERED_LOGON", data_service_filter_expression_auth, + { _basic_domain_participant_ptr->get_participant_name()}); - m_logon_dw = m_basicDomainParticipantPtr->createDataWriter< - DistributedATS_Logon::LogonDataWriter_var, DistributedATS_Logon::LogonDataWriter > ( logon_topic ); - - DDS::DataReaderListener_var logonDataListener( new LogonDataReaderListenerImpl( msg_queue() ) ); - m_basicDomainParticipantPtr->createDataReaderListener ( m_cft_logon.in(), logonDataListener ); + m_logon_dw = _basic_domain_participant_ptr->make_data_writer( _logon_topic_tuple ); } -void AuthService::createLogoutTopic( const std::string& data_service_filter_expression/*, - const char* logon_topic_name, const char* logout_topic_name*/ ) +void AuthService::createLogoutTopic() { - DDS::Topic_var logout_topic = - m_basicDomainParticipantPtr->createTopicAndRegisterType < DistributedATS_Logout::LogoutTypeSupport_var, DistributedATS_Logout::LogoutTypeSupportImpl > + _logout_topic_tuple = + _basic_domain_participant_ptr->make_topic < DistributedATS_Logout::LogoutPubSubType, DistributedATS_Logout::Logout > ( LOGOUT_TOPIC_NAME ); - std::string data_service_filter_expression_auth = data_service_filter_expression + - " and m_Header.TargetCompID = 'AUTH'"; - - m_cft_logout = m_basicDomainParticipantPtr->getDomainParticipant()->create_contentfilteredtopic( "LOGOUT_FILTER", logout_topic, - data_service_filter_expression_auth.c_str(), - DDS::StringSeq()); ; - - - m_logout_dw = m_basicDomainParticipantPtr->createDataWriter< DistributedATS_Logout::LogoutDataWriter_var, - DistributedATS_Logout::LogoutDataWriter > ( logout_topic ); + m_logout_dw = _basic_domain_participant_ptr->make_data_writer( _logout_topic_tuple ); } -int AuthService::svc (void) +int AuthService::service (void) { - std::shared_ptr mySqlConnectionPtr = std::make_shared( m_dbConnectionID ); + std::shared_ptr sqlite_connection_ptr = std::make_shared( m_dbConnectionID ); - while(1) + while(_is_running) { - if ( !mySqlConnectionPtr->connected() ) + if ( !sqlite_connection_ptr->connected() ) { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) ERROR: Auth Service is not connected to the database.\n"))); + LOG4CXX_ERROR(logger, "Auth Service is not connected to the database.\n"); + return 0; }; - ACE_Message_Block* messageBlock = 0; - - ACE_Time_Value interval (0, 5000000); + std::shared_ptr logon_ptr; - if ( this->getq (messageBlock, &interval) > -1 ) + if ( _logon_request_queue->pop( logon_ptr ) ) { - DistributedATS_Logon::Logon* logonPtr = ( DistributedATS_Logon::Logon* )messageBlock->rd_ptr(); - authenticate( mySqlConnectionPtr, logonPtr ); - messageBlock->release(); + authenticate( sqlite_connection_ptr, logon_ptr ); } else { - ACE_OS::sleep(interval); + std::this_thread::sleep_for(std::chrono::duration(1000)); } }; @@ -132,53 +112,52 @@ int AuthService::svc (void) } -bool AuthService::authenticate( std::shared_ptr sqliteConnectionPtr, DistributedATS_Logon::Logon* logonPtr ) +bool AuthService::authenticate( std::shared_ptr& sqliteConnectionPtr, std::shared_ptr& logon ) { std::string textOut = ""; - if ( authenticate( sqliteConnectionPtr, logonPtr->Username.in(), logonPtr->Password.in(), textOut ) ) + std::stringstream ss_logon; + LogonLogger::log(ss_logon, *logon); + + if ( authenticate( sqliteConnectionPtr, logon->Username(), logon->Password(), textOut ) ) { - DistributedATS_Logon::Logon logon = *logonPtr; - logon.m_Header.TargetCompID = logonPtr->m_Header.SenderCompID; - logon.m_Header.SenderCompID = CORBA::string_dup("AUTH"); - logon.m_Header.TargetSubID = CORBA::string_dup( logonPtr->Username ); + logon->DATS_Source(logon->DATS_Destination()); + logon->DATS_Destination(logon->DATS_Source()); + logon->DATS_SourceUser("AUTH"); + logon->DATS_DestinationUser( logon->Username() ); - std::stringstream ss_logon; - LogonLogger::log(ss_logon, logon); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) Auth Service Logon Success: %s\n"), ss_logon.str().c_str())); - - int ret = m_logon_dw->write(logon, NULL); + LOG4CXX_INFO(logger, "Auth Service Logon Success: [" << ss_logon.str() << "]"); - if (ret != DDS::RETCODE_OK) - { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) ERROR: Logon write returned %d.\n"), ret)); + int ret = m_logon_dw->write(logon.get()); + + if (!ret) { + LOG4CXX_ERROR(logger, "Error Publishing to DDS :" << ss_logon.str()); } - } else { - ACE_DEBUG ((LM_INFO, ACE_TEXT("(%P|%t|%D) INFO: Authentication failed: Publishing logout [%s].\n"), logonPtr->Username.in())); + } else { + LOG4CXX_INFO(logger, "Authentication failed: Publishing logout for : [" << ss_logon.str() << "]"); + DistributedATS_Logout::Logout logout; - logout.m_Header.BeginString = logonPtr->m_Header.BeginString; - logout.m_Header.MsgType = FIX::MsgType_Logout; + logout.fix_header().BeginString(logon->fix_header().BeginString()); + logout.fix_header().MsgType(FIX::MsgType_Logout); + logout.fix_header().SendingTime(0); - logout.m_Header.TargetCompID = logonPtr->m_Header.SenderCompID; - logout.m_Header.SenderCompID = CORBA::string_dup("AUTH"); - logout.m_Header.TargetSubID = logonPtr->RawData; // Kludge - logout.m_Header.SendingTime = 0; + logout.DATS_Source(logon->DATS_Destination()); + logout.DATS_Destination(logon->DATS_Source()); + logout.DATS_DestinationUser(logon->RawData()); - logout.Text = CORBA::string_dup(textOut.c_str()); + logout.Text(textOut); std::stringstream ss_logout; LogoutLogger::log(ss_logout, logout); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) Auth Service Logout : %s\n"), ss_logout.str().c_str())); - + LOG4CXX_INFO(logger, "Auth Service Logout : %s\n" << ss_logout.str()); - int ret = m_logout_dw->write(logout, NULL); + int ret = m_logout_dw->write(&logout); - if (ret != DDS::RETCODE_OK) - { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) ERROR: Logout write returned %d.\n"), ret)); + if (!ret) { + LOG4CXX_ERROR(logger, "Logout write returned error : " << ret ); } } @@ -186,38 +165,15 @@ bool AuthService::authenticate( std::shared_ptr mySqlConnectionPtr, const char* username_in, const char* password_in, std::string& textOut ) -{ - std::stringstream user_logon_call; - - - user_logon_call << "call user_logon('" << username_in << "','" <execute(mySQLQuery); - - FIX::MySQLQuery mySQLQueryOut("select @usercheck, @reason"); - mySqlConnectionPtr->execute(mySQLQueryOut); - - int result = ACE_OS::atoi(mySQLQueryOut.getValue(0,0)); - textOut = mySQLQueryOut.getValue(0, 1); - - return result == 0 ? true : false; -}; - */ - -bool AuthService::authenticate( std::shared_ptr sqliteConnect, const char* username_in, const char* password_in, std::string& textOut ) +bool AuthService::authenticate( std::shared_ptr& sqliteConnect, const std::string& username, const std::string& password, std::string& textOut ) { std::stringstream auth_query_stream; - auth_query_stream << "select * from user_code where user_name='" << username_in << - "' and json_extract(properties, \"$.password\")='" << password_in << "'"; + auth_query_stream << "select * from user_code where user_name='" << username << + "' and json_extract(properties, \"$.password\")='" << password << "'"; - DistributedATS::SQLiteQuery auth_query(auth_query_stream.str().c_str()); + DistributedATS::SQLiteQuery auth_query(auth_query_stream.str()); sqliteConnect->execute(auth_query); diff --git a/DataService/src/AuthService.h b/DataService/src/AuthService.h index f335a83..93a0b52 100644 --- a/DataService/src/AuthService.h +++ b/DataService/src/AuthService.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,82 +25,74 @@ SOFTWARE. */ -#ifndef __AUTHSERVICE_H__ -#define __AUTHSERVICE_H__ +#pragma once -#define HAVE_MYSQL - - -#include -#include #include - #include +#include -//#include -//#include -//#include #include #include "SQLiteConnection.hpp" - - #include - -#include -#include - #include - -#include -#include +#include +#include +#include "LogonDataReaderListenerImpl.hpp" namespace DistributedATS { -class AuthService : public ACE_Task +class AuthService { public: AuthService( - std::shared_ptr basicDomainParticipantPtr, - const FIX::DatabaseConnectionID& dbConnectionID, - ACE_Thread_Manager *thr_mgr + std::shared_ptr basic_domain_participant_ptr, + const FIX::DatabaseConnectionID& dbConnectionID ); virtual ~AuthService(); - void createLogonTopic( const std::string& data_service_filter_expression ); - void createLogoutTopic( const std::string& data_service_filter_expression ); + void createLogonTopic(); + void createLogoutTopic(); - virtual int svc (void); + int service (void); private: - - /* - bool authenticate( std::shared_ptr mySqlConnect, DistributedATS_Logon::Logon* logonPtr ); - - bool authenticate( std::shared_ptr mySqlConnect, const char* username_in, const char* password_in, std::string& textOut );*/ - bool authenticate( std::shared_ptr sqliteConnect, DistributedATS_Logon::Logon* logonPtr ); + bool authenticate( + std::shared_ptr& sqliteConnect, + std::shared_ptr& logonPtr ); - bool authenticate( std::shared_ptr sqliteConnect, const char* username_in, const char* password_in, std::string& textOut ); + bool authenticate( std::shared_ptr& sqliteConnect, + const std::string& username_in, + const std::string& password_in, + std::string& textOut ); FIX::DatabaseConnectionID m_dbConnectionID; - std::shared_ptr m_basicDomainParticipantPtr; + distributed_ats_utils::basic_domain_participant_ptr _basic_domain_participant_ptr; + + distributed_ats_utils::topic_tuple_ptr _logon_topic_tuple; + distributed_ats_utils::topic_tuple_ptr _logout_topic_tuple; + + distributed_ats_utils::data_reader_tuple_ptr _logon_data_reader_tuple; + distributed_ats_utils::data_reader_tuple_ptr _logout_data_reader_tuple; std::map m_credentials; - DDS::ContentFilteredTopic_var m_cft_logon; - DDS::ContentFilteredTopic_var m_cft_logout; + distributed_ats_utils::data_writer_ptr m_logon_dw; + distributed_ats_utils::data_writer_ptr m_logout_dw; - DistributedATS_Logon::LogonDataWriter_var m_logon_dw; - DistributedATS_Logout::LogoutDataWriter_var m_logout_dw; + LogonPtrQueuePtr _logon_request_queue; + + std::thread _service_thread; + + std::atomic _is_running; + }; } /* namespace DistributedATS */ - -#endif /* AUTHSERVICE_H_ */ diff --git a/DataService/src/CMakeLists.txt b/DataService/src/CMakeLists.txt new file mode 100644 index 0000000..a6e8953 --- /dev/null +++ b/DataService/src/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 3.12.4) + +if(NOT CMAKE_VERSION VERSION_LESS 3.0) + cmake_policy(SET CMP0048 NEW) +endif() + +project(DataService) + +# Find requirements +if(NOT fastcdr_FOUND) + find_package(fastcdr REQUIRED) +endif() + +if(NOT fastdds_FOUND) + find_package(fastdds 3 REQUIRED) +endif() + +find_package(log4cxx REQUIRED) + +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +link_directories(${CMAKE_INSTALL_PREFIX}/lib) + +file(GLOB DISTRIBUTED_ATS_DATASERVICE_SRC *) +add_executable(DataService ${DISTRIBUTED_ATS_DATASERVICE_SRC}) +link_directories(DistributedATSLib quickfix log4cxx) +target_link_libraries(DataService DistributedATSLib quickfix log4cxx boost_program_options sqlite3) + +set(CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "-o linker-signed") + +install(TARGETS DataService + PUBLIC_HEADER + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dats +) diff --git a/DataService/src/DataService.mpc b/DataService/src/DataService.mpc deleted file mode 100644 index 7d1a279..0000000 --- a/DataService/src/DataService.mpc +++ /dev/null @@ -1,42 +0,0 @@ - - - -project(DataService) : dcpsexe, dcps_tcp, svc_utils { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - requires += tao_orbsvcs - after += Svc_Utils Logon Logout SecurityList SecurityListRequest ExecutionReport MarketDataSnapshotFullRefresh OrderMassStatusRequest MarketDataIncrementalRefresh ExecutionReport MarketDataRequest - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - exeout = $(DATS_HOME)/bin - - exename = * - requires += tao_orbsvcs - - includes += $(TAO_ROOT)/orbsvcs $(DATS_HOME)/GenTools/idl/ $(DATS_HOME)/Common $(QUICKFIX_HOME)/include $(SQLITE_HOME)/include - libpaths += $(DATS_HOME)/lib $(QUICKFIX_HOME)/lib $(SQLITE_HOME)/lib - - after += Svc_Utils - - libs += Logon Logout SecurityList SecurityListRequest ExecutionReport MarketDataSnapshotFullRefresh OrderMassStatusRequest MarketDataIncrementalRefresh ExecutionReport MarketDataRequest sqlite3 - - Source_Files { - MassOrderStatusRequestDataReaderListenerImpl.cpp - MarketDataService.cpp - ExecutionReportDataReaderListenerImpl.cpp - MarketDataIncrementalRefreshDataReaderListenerImpl.cpp - MarketDataRequestDataReaderListenerImpl.cpp - SecurityListRequestDataReaderListenerImpl.cpp - LogonDataReaderListenerImpl.cpp - AuthService.cpp - RefDataService.cpp - LogoutDataReaderListenerImpl.cpp - MassOrderStatusService.cpp - main.cpp - } -} - diff --git a/DataService/src/ExecutionReportDataReaderListenerImpl.cpp b/DataService/src/ExecutionReportDataReaderListenerImpl.cpp index 4ff1cfb..0ca4de8 100644 --- a/DataService/src/ExecutionReportDataReaderListenerImpl.cpp +++ b/DataService/src/ExecutionReportDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -32,80 +32,54 @@ #include +#include +#include + + namespace DistributedATS { - + ExecutionReportDataReaderListenerImpl::~ExecutionReportDataReaderListenerImpl() { - // TODO Auto-generated destructor stub } -void ExecutionReportDataReaderListenerImpl::on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException) +void ExecutionReportDataReaderListenerImpl::on_data_available( eprosima::fastdds::dds::DataReader* reader ) { - try + DistributedATS_ExecutionReport::ExecutionReport executionReport; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&executionReport, &info) == eprosima::fastdds::dds::RETCODE_OK) { - DistributedATS_ExecutionReport::ExecutionReportDataReader_var execution_report_dr = DistributedATS_ExecutionReport::ExecutionReportDataReader::_narrow(reader); - - if (CORBA::is_nil ( execution_report_dr.in() ) ) - { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) ERROR: Read ExecutionReportDataReaderListenerImpl::on_data_available"))); - - ACE_OS::exit(1); - } - - while( true ) + if (info.valid_data) { - DistributedATS_ExecutionReport::ExecutionReport executionReport; - DDS::SampleInfo si ; - DDS::ReturnCode_t status = execution_report_dr->take_next_sample( executionReport, si ); - - if (status == DDS::RETCODE_OK) + std::stringstream ss; + ExecutionReportLogger::log(ss, executionReport); + LOG4CXX_INFO(logger, "Execution Report: [" << ss.str() << "]"); + + std::string username = executionReport.DATS_DestinationUser(); + + auto clientOrderMap = _execution_reports->find( username ); + + if ( clientOrderMap == _execution_reports->end() ) { - if ( !si.valid_data ) - continue; - - std::stringstream ss; - - ExecutionReportLogger::log(ss, executionReport); - - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) Execution Report : %s\n"), ss.str().c_str())); - - std::string username = executionReport.m_Header.SenderSubID.in(); - - auto clientOrderMap = m_executionReports->find( username ); - - if ( clientOrderMap == m_executionReports->end() ) - { - clientOrderMap = m_executionReports->emplace( username, std::make_shared()).first; - } - - std::string clientOrderId = executionReport.OrderID.in(); - - std::shared_ptr executionRequestPtr( new DistributedATS_ExecutionReport::ExecutionReport(executionReport) ); - - auto executionReportListPtr = (*clientOrderMap->second).find(clientOrderId); - - if ( executionReportListPtr == (*clientOrderMap->second).end() ) - { - executionReportListPtr = (*clientOrderMap->second).emplace(clientOrderId, std::make_shared()).first; - } - - (*executionReportListPtr->second).emplace_back(executionRequestPtr); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) ERROR: Read DATS::ExecutionReport: %d.\n"), status)); + clientOrderMap = _execution_reports->emplace( username, std::make_shared()).first; + } + + std::string clientOrderId = executionReport.OrderID(); + + std::shared_ptr executionRequestPtr( new DistributedATS_ExecutionReport::ExecutionReport(executionReport) ); + + auto executionReportListPtr = (*clientOrderMap->second).find(clientOrderId); + + if ( executionReportListPtr == (*clientOrderMap->second).end() ) + { + executionReportListPtr = (*clientOrderMap->second).emplace(clientOrderId, std::make_shared()).first; } + + (*executionReportListPtr->second).emplace_back(executionRequestPtr); + } - - } catch (CORBA::Exception& e) - { - std::stringstream ss; - ss << "Exception caught in read:" << std::endl << e << std::endl; - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) ExceptionReport %s.\n"), ss.str().c_str())); - ACE_OS::exit(1); } + } - } diff --git a/DataService/src/ExecutionReportDataReaderListenerImpl.h b/DataService/src/ExecutionReportDataReaderListenerImpl.h index 30a8044..89d46a6 100644 --- a/DataService/src/ExecutionReportDataReaderListenerImpl.h +++ b/DataService/src/ExecutionReportDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,51 +25,33 @@ SOFTWARE. */ -#ifndef EXECUTIONREPORTDATAREADERLISTENERIMPL_H_ -#define EXECUTIONREPORTDATAREADERLISTENERIMPL_H_ +#pragma once -#include +#include +#include +#include +#include -#include "MassOrderStatusService.h" +#include "OrderMassStatusRequestService.h" namespace DistributedATS { -class ExecutionReportDataReaderListenerImpl : -public virtual OpenDDS::DCPS::LocalObject +class ExecutionReportDataReaderListenerImpl : public eprosima::fastdds::dds::DataReaderListener { public: - virtual ~ExecutionReportDataReaderListenerImpl(); + ~ExecutionReportDataReaderListenerImpl() override; - ExecutionReportDataReaderListenerImpl( ExecutionReportsPtr executionReports ) - : m_executionReports(executionReports) {}; + ExecutionReportDataReaderListenerImpl( ExecutionReportsPtr& execution_reports ) + : _execution_reports(execution_reports) {}; - virtual void on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException); + void on_data_available( eprosima::fastdds::dds::DataReader* reader ) override; - virtual void on_requested_deadline_missed ( DDS::DataReader_ptr reader, const DDS::RequestedDeadlineMissedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_requested_incompatible_qos ( DDS::DataReader_ptr reader, const DDS::RequestedIncompatibleQosStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_liveliness_changed ( DDS::DataReader_ptr reader, const DDS::LivelinessChangedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_subscription_matched ( DDS::DataReader_ptr reader, const DDS::SubscriptionMatchedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_sample_rejected( DDS::DataReader_ptr reader, const DDS::SampleRejectedStatus& status) - throw (CORBA::SystemException) {}; - - virtual void on_sample_lost( DDS::DataReader_ptr reader, const DDS::SampleLostStatus& status) - throw (CORBA::SystemException) {}; private: - ExecutionReportsPtr m_executionReports; + ExecutionReportsPtr _execution_reports; }; } /* namespace FIXGateway */ - -#endif /* EXECUTIONREPORTDATAREADERLISTENERIMPL_H_ */ diff --git a/DataService/src/LogonDataReaderListenerImpl.cpp b/DataService/src/LogonDataReaderListenerImpl.cpp index 238477d..de367dc 100644 --- a/DataService/src/LogonDataReaderListenerImpl.cpp +++ b/DataService/src/LogonDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -27,61 +27,40 @@ #include #include "LogonDataReaderListenerImpl.hpp" -#include +#include +#include +#include #include #include #include -void LogonDataReaderListenerImpl::on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException) -{ - try - { - DistributedATS_Logon::LogonDataReader_var logon_dr = DistributedATS_Logon::LogonDataReader::_narrow(reader); - - if (CORBA::is_nil ( logon_dr.in() ) ) - { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) LogonDataReaderListenerImpl::on_data_available: _narrow failed"))); +#include +#include - ACE_OS::exit(1); - } - - while( true ) - { - DistributedATS_Logon::Logon logon; - DDS::SampleInfo si ; - DDS::ReturnCode_t status = logon_dr->take_next_sample( logon, si ); - - if (status == DDS::RETCODE_OK) - { - if ( !si.valid_data ) - continue; - - std::stringstream ss; - LogonLogger::log(ss, logon); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) Logon Recieved : %s\n"), ss.str().c_str())); +static auto logger = log4cxx::Logger::getRootLogger(); - DistributedATS_Logon::Logon* logonPtr = new DistributedATS_Logon::Logon( logon ); +using namespace DistributedATS; - ACE_Message_Block* msg = new ACE_Message_Block((char*)logonPtr, sizeof(logon)); - _logonQueue->enqueue_tail(msg); +void LogonDataReaderListenerImpl::on_data_available( eprosima::fastdds::dds::DataReader* reader ) +{ - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) ERROR: Read DATS::Logon: Error: %d.\n"), status)); - } + DistributedATS_Logon::Logon logon; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&logon, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + std::stringstream ss; + LogonLogger::log(ss, logon); + LOG4CXX_INFO(logger, "Data Reader Logon : [" << ss.str() << "]" << logon.DATS_Destination() ); + + if (logon.DATS_Destination().compare("DATA_SERVICE") == 0) + _logonQueuePtr->push(std::make_shared(logon)); + } - - } catch (CORBA::Exception& e) { - - std::stringstream ss; - ss << "Exception caught in read:" << std::endl << e << std::endl; - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) Logon %s.\n"), ss.str().c_str())); - - ACE_OS::exit(1); } - - + } diff --git a/DataService/src/LogonDataReaderListenerImpl.hpp b/DataService/src/LogonDataReaderListenerImpl.hpp index 6ec04dc..90383e8 100644 --- a/DataService/src/LogonDataReaderListenerImpl.hpp +++ b/DataService/src/LogonDataReaderListenerImpl.hpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,54 +25,38 @@ SOFTWARE. */ -#ifndef LogonDataReaderListenerImpl_hpp -#define LogonDataReaderListenerImpl_hpp +#pragma once -#include +#include +#include +#include +#include +#include -#include -#include +namespace DistributedATS { -#include -#include +using LogonPtr = std::shared_ptr; +typedef boost::lockfree::spsc_queue> LogonPtrQueue; +typedef std::shared_ptr LogonPtrQueuePtr; -class LogonDataReaderListenerImpl : -public virtual OpenDDS::DCPS::LocalObject + +class LogonDataReaderListenerImpl : public eprosima::fastdds::dds::DataReaderListener { public: - LogonDataReaderListenerImpl( ACE_Message_Queue* logonQueue ) : _logonQueue( logonQueue ) {}; - - virtual void on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException); - - virtual void on_requested_deadline_missed ( DDS::DataReader_ptr reader, const DDS::RequestedDeadlineMissedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_requested_incompatible_qos ( DDS::DataReader_ptr reader, const DDS::RequestedIncompatibleQosStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_liveliness_changed ( DDS::DataReader_ptr reader, const DDS::LivelinessChangedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_subscription_matched ( DDS::DataReader_ptr reader, const DDS::SubscriptionMatchedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_sample_rejected( DDS::DataReader_ptr reader, const DDS::SampleRejectedStatus& status) - throw (CORBA::SystemException) {}; + LogonDataReaderListenerImpl( LogonPtrQueuePtr& logonQueuePtr ) : _logonQueuePtr( logonQueuePtr ) {}; + ~LogonDataReaderListenerImpl() override {}; - virtual void on_sample_lost( DDS::DataReader_ptr reader, const DDS::SampleLostStatus& status) - throw (CORBA::SystemException) {}; + void on_data_available( eprosima::fastdds::dds::DataReader* reader ) override; protected: LogonDataReaderListenerImpl() {}; private: - ACE_Message_Queue* _logonQueue; + LogonPtrQueuePtr _logonQueuePtr; - // DATSLogon::LogonDataWriter_var _logon_dw; - // DATSLogout::LogoutDataWriter_var _logout_dw; }; -#endif /* LogonDataReaderListenerImpl_hpp */ +} diff --git a/DataService/src/LogoutDataReaderListenerImpl.cpp b/DataService/src/LogoutDataReaderListenerImpl.cpp index 2c72bc1..b82d0fe 100644 --- a/DataService/src/LogoutDataReaderListenerImpl.cpp +++ b/DataService/src/LogoutDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -27,55 +27,32 @@ #include #include "LogoutDataReaderListenerImpl.hpp" -#include +#include +#include +#include +#include #include - #include +#include +#include + +static auto logger = log4cxx::Logger::getRootLogger(); -void LogoutDataReaderListenerImpl::on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException) + +void LogoutDataReaderListenerImpl::on_data_available( eprosima::fastdds::dds::DataReader* reader ) { - try + DistributedATS_Logout::Logout logout; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&logout, &info) == eprosima::fastdds::dds::RETCODE_OK) { - DistributedATS_Logout::LogoutDataReader_var logout_dr = DistributedATS_Logout::LogoutDataReader::_narrow(reader); - - if (CORBA::is_nil ( logout_dr.in() ) ) + if (info.valid_data) { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) LogoutDataReaderListenerImpl::on_data_available: _narrow failed"))); - ACE_OS::exit(1); + std::stringstream ss; + LogoutLogger::log(ss, logout); + LOG4CXX_INFO(logger, "Data Reader Logout : [" << ss.str() << "]"); } - - while( true ) - { - DistributedATS_Logout::Logout logout; - DDS::SampleInfo si ; - DDS::ReturnCode_t status = logout_dr->take_next_sample( logout, si ); - - if (status == DDS::RETCODE_OK) - { - if ( !si.valid_data ) - continue; - - std::stringstream ss; - LogoutLogger::log(ss, logout); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) Logout : %s\n"), ss.str().c_str())); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) Read DATS::Logout: Error: %d.\n"), status)); - } - } - - } catch (CORBA::Exception& e) { - - std::stringstream ss; - ss << "Exception caught in read:" << std::endl << e << std::endl; - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) Logout %s.\n"), ss.str().c_str())); - - ACE_OS::exit(1); } - - } diff --git a/DataService/src/LogoutDataReaderListenerImpl.hpp b/DataService/src/LogoutDataReaderListenerImpl.hpp index ad8d3c9..6024569 100644 --- a/DataService/src/LogoutDataReaderListenerImpl.hpp +++ b/DataService/src/LogoutDataReaderListenerImpl.hpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,45 +25,26 @@ SOFTWARE. */ -#ifndef LogoutDataReaderListenerImpl_hpp -#define LogoutDataReaderListenerImpl_hpp +#pragma once -#include +#include +#include +#include +#include +#include -#include - -class LogoutDataReaderListenerImpl : -public virtual OpenDDS::DCPS::LocalObject +class LogoutDataReaderListenerImpl : public eprosima::fastdds::dds::DataReaderListener { public: - LogoutDataReaderListenerImpl( DistributedATS_Logout::LogoutDataWriter_var& logout_dw ) : _logout_dw( logout_dw ) {}; - - virtual void on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException); - - virtual void on_requested_deadline_missed ( DDS::DataReader_ptr reader, const DDS::RequestedDeadlineMissedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_requested_incompatible_qos ( DDS::DataReader_ptr reader, const DDS::RequestedIncompatibleQosStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_liveliness_changed ( DDS::DataReader_ptr reader, const DDS::LivelinessChangedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_subscription_matched ( DDS::DataReader_ptr reader, const DDS::SubscriptionMatchedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_sample_rejected( DDS::DataReader_ptr reader, const DDS::SampleRejectedStatus& status) - throw (CORBA::SystemException) {}; + LogoutDataReaderListenerImpl( eprosima::fastdds::dds::DataWriter* logout_dw ) : _logout_dw( logout_dw ) {}; - virtual void on_sample_lost( DDS::DataReader_ptr reader, const DDS::SampleLostStatus& status) - throw (CORBA::SystemException) {}; + void on_data_available( eprosima::fastdds::dds::DataReader* reader ) override; protected: LogoutDataReaderListenerImpl() {}; private: - DistributedATS_Logout::LogoutDataWriter_var _logout_dw; + eprosima::fastdds::dds::DataWriter* _logout_dw; }; -#endif /* LogonDataReaderListenerImpl_hpp */ diff --git a/DataService/src/MarketDataIncrementalRefreshDataReaderListenerImpl.cpp b/DataService/src/MarketDataIncrementalRefreshDataReaderListenerImpl.cpp index e62a177..a8554d7 100644 --- a/DataService/src/MarketDataIncrementalRefreshDataReaderListenerImpl.cpp +++ b/DataService/src/MarketDataIncrementalRefreshDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -30,95 +30,72 @@ #include #include -namespace DistributedATS { - -MarketDataIncrementalRefreshDataReaderListenerImpl::~MarketDataIncrementalRefreshDataReaderListenerImpl() { - // TODO Auto-generated destructor stub -} +#include +#include +#include +#include +#include +#include -void MarketDataIncrementalRefreshDataReaderListenerImpl::on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException) -{ - try - { - DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefreshDataReader_var - market_data_incremental_refresh_dr = DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefreshDataReader::_narrow(reader); - if (CORBA::is_nil ( market_data_incremental_refresh_dr.in() ) ) - { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) MarketDataIncrementalRefreshDataReaderListenerImpl::on_data_available: _narrow failed.\n"))); +namespace DistributedATS { - ACE_OS::exit(1); - } - while( true ) +void MarketDataIncrementalRefreshDataReaderListenerImpl::on_data_available(eprosima::fastdds::dds::DataReader* reader) +{ + DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh marketDataRefresh; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&marketDataRefresh, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) { - DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh marketDataRefresh; - DDS::SampleInfo si ; - DDS::ReturnCode_t status = market_data_incremental_refresh_dr->take_next_sample( marketDataRefresh, si ); + std::stringstream ss; + MarketDataIncrementalRefreshLogger::log(ss, marketDataRefresh); + LOG4CXX_INFO(logger, "MarketDataIncrementalRefresh : [" << ss.str() << "]"); - if (status == DDS::RETCODE_OK) - { - if ( !si.valid_data ) - continue; + insertIncrementalMarketDataRefresh(marketDataRefresh); - std::stringstream ss; - MarketDataIncrementalRefreshLogger::log(ss, marketDataRefresh); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) MarketDataIncrementalRefresh : %s\n"), ss.str().c_str())); - - insertIncrementalMarketDataRefresh(marketDataRefresh); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) Read DATS::MarketDataIncrementalRefresh: %d.\n"), status)); - } } - - } catch (CORBA::Exception& e) { - - std::stringstream ss; - ss << "Exception caught in read:" << std::endl << e << std::endl; - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) MarketDataIncrementalRefresh %s.\n"), ss.str().c_str())); - - ACE_OS::exit(1); } + } - void MarketDataIncrementalRefreshDataReaderListenerImpl::insertIncrementalMarketDataRefresh( const DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& incrementalRefresh ) - { - std::map> current_market_data_snapshot; +void MarketDataIncrementalRefreshDataReaderListenerImpl::insertIncrementalMarketDataRefresh( const DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& incrementalRefresh ) +{ + + std::map> current_market_data_snapshot; - for ( int incremental_update_index = 0; incremental_update_index entryList; - entryList.push_back( mdEntry ); - current_market_data_snapshot.emplace( instrument, entryList ); - - } else { - mdEntryList->second.push_back(mdEntry); - } - } - - for ( auto& mdEntry : current_market_data_snapshot ) + if ( mdEntryList == current_market_data_snapshot.end() ) { - (*_incrementalRefreshMapPtr)[mdEntry.first] = mdEntry.second; + std::list entryList; + entryList.push_back( mdEntry ); + current_market_data_snapshot.emplace( instrument, entryList ); + } else { + mdEntryList->second.push_back(mdEntry); } + } + + for ( auto& mdEntry : current_market_data_snapshot ) + { + (*_incrementalRefreshMapPtr)[mdEntry.first] = mdEntry.second; } +} } /* namespace FIXGateway */ diff --git a/DataService/src/MarketDataIncrementalRefreshDataReaderListenerImpl.h b/DataService/src/MarketDataIncrementalRefreshDataReaderListenerImpl.h index 3911798..f001fc3 100644 --- a/DataService/src/MarketDataIncrementalRefreshDataReaderListenerImpl.h +++ b/DataService/src/MarketDataIncrementalRefreshDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,44 +25,21 @@ SOFTWARE. */ -#ifndef MARKETDATAINCREMENTALREFRESHDATAREADERLISTENERIMPL_H_ -#define MARKETDATAINCREMENTALREFRESHDATAREADERLISTENERIMPL_H_ +#pragma once -#include +#include #include "MarketDataService.h" - - namespace DistributedATS { -class MarketDataIncrementalRefreshDataReaderListenerImpl : - public virtual OpenDDS::DCPS::LocalObject +class MarketDataIncrementalRefreshDataReaderListenerImpl : public eprosima::fastdds::dds::DataReaderListener { public: - virtual ~MarketDataIncrementalRefreshDataReaderListenerImpl(); - - MarketDataIncrementalRefreshDataReaderListenerImpl( DistributedATS::IncrementalRefreshMapPtr incrementalRefreshMapPtr/*, ACE_Message_Queue* marketDataRequestQueue */ ) - : _incrementalRefreshMapPtr(incrementalRefreshMapPtr) /*, _marketDataRequestQueue(marketDataRequestQueue)*/ {}; - - virtual void on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException); - - virtual void on_requested_deadline_missed ( DDS::DataReader_ptr reader, const DDS::RequestedDeadlineMissedStatus & status) - throw (CORBA::SystemException) {}; + MarketDataIncrementalRefreshDataReaderListenerImpl( DistributedATS::IncrementalRefreshMapPtr incrementalRefreshMapPtr ) + : _incrementalRefreshMapPtr(incrementalRefreshMapPtr) {}; - virtual void on_requested_incompatible_qos ( DDS::DataReader_ptr reader, const DDS::RequestedIncompatibleQosStatus & status) - throw (CORBA::SystemException) {}; + void on_data_available( eprosima::fastdds::dds::DataReader* reader ) override; - virtual void on_liveliness_changed ( DDS::DataReader_ptr reader, const DDS::LivelinessChangedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_subscription_matched ( DDS::DataReader_ptr reader, const DDS::SubscriptionMatchedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_sample_rejected( DDS::DataReader_ptr reader, const DDS::SampleRejectedStatus& status) - throw (CORBA::SystemException) {}; - - virtual void on_sample_lost( DDS::DataReader_ptr reader, const DDS::SampleLostStatus& status) - throw (CORBA::SystemException) {}; protected: void insertIncrementalMarketDataRefresh( const DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& incrementalRefresh ); @@ -71,5 +48,3 @@ class MarketDataIncrementalRefreshDataReaderListenerImpl : }; } /* namespace DistributedATS */ - -#endif /* MARKETDATAINCREMENTALREFRESHDATAREADERLISTENERIMPL_H_ */ diff --git a/DataService/src/MarketDataRequestDataReaderListenerImpl.cpp b/DataService/src/MarketDataRequestDataReaderListenerImpl.cpp index efc962f..91fb006 100644 --- a/DataService/src/MarketDataRequestDataReaderListenerImpl.cpp +++ b/DataService/src/MarketDataRequestDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,65 +26,40 @@ */ #include "MarketDataRequestDataReaderListenerImpl.h" -#include #include +#include #include #include +#include -namespace DistributedATS { - -MarketDataRequestDataReaderListenerImpl::~MarketDataRequestDataReaderListenerImpl() { - // TODO Auto-generated destructor stub -} - -void MarketDataRequestDataReaderListenerImpl::on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException) -{ - try - { - DistributedATS_MarketDataRequest::MarketDataRequestDataReader_var - market_data_request_dr = DistributedATS_MarketDataRequest::MarketDataRequestDataReader::_narrow(reader); +#include +#include +#include +#include - if (CORBA::is_nil ( market_data_request_dr.in() ) ) - { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) MarketDataRequestDataReaderListenerImpl::on_data_available: _narrow failed.\n"))); - - ACE_OS::exit(1); - } - - while( true ) - { - DistributedATS_MarketDataRequest::MarketDataRequest marketDataRequest; - DDS::SampleInfo si ; - DDS::ReturnCode_t status = market_data_request_dr->take_next_sample( marketDataRequest, si ); +static auto logger = log4cxx::Logger::getRootLogger(); - if (status == DDS::RETCODE_OK) - { - if ( !si.valid_data ) - continue; - - std::stringstream ss; - MarketDataRequestLogger::log(ss, marketDataRequest); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) MarketDataRequest : %s\n"), ss.str().c_str())); - DistributedATS_MarketDataRequest::MarketDataRequest* marketDataRequestPtr = new DistributedATS_MarketDataRequest::MarketDataRequest( marketDataRequest ); +namespace DistributedATS { - ACE_Message_Block* msg = new ACE_Message_Block((char*)marketDataRequestPtr, sizeof(marketDataRequest)); - _marketDataRequestQueue->enqueue_tail(msg); - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) Read DATSMarketDataSnapshotFullRefreshDataReader: %d\n"), status)); - } - } +void MarketDataRequestDataReaderListenerImpl::on_data_available( eprosima::fastdds::dds::DataReader* reader) +{ - } catch (CORBA::Exception& e) { + DistributedATS_MarketDataRequest::MarketDataRequest marketDataRequest; + eprosima::fastdds::dds::SampleInfo info; + if (reader->take_next_sample(&marketDataRequest, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { std::stringstream ss; - ss << "Exception caught in read:" << std::endl << e << std::endl; - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) DATSMarketDataSnapshotFullRefreshDataReader %s.\n"), ss.str().c_str())); - ACE_OS::exit(1); - } + MarketDataRequestLogger::log(ss, marketDataRequest); + LOG4CXX_INFO(logger, "MarketDataRequest : [" << ss.str() << "]"); + + _marketDataRequestQueuePtr->push(std::make_shared( marketDataRequest )); + } + } } } /* namespace DistributedATS */ diff --git a/DataService/src/MarketDataRequestDataReaderListenerImpl.h b/DataService/src/MarketDataRequestDataReaderListenerImpl.h index 0aa1991..6f6c455 100644 --- a/DataService/src/MarketDataRequestDataReaderListenerImpl.h +++ b/DataService/src/MarketDataRequestDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,46 +25,32 @@ SOFTWARE. */ -#ifndef MARKETDATAREQUESTDATAREADERLISTENERIMPL_H_ -#define MARKETDATAREQUESTDATAREADERLISTENERIMPL_H_ +#pragma once -#include -#include -#include +#include +#include +#include +#include +#include namespace DistributedATS { -class MarketDataRequestDataReaderListenerImpl : -public virtual OpenDDS::DCPS::LocalObject -{ -public: - MarketDataRequestDataReaderListenerImpl( ACE_Message_Queue* marketDataRequestQueue ) - : _marketDataRequestQueue( marketDataRequestQueue ) {}; - virtual ~MarketDataRequestDataReaderListenerImpl(); - - virtual void on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException); - - virtual void on_requested_deadline_missed ( DDS::DataReader_ptr reader, const DDS::RequestedDeadlineMissedStatus & status) - throw (CORBA::SystemException) {}; +using MarketDataRequestPtr = std::shared_ptr; - virtual void on_requested_incompatible_qos ( DDS::DataReader_ptr reader, const DDS::RequestedIncompatibleQosStatus & status) - throw (CORBA::SystemException) {}; +typedef boost::lockfree::spsc_queue> MarketDataRequestQueue; +typedef std::shared_ptr MarketDataRequestQueuePtr; - virtual void on_liveliness_changed ( DDS::DataReader_ptr reader, const DDS::LivelinessChangedStatus & status) - throw (CORBA::SystemException) {}; - virtual void on_subscription_matched ( DDS::DataReader_ptr reader, const DDS::SubscriptionMatchedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_sample_rejected( DDS::DataReader_ptr reader, const DDS::SampleRejectedStatus& status) - throw (CORBA::SystemException) {}; +class MarketDataRequestDataReaderListenerImpl : public eprosima::fastdds::dds::DataReaderListener +{ +public: + MarketDataRequestDataReaderListenerImpl( MarketDataRequestQueuePtr marketDataRequestQueuePtr ) + : _marketDataRequestQueuePtr( marketDataRequestQueuePtr ) {}; + + void on_data_available( eprosima::fastdds::dds::DataReader* reader ) override; - virtual void on_sample_lost( DDS::DataReader_ptr reader, const DDS::SampleLostStatus& status) - throw (CORBA::SystemException) {}; private: - ACE_Message_Queue* _marketDataRequestQueue; + MarketDataRequestQueuePtr _marketDataRequestQueuePtr; }; } /* namespace DistributedATS */ - -#endif /* MARKETDATAREQUESTDATAREADERLISTENERIMPL_H_ */ diff --git a/DataService/src/MarketDataService.cpp b/DataService/src/MarketDataService.cpp index f354a78..6e19962 100644 --- a/DataService/src/MarketDataService.cpp +++ b/DataService/src/MarketDataService.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,35 +25,50 @@ SOFTWARE. */ -#include - #include "MarketDataService.h" +#include #include - +#include +#include +#include +#include #include "MarketDataIncrementalRefreshDataReaderListenerImpl.h" -#include "MarketDataRequestDataReaderListenerImpl.h" -#include +#include +#include + +#include +#include + +#include + +#include namespace DistributedATS { -MarketDataService::MarketDataService( std::shared_ptr basicDomainParticipantPtr, - const FIX::DatabaseConnectionID& dbConnectionID, - ACE_Thread_Manager *thr_mgr) : - ACE_Task (thr_mgr), m_basicDomainParticipantPtr( basicDomainParticipantPtr ) +MarketDataService::MarketDataService( std::shared_ptr basic_domain_participant, + const FIX::DatabaseConnectionID& dbConnectionID) : + _basic_domain_participant_ptr( basic_domain_participant ) { _incrementalRefreshMapPtr = std::make_shared(); m_sqliteConnection.reset( new DistributedATS::SQLiteConnection(dbConnectionID) ); + + _markat_data_request_queue_ptr = std::make_shared(); + std::atomic_init(&_is_running, true); + + _service_thread = std::thread(&MarketDataService::service, this); + initialize(); } MarketDataService::~MarketDataService() { - // TODO Auto-generated destructor stub + std::atomic_init(&_is_running, false); + _service_thread.join(); } void MarketDataService::initialize() @@ -70,113 +85,107 @@ void MarketDataService::initialize() " m.market_name=imm.market_name and " \ " hp.business_date=(select max(business_date) from hist_price where instrument_name=i.instrument_name)"); - ACE_DEBUG ((LM_INFO, ACE_TEXT("(%P|%t|%D) Populating hist stats\n"))); - + LOG4CXX_INFO(logger, "Populating hist stats"); + m_sqliteConnection->execute(query); for ( int instrument_index =0; instrument_index initial_list;*/ + int last_trade_price = std::atoi(query.getValue(instrument_index,2).c_str()); DistributedATS_MarketDataIncrementalRefresh::NoMDEntries last_price_entry; - last_price_entry.MDUpdateAction = FIX::MDUpdateAction_NEW; - last_price_entry.MDEntryType = FIX::MDEntryType_OPENING_PRICE; - last_price_entry.MDEntryPx = last_trade_price; + last_price_entry.MDUpdateAction(FIX::MDUpdateAction_NEW); + last_price_entry.MDEntryType(FIX::MDEntryType_OPENING_PRICE); + last_price_entry.MDEntryPx(last_trade_price); + last_price_entry.TimeInForce(1); _incrementalRefreshMapPtr->emplace(Instrument( market, symbol), std::list { last_price_entry } ); - } - } -void MarketDataService::createMarketDataRequestListener( const std::string& data_service_filter_expression/*, - const char* market_data_request_topic_name*/ ) +void MarketDataService::createMarketDataRequestListener() { - DDS::Topic_var market_data_request_topic = m_basicDomainParticipantPtr->createTopicAndRegisterType - < DistributedATS_MarketDataRequest::MarketDataRequestTypeSupport_var, - DistributedATS_MarketDataRequest::MarketDataRequestTypeSupportImpl > + + DistributedATS_MarketDataRequest::MarketDataRequest marketDataRequest; + + _market_data_request_topic_tuple = _basic_domain_participant_ptr->make_topic + < + DistributedATS_MarketDataRequest::MarketDataRequestPubSubType, + DistributedATS_MarketDataRequest::MarketDataRequest> ( MARKET_DATA_REQUEST_TOPIC_NAME ); - std::cout << "Market Data Request Filter :" << data_service_filter_expression.c_str() << std::endl; - - DDS::ContentFilteredTopic_ptr cft_market_data_request = - m_basicDomainParticipantPtr->getDomainParticipant()->create_contentfilteredtopic( "MARKET_DATA_REQUEST_FILTER", - market_data_request_topic, - data_service_filter_expression.c_str(), - DDS::StringSeq()); - DDS::DataReaderListener_var marketDataRequestDataListener( - new DistributedATS::MarketDataRequestDataReaderListenerImpl( msg_queue() ) - ); - - m_basicDomainParticipantPtr->createDataReaderListener( cft_market_data_request, marketDataRequestDataListener ); + std::string filter_data_service = "DATS_DestinationUser = %0"; + + _market_data_request_data_reader_tuple = _basic_domain_participant_ptr->make_data_reader_tuple(_market_data_request_topic_tuple, + new DistributedATS::MarketDataRequestDataReaderListenerImpl ( _markat_data_request_queue_ptr ), + "FILTERED_MARKET_DATA_REQUEST", filter_data_service, { _basic_domain_participant_ptr->get_participant_name() }); + + + //_market_data_request_data_reader_tuple = _basic_domain_participant_ptr->make_data_reader_tuple(_market_data_request_topic_tuple, new DistributedATS::MarketDataRequestDataReaderListenerImpl ( data_service_name, _markat_data_request_queue_ptr ) ); } void MarketDataService::createMarketDataIncrementalRefreshListener() { - DDS::Topic_var market_data_incremental_refresh_topic = m_basicDomainParticipantPtr->createTopicAndRegisterType - < DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefreshTypeSupport_var, - DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefreshTypeSupportImpl > + _market_data_incremental_refresh_topic_tuple = _basic_domain_participant_ptr->make_topic + < DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefreshPubSubType, + DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh> ( MARKET_DATA_INCREMENTAL_REFRESH_TOPIC_NAME ); - DDS::DataReaderListener_var marketDataIncrementalRefreshtDataListener(new DistributedATS::MarketDataIncrementalRefreshDataReaderListenerImpl(_incrementalRefreshMapPtr)); + _market_data_incremental_refresh_data_reader_tuple = _basic_domain_participant_ptr->make_data_reader_tuple(_market_data_incremental_refresh_topic_tuple, + new DistributedATS::MarketDataIncrementalRefreshDataReaderListenerImpl(_incrementalRefreshMapPtr)); - m_basicDomainParticipantPtr->createDataReaderListener( market_data_incremental_refresh_topic, marketDataIncrementalRefreshtDataListener ); } void MarketDataService::createMarketDataFullRefreshDataWriter() { - DDS::Topic_var market_data_snapshot_full_refresh_topic = m_basicDomainParticipantPtr->createTopicAndRegisterType - < DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefreshTypeSupport_var, - DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefreshTypeSupportImpl > + _market_data_snapshot_full_refresh_topic_tuple = _basic_domain_participant_ptr->make_topic + < DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefreshPubSubType, + DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh> ( MARKET_DATA_SNAPSHOT_FULL_REFRESH_TOPIC_NAME ); + + _market_data_shapshot_full_refresh_dw = - m_basicDomainParticipantPtr->createDataWriter< DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefreshDataWriter_var, - DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefreshDataWriter > - ( market_data_snapshot_full_refresh_topic ); + _basic_domain_participant_ptr->make_data_writer( _market_data_snapshot_full_refresh_topic_tuple ); } -bool MarketDataService::processMarketDataRequest( DistributedATS_MarketDataRequest::MarketDataRequest* marketDataRequestPtr ) +bool MarketDataService::processMarketDataRequest( const MarketDataRequestPtr& marketDataRequestPtr ) { - std::cout << ">>>> Received MarketDataRequest : " << marketDataRequestPtr->m_Header.SenderCompID << ":" - << marketDataRequestPtr->m_Header.TargetCompID - << ":" << marketDataRequestPtr->m_Header.SenderSubID << std::endl; + std::cout << ">>>> Received MarketDataRequest : " << marketDataRequestPtr->DATS_Source() << ":" + << marketDataRequestPtr->DATS_Destination() + << ":" << marketDataRequestPtr->DATS_SourceUser() << std::endl; - for ( int symbol_index = 0; symbol_indexc_NoRelatedSym.length(); ++symbol_index ) + for ( int symbol_index = 0; symbol_indexc_NoRelatedSym().size(); ++symbol_index ) { - std::cout << "Symbol to send full snapshot : " << marketDataRequestPtr->c_NoRelatedSym[symbol_index].Symbol.in() << std::endl; + std::cout << "Symbol to send full snapshot : " << marketDataRequestPtr->c_NoRelatedSym()[symbol_index].Symbol() << std::endl; DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh marketDataSnapshotFullRefresh; - marketDataSnapshotFullRefresh.m_Header.BeginString = marketDataRequestPtr->m_Header.BeginString; - marketDataSnapshotFullRefresh.m_Header.TargetCompID = marketDataRequestPtr->m_Header.SenderCompID; - marketDataSnapshotFullRefresh.m_Header.SenderCompID = marketDataRequestPtr->m_Header.TargetCompID; - marketDataSnapshotFullRefresh.m_Header.TargetSubID = marketDataRequestPtr->m_Header.SenderSubID; - marketDataSnapshotFullRefresh.m_Header.MsgType = CORBA::string_dup("W"); - + marketDataSnapshotFullRefresh.fix_header().BeginString(marketDataRequestPtr->fix_header().BeginString()); + marketDataSnapshotFullRefresh.fix_header().MsgType("W"); + + marketDataSnapshotFullRefresh.DATS_Source(marketDataRequestPtr->DATS_Destination()); + marketDataSnapshotFullRefresh.DATS_Destination(marketDataRequestPtr->DATS_Source()); + marketDataSnapshotFullRefresh.DATS_DestinationUser(marketDataRequestPtr->DATS_SourceUser()); + if ( populateMarketDataSnapshotFullRefresh( DistributedATS::Instrument( - marketDataRequestPtr->c_NoRelatedSym[symbol_index].SecurityExchange.in(), - marketDataRequestPtr->c_NoRelatedSym[symbol_index].Symbol.in() ), marketDataSnapshotFullRefresh ) ) + marketDataRequestPtr->c_NoRelatedSym()[symbol_index].SecurityExchange(), + marketDataRequestPtr->c_NoRelatedSym()[symbol_index].Symbol() ), marketDataSnapshotFullRefresh ) ) { - std::cout << "Publishing Full Market Data Snapshot : " << marketDataSnapshotFullRefresh.Symbol << std::endl; - int ret = _market_data_shapshot_full_refresh_dw->write(marketDataSnapshotFullRefresh, NULL); + std::cout << "Publishing Full Market Data Snapshot : " << marketDataSnapshotFullRefresh.Symbol() << std::endl; + int ret = _market_data_shapshot_full_refresh_dw->write(&marketDataSnapshotFullRefresh); - if (ret != DDS::RETCODE_OK) - { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: Market Data Snapshot Data Write returned %d.\n"), ret)); + if (!ret) { + LOG4CXX_ERROR(logger, "Market Data Snapshot Data Write returned : " << ret ); } + } @@ -185,50 +194,56 @@ bool MarketDataService::processMarketDataRequest( DistributedATS_MarketDataReque return true; } -int MarketDataService::svc (void) +int MarketDataService::service (void) { - while(1) - { - ACE_Message_Block* messageBlock = 0; - - ACE_Time_Value interval (0, 250000); + + while(_is_running) + { + + std::shared_ptr market_data_request; - if ( this->getq (messageBlock, &interval) > -1 ) - { - DistributedATS_MarketDataRequest::MarketDataRequest* marketDataRequestPtr = (DistributedATS_MarketDataRequest::MarketDataRequest*)messageBlock->rd_ptr(); - processMarketDataRequest(marketDataRequestPtr); - messageBlock->release(); - } else { - ACE_OS::sleep(interval); - } - } + if ( _markat_data_request_queue_ptr->pop( market_data_request ) ) + { + processMarketDataRequest(market_data_request); + } else { + std::this_thread::sleep_for(std::chrono::duration(1000)); + } + }; } bool MarketDataService::populateMarketDataSnapshotFullRefresh( const Instrument& instrument, DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh& marketDataSnapshotFullRefresh ) const { - marketDataSnapshotFullRefresh.Symbol = CORBA::string_dup( instrument.symbol.c_str() ); - marketDataSnapshotFullRefresh.SecurityExchange = CORBA::string_dup( instrument.marketName.c_str() ); + marketDataSnapshotFullRefresh.Symbol( instrument.symbol ); + marketDataSnapshotFullRefresh.SecurityExchange( instrument.marketName ); auto mdEntryList = _incrementalRefreshMapPtr->find( instrument ); if ( mdEntryList == _incrementalRefreshMapPtr->end() ) return false; - marketDataSnapshotFullRefresh.c_NoMDEntries.length( (int)mdEntryList->second.size()); + marketDataSnapshotFullRefresh.c_NoMDEntries().resize( mdEntryList->second.size()); auto md_entry_index = 0; for ( const auto& mdEntry : mdEntryList->second ) { - marketDataSnapshotFullRefresh.c_NoMDEntries[md_entry_index].MDEntryType = mdEntry.MDEntryType; - marketDataSnapshotFullRefresh.c_NoMDEntries[md_entry_index].MDEntryPx = mdEntry.MDEntryPx; - marketDataSnapshotFullRefresh.c_NoMDEntries[md_entry_index].MDEntrySize = mdEntry.MDEntrySize; + marketDataSnapshotFullRefresh.c_NoMDEntries()[md_entry_index].MDEntryType(mdEntry.MDEntryType()); + marketDataSnapshotFullRefresh.c_NoMDEntries()[md_entry_index].MDEntryPx(mdEntry.MDEntryPx()); + marketDataSnapshotFullRefresh.c_NoMDEntries()[md_entry_index].MDEntrySize(mdEntry.MDEntrySize()); + marketDataSnapshotFullRefresh.c_NoMDEntries()[md_entry_index].TimeInForce(0); md_entry_index++; } + + + LoggerHelper::log_debug< + std::stringstream, MarketDataSnapshotFullRefreshLogger, + DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh> + (logger, marketDataSnapshotFullRefresh, "MarketDataSnapshotFullRefresh"); return true; } + } /* namespace DistributedATS */ diff --git a/DataService/src/MarketDataService.h b/DataService/src/MarketDataService.h index 3665c20..9943e3f 100644 --- a/DataService/src/MarketDataService.h +++ b/DataService/src/MarketDataService.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,18 +25,18 @@ SOFTWARE. */ -#ifndef MARKETDATASERVICE_H_ -#define MARKETDATASERVICE_H_ +#pragma once #include #include #include - -#include -#include +#include #include "MarketDataRequestDataReaderListenerImpl.h" +#include +#include + #include "RefDataService.h" #include "SQLiteConnection.hpp" @@ -48,37 +48,53 @@ namespace DistributedATS { using IncrementalRefreshMap = std::map>; using IncrementalRefreshMapPtr = std::shared_ptr; -class MarketDataService : public ACE_Task +class MarketDataService { public: - MarketDataService( std::shared_ptr basicDomainParticipantPtr, - const FIX::DatabaseConnectionID& dbConnectionID, - ACE_Thread_Manager *thr_mgr); + MarketDataService( std::shared_ptr, + const FIX::DatabaseConnectionID& dbConnectionID); virtual ~MarketDataService(); void initialize(); - void createMarketDataRequestListener( const std::string& data_service_filter_expression ); + void createMarketDataRequestListener(); void createMarketDataIncrementalRefreshListener(); void createMarketDataFullRefreshDataWriter(); - bool processMarketDataRequest( DistributedATS_MarketDataRequest::MarketDataRequest* marketDataRequestPtr ); + bool processMarketDataRequest( const MarketDataRequestPtr& marketDataRequestPtr ); bool populateMarketDataSnapshotFullRefresh( const Instrument&, DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh& ) const; - virtual int svc (void); + int service (void); private: IncrementalRefreshMapPtr _incrementalRefreshMapPtr; std::shared_ptr m_sqliteConnection; - std::shared_ptr m_basicDomainParticipantPtr; + std::shared_ptr _basic_domain_participant_ptr; + + distributed_ats_utils::data_writer_ptr _market_data_shapshot_full_refresh_dw; + + distributed_ats_utils::topic_tuple_ptr _market_data_request_topic_tuple; + distributed_ats_utils::data_reader_tuple_ptr _market_data_request_data_reader_tuple; + // distributed_ats_utils::content_filtered_topic_ptr _cft_market_data_request; + + distributed_ats_utils::topic_tuple_ptr _market_data_incremental_refresh_topic_tuple; + distributed_ats_utils::data_reader_tuple_ptr _market_data_incremental_refresh_data_reader_tuple; + + distributed_ats_utils::topic_tuple_ptr _market_data_snapshot_full_refresh_topic_tuple; - DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefreshDataWriter_var _market_data_shapshot_full_refresh_dw; + //distributed_ats_utils::data_reader_listener_ptr _drk_market_data_incrementa_refresh; + + MarketDataRequestQueuePtr _markat_data_request_queue_ptr; + + //distributed_ats_utils::data_reader_listener_ptr _drl_market_data_request_ptr; + + std::thread _service_thread; + + std::atomic _is_running; }; } /* namespace DistributedATS */ - -#endif /* MARKETDATASERVICE_H_ */ diff --git a/DataService/src/MassOrderStatusRequestDataReaderListenerImpl.cpp b/DataService/src/MassOrderStatusRequestDataReaderListenerImpl.cpp deleted file mode 100644 index 8e35c5b..0000000 --- a/DataService/src/MassOrderStatusRequestDataReaderListenerImpl.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - Copyright (C) 2021 Mike Kipnis - - This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies - the process of having multiple FIX gateways communicating with multiple - matching engines in realtime. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ - -#include "MassOrderStatusRequestDataReaderListenerImpl.h" - -#include - -#include - -namespace DistributedATS { - -MassOrderStatusRequestDataReaderListenerImpl::MassOrderStatusRequestDataReaderListenerImpl( - ACE_Message_Queue* orderMassStatusRequestQueue -) -: _orderMassStatusRequestQueue ( orderMassStatusRequestQueue ) -{ - // TODO Auto-generated constructor stub - -} - -MassOrderStatusRequestDataReaderListenerImpl::~MassOrderStatusRequestDataReaderListenerImpl() { - // TODO Auto-generated destructor stub -} - -void MassOrderStatusRequestDataReaderListenerImpl::on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException) -{ - try - { - DistributedATS_OrderMassStatusRequest::OrderMassStatusRequestDataReader_var - order_mass_status_request_dr = DistributedATS_OrderMassStatusRequest::OrderMassStatusRequestDataReader::_narrow(reader); - - if (CORBA::is_nil ( order_mass_status_request_dr.in() ) ) - { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) MassOrderStatusRequestDataReaderListenerImpl::on_data_available: _narrow failed.\n"))); - - ACE_OS::exit(1); - } - - while( true ) - { - DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest orderMassStatusRequest; - DDS::SampleInfo si ; - DDS::ReturnCode_t status = order_mass_status_request_dr->take_next_sample( orderMassStatusRequest, si ); - - if (status == DDS::RETCODE_OK) - { - if ( !si.valid_data ) - continue; - - std::stringstream ss; - OrderMassStatusRequestLogger::log(ss, orderMassStatusRequest); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) OrderMassStatusRequest : %s\n"), ss.str().c_str())); - - DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest* orderMassStatusRequestPtr = - new DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest( orderMassStatusRequest ); - - ACE_Message_Block* msg = new ACE_Message_Block((char*)orderMassStatusRequestPtr, sizeof( DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest )); - _orderMassStatusRequestQueue->enqueue_tail(msg); - - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) Read OrderMassStatusRequest: %d\n"), status)); - } - } - - } catch (CORBA::Exception& e) { - - std::stringstream ss; - ss << "Exception caught in read:" << std::endl << e << std::endl; - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) DistributedATS_OrderMassStatusRequest %s.\n"), ss.str().c_str())); - - ACE_OS::exit(1); - } -} - -} /* namespace DistributedATS */ diff --git a/DataService/src/MassOrderStatusRequestDataReaderListenerImpl.h b/DataService/src/MassOrderStatusRequestDataReaderListenerImpl.h deleted file mode 100644 index 17d7d4f..0000000 --- a/DataService/src/MassOrderStatusRequestDataReaderListenerImpl.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - Copyright (C) 2021 Mike Kipnis - - This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies - the process of having multiple FIX gateways communicating with multiple - matching engines in realtime. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ - -#ifndef MASSORDERSTATUSREQUESTDATAREADERLISTENERIMPL_H_ -#define MASSORDERSTATUSREQUESTDATAREADERLISTENERIMPL_H_ - -#include - -#include "MassOrderStatusService.h" - -#include - -namespace DistributedATS { - -class MassOrderStatusRequestDataReaderListenerImpl : -public virtual OpenDDS::DCPS::LocalObject -{ -public: - MassOrderStatusRequestDataReaderListenerImpl( ACE_Message_Queue* orderMassStatusRequestQueue ); - virtual ~MassOrderStatusRequestDataReaderListenerImpl(); - - virtual void on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException); - - virtual void on_requested_deadline_missed ( DDS::DataReader_ptr reader, const DDS::RequestedDeadlineMissedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_requested_incompatible_qos ( DDS::DataReader_ptr reader, const DDS::RequestedIncompatibleQosStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_liveliness_changed ( DDS::DataReader_ptr reader, const DDS::LivelinessChangedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_subscription_matched ( DDS::DataReader_ptr reader, const DDS::SubscriptionMatchedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_sample_rejected( DDS::DataReader_ptr reader, const DDS::SampleRejectedStatus& status) - throw (CORBA::SystemException) {}; - - virtual void on_sample_lost( DDS::DataReader_ptr reader, const DDS::SampleLostStatus& status) - throw (CORBA::SystemException) {}; -private: - - ACE_Message_Queue* _orderMassStatusRequestQueue; - -}; - -} /* namespace DistributedATS */ - -#endif /* MASSORDERSTATUSREQUESTDATAREADERLISTENERIMPL_H_ */ diff --git a/DataService/src/MassOrderStatusService.cpp b/DataService/src/MassOrderStatusService.cpp deleted file mode 100644 index 2a9a62a..0000000 --- a/DataService/src/MassOrderStatusService.cpp +++ /dev/null @@ -1,165 +0,0 @@ -/* - Copyright (C) 2021 Mike Kipnis - - This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies - the process of having multiple FIX gateways communicating with multiple - matching engines in realtime. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ - -#include "MassOrderStatusService.h" -#include -#include "ExecutionReportDataReaderListenerImpl.h" -#include "MassOrderStatusRequestDataReaderListenerImpl.h" - -#include - -namespace DistributedATS { - -MassOrderStatusService::MassOrderStatusService( std::shared_ptr - basicDomainParticipantPtr, - ACE_Thread_Manager *thr_mgr ) : ACE_Task (thr_mgr) -{ - // TODO Auto-generated constructor stub - - m_basicDomainParticipantPtr = basicDomainParticipantPtr; - - m_executionReports = std::make_shared( ExecutionReports() ); - -} - -MassOrderStatusService::~MassOrderStatusService() { - // TODO Auto-generated destructor stub -} - -void MassOrderStatusService::createOrderMassStatusRequestListener( const std::string& data_service_filter_expression ) -{ - DDS::Topic_var order_mass_status_request_topic = m_basicDomainParticipantPtr->createTopicAndRegisterType - < DistributedATS_OrderMassStatusRequest::OrderMassStatusRequestTypeSupport_var, - DistributedATS_OrderMassStatusRequest::OrderMassStatusRequestTypeSupportImpl > - ( ORDER_MASS_STATUS_REQUEST_TOPIC_NAME ); - - std::string data_service_filter_expression_exec_report = - data_service_filter_expression + " and m_Header.SenderCompID <> 'DATA_SERVICE'"; - - - DDS::ContentFilteredTopic_ptr cft_order_mass_status_request = - m_basicDomainParticipantPtr->getDomainParticipant()->create_contentfilteredtopic( "MASS_STATUS_REQUEST_FILTER", order_mass_status_request_topic, data_service_filter_expression.c_str(), DDS::StringSeq()); ; - - DDS::DataReaderListener_var orderMassStatusRequestDataListener(new DistributedATS::MassOrderStatusRequestDataReaderListenerImpl( msg_queue() ) ); - m_basicDomainParticipantPtr->createDataReaderListener( cft_order_mass_status_request, orderMassStatusRequestDataListener ); - -} - -void MassOrderStatusService::createExecutionReportListener( const std::string& data_service_filter_expression ) -{ - DDS::Topic_var execution_report_topic = m_basicDomainParticipantPtr->createTopicAndRegisterType - < DistributedATS_ExecutionReport::ExecutionReportTypeSupport_var, DistributedATS_ExecutionReport::ExecutionReportTypeSupportImpl > - ( EXECUTION_REPORT_TOPIC_NAME ); - - std::string data_service_filter_expression_exec_report = - data_service_filter_expression + " and m_Header.SenderCompID <> 'DATA_SERVICE'"; - - // Filter out executions report published by it self, incase of mass order status report - DDS::ContentFilteredTopic_ptr cft_execution_report = - m_basicDomainParticipantPtr->getDomainParticipant()->create_contentfilteredtopic( "EXECUTION_REPORT_FILTER", execution_report_topic, - data_service_filter_expression_exec_report.c_str(), - DDS::StringSeq()); - - - m_execution_report_dw = m_basicDomainParticipantPtr->createDataWriter< DistributedATS_ExecutionReport::ExecutionReportDataWriter_var, DistributedATS_ExecutionReport::ExecutionReportDataWriter > ( execution_report_topic ); - - DDS::DataReaderListener_var executionReportDataListener(new DistributedATS::ExecutionReportDataReaderListenerImpl(m_executionReports)); - - m_basicDomainParticipantPtr->createDataReaderListener( cft_execution_report, executionReportDataListener ); -} - -int MassOrderStatusService::svc (void) -{ - while(1) - { - ACE_Message_Block* messageBlock = 0; - - ACE_Time_Value interval (0, 1000); - - if ( this->getq (messageBlock, &interval) == 0 ) - { - DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest* orderMassStatusRequestPtr = (DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest*)messageBlock->rd_ptr(); - - processMassOrderStatusServiceRequest(orderMassStatusRequestPtr); - - messageBlock->release(); - } else { - ACE_OS::sleep(interval); - } - } -} - - -OrderToExecutionReportMapPtr MassOrderStatusService::getOrderToExecutionReportMap( std::string& senderCompId ) -{ - auto orderIdToExecutionReportMap = m_executionReports->find(senderCompId); - - if ( orderIdToExecutionReportMap != m_executionReports->end() ) - return orderIdToExecutionReportMap->second; - - return OrderToExecutionReportMapPtr(); -} - -bool MassOrderStatusService::processMassOrderStatusServiceRequest( DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest* orderMassStatusRequestPtr ) -{ - - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) Received Mass Order Status Request : %s %s\n"), - orderMassStatusRequestPtr->m_Header.SenderCompID.in(), - orderMassStatusRequestPtr->m_Header.TargetCompID.in())); - - std::string username = orderMassStatusRequestPtr->m_Header.SenderSubID.in(); - - OrderToExecutionReportMapPtr orderToExecutionReportMapPtr = - getOrderToExecutionReportMap( username ); - - if ( orderToExecutionReportMapPtr != NULL ) - { - for ( auto& orderToExecReportListPtr : *orderToExecutionReportMapPtr ) - { - std::cout << "Need to publish execution report for the following order id : " << orderToExecReportListPtr.first << std::endl; - for ( auto& execReport : *(orderToExecReportListPtr.second) ) - { - execReport->m_Header.SenderCompID = orderMassStatusRequestPtr->m_Header.TargetCompID; - execReport->m_Header.TargetCompID = orderMassStatusRequestPtr->m_Header.SenderCompID; - execReport->m_Header.TargetSubID = CORBA::string_dup(username.c_str()); - - int ret = m_execution_report_dw->write( *(execReport), NULL ); - - if (ret != DDS::RETCODE_OK) - { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: MassOrderStatusRequestDataReader/Execution Report write returned %d.\n"), ret)); - return false; - } - } - } - } - - return true; -} - - -} /* namespace DistributedATS */ diff --git a/DataService/src/OrderMassStatusRequestDataReaderListenerImpl.cpp b/DataService/src/OrderMassStatusRequestDataReaderListenerImpl.cpp new file mode 100644 index 0000000..4d6cc5e --- /dev/null +++ b/DataService/src/OrderMassStatusRequestDataReaderListenerImpl.cpp @@ -0,0 +1,69 @@ +/* + Copyright (C) 2021 Mike Kipnis + + This file is part of DistributedATS, a free-software/open-source project + that integrates QuickFIX and LiquiBook over DDS. This project simplifies + the process of having multiple FIX gateways communicating with multiple + matching engines in realtime. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ + +#include "OrderMassStatusRequestDataReaderListenerImpl.h" +#include +#include + +namespace DistributedATS { + +OrderMassStatusRequestDataReaderListenerImpl::OrderMassStatusRequestDataReaderListenerImpl( + OrderMassStatusRequestQueuePtr orderMassStatusRequestQueuePtr +) +: _orderMassStatusRequestQueuePtr ( orderMassStatusRequestQueuePtr ) +{ + // TODO Auto-generated constructor stub + +} + +OrderMassStatusRequestDataReaderListenerImpl::~OrderMassStatusRequestDataReaderListenerImpl() { + // TODO Auto-generated destructor stub +} + +void OrderMassStatusRequestDataReaderListenerImpl::on_data_available( eprosima::fastdds::dds::DataReader* reader) +{ + + DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest orderMassStatusRequest; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&orderMassStatusRequest, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + + std::stringstream ss; + OrderMassStatusRequestLogger::log(ss, orderMassStatusRequest); + LOG4CXX_INFO(logger, "OrderMassStatusRequest :" << ss.str()); + + auto orderMassStatusRequestPtr = std::make_shared( orderMassStatusRequest ); + _orderMassStatusRequestQueuePtr->push(orderMassStatusRequestPtr); + + } + } +} + +} /* namespace DistributedATS */ diff --git a/DataService/src/OrderMassStatusRequestDataReaderListenerImpl.h b/DataService/src/OrderMassStatusRequestDataReaderListenerImpl.h new file mode 100644 index 0000000..b2ff5aa --- /dev/null +++ b/DataService/src/OrderMassStatusRequestDataReaderListenerImpl.h @@ -0,0 +1,57 @@ +/* + Copyright (C) 2021 Mike Kipnis + + This file is part of DistributedATS, a free-software/open-source project + that integrates QuickFIX and LiquiBook over DDS. This project simplifies + the process of having multiple FIX gateways communicating with multiple + matching engines in realtime. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ + +#pragma once + +#include +#include +#include +#include + +namespace DistributedATS { + + +using OrderMassStatusRequestPtr = std::shared_ptr; +typedef boost::lockfree::spsc_queue> OrderMassStatusRequestQueue; +typedef std::shared_ptr OrderMassStatusRequestQueuePtr; + +class OrderMassStatusRequestDataReaderListenerImpl : public eprosima::fastdds::dds::DataReaderListener +{ +public: + OrderMassStatusRequestDataReaderListenerImpl( OrderMassStatusRequestQueuePtr orderMassStatusRequestQueuePtr ); + ~OrderMassStatusRequestDataReaderListenerImpl() override; + + void on_data_available( eprosima::fastdds::dds::DataReader* reader ) override; + +private: + + OrderMassStatusRequestQueuePtr _orderMassStatusRequestQueuePtr; + +}; + +} /* namespace DistributedATS */ + diff --git a/DataService/src/OrderMassStatusRequestService.cpp b/DataService/src/OrderMassStatusRequestService.cpp new file mode 100644 index 0000000..ce57941 --- /dev/null +++ b/DataService/src/OrderMassStatusRequestService.cpp @@ -0,0 +1,163 @@ +/* + Copyright (C) 2021 Mike Kipnis + + This file is part of DistributedATS, a free-software/open-source project + that integrates QuickFIX and LiquiBook over DDS. This project simplifies + the process of having multiple FIX gateways communicating with multiple + matching engines in realtime. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ + +#include "OrderMassStatusRequestService.h" +#include +#include +#include "ExecutionReportDataReaderListenerImpl.h" +#include + +#include +#include + +namespace DistributedATS { + +OrderMassStatusRequestService::OrderMassStatusRequestService( std::shared_ptr + basic_domain_participant_ptr ) +{ + _basic_domain_participant_ptr = basic_domain_participant_ptr; + m_executionReports = std::make_shared( ExecutionReports() ); + _orderMassStatusRequestQueuePtr = std::make_shared(); + + std::atomic_init(&_is_running, true); + _service_thread = std::thread(&OrderMassStatusRequestService::service, this); +} + +OrderMassStatusRequestService::~OrderMassStatusRequestService() +{ + std::atomic_init(&_is_running, false); + _service_thread.join(); +} + +void OrderMassStatusRequestService::createOrderMassStatusRequestListener() +{ + DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest orderMassStatusRequest; + + _order_mass_status_request_topic_tuple = _basic_domain_participant_ptr->make_topic< + DistributedATS_OrderMassStatusRequest::OrderMassStatusRequestPubSubType, + DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest> + ( ORDER_MASS_STATUS_REQUEST_TOPIC_NAME ); + + std::string data_service_filter_expression_exec_report = "DATS_Destination = %0 and DATS_DestinationUser = %1"; + + + _order_mass_status_request_data_reader_tuple = + _basic_domain_participant_ptr->make_data_reader_tuple(_order_mass_status_request_topic_tuple, + new DistributedATS::OrderMassStatusRequestDataReaderListenerImpl( _orderMassStatusRequestQueuePtr ), "MASS_STATUS_REQUEST_FILTER", data_service_filter_expression_exec_report, + { "DATA_SERVICE", _basic_domain_participant_ptr->get_participant_name()}); + + +} + +void OrderMassStatusRequestService::createExecutionReportListener() +{ + DistributedATS_ExecutionReport::ExecutionReport executionReport; + + _execution_report_topic_tuple = _basic_domain_participant_ptr->make_topic + < DistributedATS_ExecutionReport::ExecutionReportPubSubType, + DistributedATS_ExecutionReport::ExecutionReport> + ( EXECUTION_REPORT_TOPIC_NAME ); + + std::string data_service_filter_expression_exec_report = "DATS_Source = %0 and DATS_SourceUser = %1"; + + _execution_report_data_reader_tuple = _basic_domain_participant_ptr->make_data_reader_tuple(_execution_report_topic_tuple, + new DistributedATS::ExecutionReportDataReaderListenerImpl(m_executionReports), + "EXECUTION_REPORT_FILTER", data_service_filter_expression_exec_report, + { "MATCHING_ENGINE", _basic_domain_participant_ptr->get_participant_name()}); + + + _execution_report_dw = _basic_domain_participant_ptr->make_data_writer( _execution_report_topic_tuple ); + +} + +int OrderMassStatusRequestService::service() +{ + + while(_is_running) + { + OrderMassStatusRequestPtr order_mass_status_request; + + if ( _orderMassStatusRequestQueuePtr->pop( order_mass_status_request ) ) + { + processMassOrderStatusServiceRequest(order_mass_status_request); + + } else { + std::this_thread::sleep_for(std::chrono::duration(1000)); + } + } + + return 0; + +} + + +OrderToExecutionReportMapPtr OrderMassStatusRequestService::getOrderToExecutionReportMap( std::string& senderCompId ) +{ + auto orderIdToExecutionReportMap = m_executionReports->find(senderCompId); + + if ( orderIdToExecutionReportMap != m_executionReports->end() ) + return orderIdToExecutionReportMap->second; + + return OrderToExecutionReportMapPtr(); +} + +bool OrderMassStatusRequestService::processMassOrderStatusServiceRequest( OrderMassStatusRequestPtr& orderMassStatusRequestPtr ) +{ + + LOG4CXX_INFO(logger, "Received Mass Order Status Request : [" << orderMassStatusRequestPtr->DATS_Source() << ":" << orderMassStatusRequestPtr->DATS_Destination() << "]"); + + auto username = orderMassStatusRequestPtr->DATS_SourceUser(); + + OrderToExecutionReportMapPtr orderToExecutionReportMapPtr = + getOrderToExecutionReportMap( username ); + + if ( orderToExecutionReportMapPtr ) + { + for ( auto& orderToExecReportListPtr : *orderToExecutionReportMapPtr ) + { + std::cout << "Need to publish execution report for the following order id : " << orderToExecReportListPtr.first << std::endl; + for ( auto& execReport : *(orderToExecReportListPtr.second) ) + { + execReport->DATS_Source(orderMassStatusRequestPtr->DATS_Destination()); + execReport->DATS_Destination(orderMassStatusRequestPtr->DATS_Source()); + execReport->DATS_DestinationUser(username); + + int ret = _execution_report_dw->write( execReport.get() ); + + if (!ret) { + LOG4CXX_ERROR(logger, "MassOrderStatusRequestDataReader/Execution Report write returned :" << ret); + } + + } + } + } + + return true; +} + + +} /* namespace DistributedATS */ diff --git a/DataService/src/MassOrderStatusService.h b/DataService/src/OrderMassStatusRequestService.h similarity index 55% rename from DataService/src/MassOrderStatusService.h rename to DataService/src/OrderMassStatusRequestService.h index 0866a11..63c1644 100644 --- a/DataService/src/MassOrderStatusService.h +++ b/DataService/src/OrderMassStatusRequestService.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,16 +26,18 @@ */ -#ifndef MASSORDERSTATUSSERVICE_H_ -#define MASSORDERSTATUSSERVICE_H_ +#pragma once #include #include -#include -#include +#include #include +#include "OrderMassStatusRequestDataReaderListenerImpl.h" + +#include + typedef std::shared_ptr ExecutionReportPtr; typedef std::list ExecutionReportPtrList; typedef std::shared_ptr ExecutionReportPtrListPtr; @@ -44,32 +46,45 @@ typedef std::shared_ptr OrderToExecutionReportMapPtr; typedef std::map ExecutionReports; typedef std::shared_ptr ExecutionReportsPtr; + namespace DistributedATS { -class MassOrderStatusService : public ACE_Task +class OrderMassStatusRequestService { public: - MassOrderStatusService( std::shared_ptr basicDomainParticipantPtr, - ACE_Thread_Manager *thr_mgr ); - virtual ~MassOrderStatusService(); + OrderMassStatusRequestService( std::shared_ptr ); + virtual ~OrderMassStatusRequestService(); + + void createOrderMassStatusRequestListener(); + void createExecutionReportListener(); + + OrderToExecutionReportMapPtr getOrderToExecutionReportMap( std::string& senderCompId ); + bool processMassOrderStatusServiceRequest( OrderMassStatusRequestPtr& orderMassStatusRequestPtr ); + + int service(); + +private: + ExecutionReportsPtr m_executionReports; - void createOrderMassStatusRequestListener( const std::string& data_service_filter_expression ); - void createExecutionReportListener( const std::string& data_service_filter_expression ); + distributed_ats_utils::data_writer_ptr _execution_report_dw; - OrderToExecutionReportMapPtr getOrderToExecutionReportMap( std::string& senderCompId ); - bool processMassOrderStatusServiceRequest( DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest* orderMassStatusRequestPtr ); + distributed_ats_utils::topic_tuple_ptr _execution_report_topic_tuple; + distributed_ats_utils::data_reader_tuple_ptr _execution_report_data_reader_tuple; - virtual int svc (void); + + distributed_ats_utils::topic_tuple_ptr _order_mass_status_request_topic_tuple; + distributed_ats_utils::data_reader_tuple_ptr _order_mass_status_request_data_reader_tuple; -private: - ExecutionReportsPtr m_executionReports; - DistributedATS_ExecutionReport::ExecutionReportDataWriter_var m_execution_report_dw; + std::shared_ptr _basic_domain_participant_ptr; + + OrderMassStatusRequestQueuePtr _orderMassStatusRequestQueuePtr; - std::shared_ptr m_basicDomainParticipantPtr; + std::thread _service_thread; + + std::atomic _is_running; + }; } /* namespace DistributedATS */ - -#endif /* MASSORDERSTATUSSERVICE_H_ */ diff --git a/DataService/src/RefDataService.cpp b/DataService/src/RefDataService.cpp index 4fc1f68..e85fc3b 100644 --- a/DataService/src/RefDataService.cpp +++ b/DataService/src/RefDataService.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,35 +26,47 @@ */ #include "RefDataService.h" +#include -#include -#include +#include +#include +#include +#include +#include #include "SecurityListRequestDataReaderListenerImpl.hpp" +#include +#include -#include +#include +#include -#include - namespace DistributedATS { -RefDataService::RefDataService(std::shared_ptr basicDomainParticipantPtr, - const FIX::DatabaseConnectionID& dbConnectionID, - ACE_Thread_Manager *thr_mgr ) : ACE_Task (thr_mgr) +RefDataService::RefDataService( + std::shared_ptr basic_domain_participant_ptr, + const FIX::DatabaseConnectionID& dbConnectionID) { - m_basicDomainParticipantPtr = basicDomainParticipantPtr; + _basic_domain_participant_ptr = basic_domain_participant_ptr; m_sqliteConnection = std::make_shared(dbConnectionID); m_pInstrumentMapPtr = std::make_shared< InstrumentMap >(); m_pUserInstruments = std::make_shared< UserInstrumentList >(); + + + _security_list_queue_ptr = std::make_shared(); initialize(); + }; RefDataService::~RefDataService() { + + std::atomic_init(&_is_running, false); + _service_thread.join(); }; @@ -62,11 +74,10 @@ void RefDataService::initialize() { try { - //populateInstrumentIdToRefDataMap(); populateUserGroupInstrumentMap(); } catch ( ... ) { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) MAJOR: Exception when populating Reference Data\n"))); + LOG4CXX_ERROR(logger, "Exception when populating Reference Data"); } }; @@ -83,8 +94,8 @@ void RefDataService::populateUserGroupInstrumentMap() " m.market_name=im_map.market_name and " \ " im_map.market_name=ugm_map.market_name"); - ACE_DEBUG ((LM_INFO, ACE_TEXT("(%P|%t|%D) Populating security list\n"))); - + LOG4CXX_INFO(logger, "Populating security list"); + m_sqliteConnection->execute(sqliteQuery); for ( int instrument_index =0; instrument_indexemplace( symbol, std::make_shared( market, symbol, properties ) ).first; - // find should always find something for a given instrument id because of outer join when populating m_instrumentIdToRefDataMap - // instrumentPtr->second->ref_data = m_instrumentIdToRefDataMap.find(symbol)->second; } auto instrumentList = m_pUserInstruments->find( username ); @@ -115,138 +124,106 @@ void RefDataService::populateUserGroupInstrumentMap() } } -/* -void RefDataService::populateInstrumentIdToRefDataMap() -{ - FIX::MySQLQuery mySQLQuery("select i.instrument_id, case when ird.ref_data is null then '' else ird.ref_data end from instrument as i LEFT OUTER JOIN instrument_ref_data ird ON i.instrument_id = ird.instrument_id"); - - ACE_DEBUG ((LM_INFO, ACE_TEXT("(%P|%t|%D) Populating instrument reference data\n"))); - - m_pMySqlConnectionPtr->execute(mySQLQuery); - - for ( int instrument_index =0; instrument_index(ref_data) ); - } -}*/ -void RefDataService::createSecurityListRequestListener( const std::string& data_service_filter_expression ) +void RefDataService::createSecurityListRequestListener() { - DDS::Topic_var security_list_request_topic = m_basicDomainParticipantPtr->createTopicAndRegisterType - < DistributedATS_SecurityListRequest::SecurityListRequestTypeSupport_var, - DistributedATS_SecurityListRequest::SecurityListRequestTypeSupportImpl > - ( SECURITY_LIST_REQUEST_TOPIC_NAME ); - - - DDS::ContentFilteredTopic_ptr cft_security_list_request = - m_basicDomainParticipantPtr->getDomainParticipant()->create_contentfilteredtopic( "SECURITY_LIST_REQUEST_FILTER", security_list_request_topic, - data_service_filter_expression.c_str(), - DDS::StringSeq()); - - DDS::DataReaderListener_var securityListRequestDataListener( - new SecurityListRequestDataReaderListenerImpl( msg_queue() ) ); - - m_basicDomainParticipantPtr->createDataReaderListener ( cft_security_list_request, securityListRequestDataListener ); + _security_list_request_topic_tuple = _basic_domain_participant_ptr->make_topic + < DistributedATS_SecurityListRequest::SecurityListRequestPubSubType, + DistributedATS_SecurityListRequest::SecurityListRequest> + ( SECURITY_LIST_REQUEST_TOPIC_NAME ); + + _security_list_request_data_reader_tuple = _basic_domain_participant_ptr->make_data_reader_tuple(_security_list_request_topic_tuple, + new SecurityListRequestDataReaderListenerImpl( _security_list_queue_ptr ),"SECURITY_LIST_REQUEST_FILTER", "DATS_DestinationUser = %0",{_basic_domain_participant_ptr->get_participant_name()}); + + std::atomic_init(&_is_running, true); + + _service_thread = std::thread(&RefDataService::service, this); } void RefDataService::createSecurityListDataWriter() { - - DDS::Topic_var security_list_topic = m_basicDomainParticipantPtr->createTopicAndRegisterType - < DistributedATS_SecurityList::SecurityListTypeSupport_var, - DistributedATS_SecurityList::SecurityListTypeSupportImpl > + _security_list_topic_tuple = _basic_domain_participant_ptr->make_topic + < DistributedATS_SecurityList::SecurityListPubSubType, + DistributedATS_SecurityList::SecurityList> ( SECURITY_LIST_TOPIC_NAME ); - - - m_security_list_dw = m_basicDomainParticipantPtr->createDataWriter< DistributedATS_SecurityList::SecurityListDataWriter_var, - DistributedATS_SecurityList::SecurityListDataWriter > ( security_list_topic ); - - DDS::DataReaderListener_var securityListRequestDataListener( - new SecurityListRequestDataReaderListenerImpl( msg_queue() ) ); - + _security_list_dw = _basic_domain_participant_ptr->make_data_writer( _security_list_topic_tuple ); } -bool RefDataService::processRefDataRequest( DistributedATS_SecurityListRequest::SecurityListRequest* securityListRequestPtr ) +bool RefDataService::processRefDataRequest( const SecurityListRequestPtr& securityListRequestPtr ) { - - std::cout << "Received Security List Request : " - << " : " << securityListRequestPtr->m_Header.SenderCompID - << ":" << securityListRequestPtr->m_Header.TargetCompID << ":" << securityListRequestPtr->SecurityReqID << std::endl; + LOG4CXX_INFO(logger, "Received Security List Request : " + << ":" << securityListRequestPtr->DATS_Source() + << ":" << securityListRequestPtr->DATS_Destination() << ":" << securityListRequestPtr->SecurityReqID()); auto instrumentListPtr = std::make_shared ( DistributedATS::InstrumentList() ); - std::string username = securityListRequestPtr->m_Header.SenderSubID.in(); + std::string username = securityListRequestPtr->DATS_SourceUser(); if ( username.empty() ) - username = securityListRequestPtr->m_Header.SenderCompID; + username = securityListRequestPtr->DATS_Source(); populateUserInstrumentList( username, instrumentListPtr ); DistributedATS_SecurityList::SecurityList securityList; - securityList.m_Header.MsgType = CORBA::string_dup(FIX::MsgType_SecurityList); - securityList.m_Header.SenderCompID = securityListRequestPtr->m_Header.TargetCompID; - securityList.m_Header.TargetCompID = securityListRequestPtr->m_Header.SenderCompID; - - securityList.m_Header.TargetSubID = securityListRequestPtr->m_Header.SenderSubID; + securityList.fix_header().MsgType(FIX::MsgType_SecurityList); + securityList.DATS_Source(securityListRequestPtr->DATS_Destination()); + securityList.DATS_Destination(securityListRequestPtr->DATS_Source()); + securityList.DATS_DestinationUser(securityListRequestPtr->DATS_SourceUser()); - securityList.SecurityReqID = securityListRequestPtr->SecurityReqID; - securityList.SecurityResponseID = CORBA::string_dup("1"); - securityList.SecurityRequestResult = 0; + securityList.SecurityReqID(securityListRequestPtr->SecurityReqID()); + securityList.SecurityResponseID("1"); + securityList.SecurityRequestResult(0); + + securityList.c_NoRelatedSym().resize( instrumentListPtr->size() ); - securityList.c_NoRelatedSym.length( (int)instrumentListPtr->size() ); + LOG4CXX_INFO(logger, "SecurityList Target : [" << securityList.DATS_Destination() << ":" << + securityList.DATS_Source() << "]"); - std::cout << "Sending to : " << securityList.m_Header.SenderCompID << ":" << securityList.m_Header.TargetCompID << std::endl; int instrument_index = 0; - for ( auto& instrument : *instrumentListPtr ) + for ( const auto& instrument : *instrumentListPtr ) { std::cout << instrument->symbol.c_str() << std::endl; - securityList.c_NoRelatedSym[ instrument_index ].Symbol = CORBA::string_dup(instrument->symbol.c_str()); - securityList.c_NoRelatedSym[ instrument_index ].SecurityExchange = CORBA::string_dup(instrument->marketName.c_str()); - securityList.c_NoRelatedSym[ instrument_index ].Text = CORBA::string_dup( instrument->properties.c_str() ); + securityList.c_NoRelatedSym()[ instrument_index ].Symbol(instrument->symbol); + securityList.c_NoRelatedSym()[ instrument_index ].SecurityExchange (instrument->marketName); + securityList.c_NoRelatedSym()[ instrument_index ].Text( instrument->properties ); instrument_index++; }; - int ret = m_security_list_dw->write(securityList, NULL); + std::stringstream ss; + SecurityListLogger::log(ss, securityList); + LOG4CXX_INFO(logger, "Publishing SecurityList : [" << ss.str() << "]"); + + int ret = _security_list_dw->write(&securityList); - if (ret != DDS::RETCODE_OK) - { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: Security List write returned %d.\n"), ret)); + if (!ret) { + LOG4CXX_ERROR(logger, "Security List write returned :" << ret); } - return true; } -int RefDataService::svc (void) +int RefDataService::service (void) { - while(1) + while(_is_running) { - ACE_Message_Block* messageBlock = 0; - - ACE_Time_Value interval (0, 1000); + SecurityListRequestPtr security_list_ptr; - if ( this->getq (messageBlock, &interval) > -1 ) + if (_security_list_queue_ptr->pop(security_list_ptr)) { - DistributedATS_SecurityListRequest::SecurityListRequest* securityListRequestPtr = (DistributedATS_SecurityListRequest::SecurityListRequest*)messageBlock->rd_ptr(); - processRefDataRequest(securityListRequestPtr); - messageBlock->release(); - } else { - ACE_OS::sleep(interval); + processRefDataRequest(security_list_ptr); } + + std::this_thread::sleep_for(std::chrono::duration(1000)); + }; return 0; diff --git a/DataService/src/RefDataService.h b/DataService/src/RefDataService.h index a69372c..5ef13de 100644 --- a/DataService/src/RefDataService.h +++ b/DataService/src/RefDataService.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,18 +25,9 @@ SOFTWARE. */ -#ifndef REFDATASERVICE_H_ -#define REFDATASERVICE_H_ +#pragma once -#define HAVE_MYSQL - -#include -#include - -#include -#include #include - #include #include @@ -45,12 +36,14 @@ #include -#include - #include #include +#include #include +#include +#include +#include "SecurityListRequestDataReaderListenerImpl.hpp" namespace DistributedATS { @@ -80,7 +73,6 @@ struct Instrument std::string symbol; std::string marketName; // FIX SecurityExchange std::string properties; - //std::shared_ptr ref_data; friend bool operator<( const Instrument& i1, const Instrument& i2 ) { @@ -101,27 +93,22 @@ typedef std::shared_ptr InstrumentListPtr; typedef std::map UserInstrumentList; typedef std::shared_ptr UserInstrumentListPtr; -class RefDataService : public ACE_Task +class RefDataService { - public: - RefDataService( std::shared_ptr basicDomainParticipantPtr, - const FIX::DatabaseConnectionID& dbConnectionID, - ACE_Thread_Manager *thr_mgr); + RefDataService( std::shared_ptr basicDomainParticipantPtr, const FIX::DatabaseConnectionID& dbConnectionID); virtual ~RefDataService(); - void initialize(); - virtual int svc (void); + int service (void); - void createSecurityListRequestListener( const std::string& data_service_filter_expression ); + void createSecurityListRequestListener(); void createSecurityListDataWriter(); - - bool processRefDataRequest( DistributedATS_SecurityListRequest::SecurityListRequest* ); + bool processRefDataRequest( const SecurityListRequestPtr& ); const void populateUserInstrumentList( std::string& username, InstrumentListPtr& instrumentListPtrOut ) const { @@ -132,12 +119,13 @@ class RefDataService : public ACE_Task protected: void populateUserGroupInstrumentMap(); - //void populateInstrumentIdToRefDataMap(); private: std::shared_ptr m_sqliteConnection; - std::shared_ptr m_basicDomainParticipantPtr; + std::shared_ptr _basic_domain_participant_ptr; + + SecurityListRequestQueuePtr _security_list_queue_ptr; // instrument_id to ref_data std::map> m_instrumentIdToRefDataMap; @@ -146,9 +134,15 @@ class RefDataService : public ACE_Task InstrumentMapPtr m_pInstrumentMapPtr; - DistributedATS_SecurityList::SecurityListDataWriter_var m_security_list_dw; + distributed_ats_utils::topic_tuple_ptr _security_list_topic_tuple; + distributed_ats_utils::data_writer_ptr _security_list_dw; + + distributed_ats_utils::topic_tuple_ptr _security_list_request_topic_tuple; + distributed_ats_utils::data_reader_tuple_ptr _security_list_request_data_reader_tuple; + + std::thread _service_thread; + + std::atomic _is_running; }; } /* namespace DistributedATS */ - -#endif /* AUTHSERVICESINGLETON_H_ */ diff --git a/DataService/src/SQLiteConnection.hpp b/DataService/src/SQLiteConnection.hpp index f3b749a..8359dbf 100644 --- a/DataService/src/SQLiteConnection.hpp +++ b/DataService/src/SQLiteConnection.hpp @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,8 +25,7 @@ SOFTWARE. */ -#ifndef SQLiteConnection_hpp -#define SQLiteConnection_hpp +#pragma once #include #include @@ -147,5 +146,3 @@ class SQLiteConnection }; } - -#endif /* SQLiteConnection_hpp */ diff --git a/DataService/src/SecurityListRequestDataReaderListenerImpl.cpp b/DataService/src/SecurityListRequestDataReaderListenerImpl.cpp index 0e1f8bd..fe947e7 100644 --- a/DataService/src/SecurityListRequestDataReaderListenerImpl.cpp +++ b/DataService/src/SecurityListRequestDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -28,63 +28,42 @@ #include #include #include "SecurityListRequestDataReaderListenerImpl.hpp" -#include -#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include -void SecurityListRequestDataReaderListenerImpl::on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException) -{ - try - { - DistributedATS_SecurityListRequest::SecurityListRequestDataReader_var security_list_dr = - DistributedATS_SecurityListRequest::SecurityListRequestDataReader::_narrow(reader); - - if (CORBA::is_nil ( security_list_dr.in() ) ) - { - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) SecurityListDataRequestReaderListenerImpl::on_data_available: _narrow failed.\n"))); - ACE_OS::exit(1); - } - - while( true ) - { - DistributedATS_SecurityListRequest::SecurityListRequest security_list_request; - DDS::SampleInfo si ; - DDS::ReturnCode_t status = security_list_dr->take_next_sample( security_list_request, si ); - - if (status == DDS::RETCODE_OK) - { - if ( !si.valid_data ) - continue; +using namespace DistributedATS; - std::stringstream ss; - SecurityListRequestLogger::log(ss, security_list_request); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) SecurityListRequest : %s\n"), ss.str().c_str())); - - DistributedATS_SecurityListRequest::SecurityListRequest* securityListRequest = - new DistributedATS_SecurityListRequest::SecurityListRequest( security_list_request ); +static auto logger = log4cxx::Logger::getRootLogger(); - ACE_Message_Block* msg = new ACE_Message_Block((char*)securityListRequest, sizeof( DistributedATS_SecurityListRequest::SecurityListRequest )); - _securityListRequestQueue->enqueue_tail(msg); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { +void SecurityListRequestDataReaderListenerImpl::on_data_available( eprosima::fastdds::dds::DataReader* reader ) +{ - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) Read SecurityListRequest: %d\n"), status)); - } - } - - } catch (CORBA::Exception& e) { - + DistributedATS_SecurityListRequest::SecurityListRequest security_list_request; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&security_list_request, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + + LoggerHelper::log_info< + std::stringstream, SecurityListRequestLogger, + DistributedATS_SecurityListRequest::SecurityListRequest> + (logger, security_list_request, "SecurityListRequest"); + - std::stringstream ss; - ss << "Exception caught in read:" << std::endl << e << std::endl; - ACE_ERROR ((LM_ERROR, ACE_TEXT("(%P|%t|%D) SecurityListRequest: %s.\n"), ss.str().c_str())); + _securityListRequestQueuePtr->push(std::make_shared(security_list_request)); - ACE_OS::exit(1); + } } - - + } diff --git a/DataService/src/SecurityListRequestDataReaderListenerImpl.hpp b/DataService/src/SecurityListRequestDataReaderListenerImpl.hpp index 2ed9fee..fbce3f7 100644 --- a/DataService/src/SecurityListRequestDataReaderListenerImpl.hpp +++ b/DataService/src/SecurityListRequestDataReaderListenerImpl.hpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,51 +25,36 @@ SOFTWARE. */ -#ifndef SecurityListRequestDataReaderListenerImpl_hpp -#define SecurityListRequestDataReaderListenerImpl_hpp +#pragma once -#include +#include +#include +#include +#include -#include -#include +namespace DistributedATS { + + +using SecurityListRequestPtr = std::shared_ptr; + +typedef boost::lockfree::spsc_queue> SecurityListRequestQueue; +typedef std::shared_ptr SecurityListRequestQueuePtr; + class SecurityListRequestDataReaderListenerImpl : - public virtual OpenDDS::DCPS::LocalObject +public eprosima::fastdds::dds::DataReaderListener { public: - SecurityListRequestDataReaderListenerImpl( - ACE_Message_Queue* securityListRequestQueue ) : - _securityListRequestQueue( securityListRequestQueue ) - {}; - - virtual void on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException); - - virtual void on_requested_deadline_missed ( DDS::DataReader_ptr reader, const DDS::RequestedDeadlineMissedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_requested_incompatible_qos ( DDS::DataReader_ptr reader, const DDS::RequestedIncompatibleQosStatus & status) - throw (CORBA::SystemException) {}; + SecurityListRequestDataReaderListenerImpl(SecurityListRequestQueuePtr securityListRequestQueuePtr ) : _securityListRequestQueuePtr( securityListRequestQueuePtr ) {}; + ~SecurityListRequestDataReaderListenerImpl() override {}; - virtual void on_liveliness_changed ( DDS::DataReader_ptr reader, const DDS::LivelinessChangedStatus & status) - throw (CORBA::SystemException) {}; + void on_data_available( eprosima::fastdds::dds::DataReader* reader ) override; - virtual void on_subscription_matched ( DDS::DataReader_ptr reader, const DDS::SubscriptionMatchedStatus & status) - throw (CORBA::SystemException) {}; - virtual void on_sample_rejected( DDS::DataReader_ptr reader, const DDS::SampleRejectedStatus& status) - throw (CORBA::SystemException) {}; - - virtual void on_sample_lost( DDS::DataReader_ptr reader, const DDS::SampleLostStatus& status) - throw (CORBA::SystemException) {}; - -protected: - SecurityListRequestDataReaderListenerImpl() {}; - private: - ACE_Message_Queue* _securityListRequestQueue; - // DATSSecurityList::SecurityListDataWriter_var _security_list_dw ; - + SecurityListRequestQueuePtr _securityListRequestQueuePtr; + }; -#endif /* LogonDataReaderListenerImpl_hpp */ +}; diff --git a/DataService/src/main.cpp b/DataService/src/main.cpp index 05bde8f..19366d4 100644 --- a/DataService/src/main.cpp +++ b/DataService/src/main.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -27,209 +27,153 @@ #include #include -#include -#include #include "AuthService.h" #include "RefDataService.h" #include "MarketDataService.h" -#include "MassOrderStatusService.h" +#include "OrderMassStatusRequestService.h" #include "SQLiteConnection.hpp" #include -#include #include #include - #include -std::atomic is_running; +#include +#include -namespace DistributedATS { +#include +#include +#include +#include +#include +#include -class SignalHandler : public ACE_Event_Handler -{ -public: - virtual int handle_signal (int signum, siginfo_t * = 0, ucontext_t * = 0) - { - std::cout << "Lets hangle signal : " << signum << std::endl; - is_running.store(false); - return 0; - }; - -}; +#include +#include -}; +std::atomic is_running; int main(int argc, char* argv[] ) { + LOG4CXX_INFO(logger, "DataService"); - ACE_DEBUG ((LM_INFO, ACE_TEXT("(%P|%t) INFO: DataService\n"))); + eprosima::fastdds::dds::Log::SetVerbosity(eprosima::fastdds::dds::Log::Info); - DDS::DomainParticipantFactory_var dpf = DDS::DomainParticipantFactory::_nil(); - try { - if ( argc < 2 ) - { - std::cout << "usage: " << argv[ 0 ] << std::endl << "\t\t-c data_service_config_file_name" << std::endl; - return -1; - } + if ( argc < 2 ) + { + std::cout << "usage: " << argv[ 0 ] << std::endl << "\t\t-c data_service_config_file_name" << std::endl; + return -1; + } std::string data_service_config_file = ""; - dpf = TheParticipantFactoryWithArgs(argc, argv); + boost::program_options::options_description options_desc{"Options"}; - distributed_ats_utils::BasicDomainParticipantPtr participantPtr = - std::make_shared( dpf, DISTRIBUTED_ATS_DOMAIN_ID ); + options_desc.add_options() + ("help,h", "Help screen") + ("config,c", boost::program_options::value()->default_value(""), "DataService ConfigFile"); - participantPtr->createSubscriber(); - participantPtr->createPublisher(); + boost::program_options::variables_map vm; + boost::program_options::store(parse_command_line(argc, argv, options_desc), vm); + boost::program_options::notify(vm); - ACE_Get_Opt cmd_opts( argc, argv, ":c:" ); + if (vm.count("help")) + std::cout << options_desc << '\n'; + else if (vm.count("config")) + data_service_config_file = vm["config"].as(); + - int option; - while ( (option = cmd_opts()) != EOF ) + if ( data_service_config_file.empty() ) { - switch( option ) - { - case 'c' : - data_service_config_file = cmd_opts.opt_arg(); - break; - } + std::cerr << "Error: Config file name is not specified." << std::endl; + return -1; } - - if ( data_service_config_file.empty() ) - { - std::cerr << "Error: Config file name is not specified." << std::endl; - return -1; - } - ACE_Sig_Handler handler; - DistributedATS::SignalHandler signalHandler; + boost::property_tree::ptree pt; + boost::property_tree::ini_parser::read_ini(data_service_config_file, pt); - // add signal handler for the SIGINT signal here - ACE_Sig_Handler sig_handler; - sig_handler.register_handler (SIGINT, &signalHandler); - - ACE_DEBUG (( LM_INFO, ACE_TEXT("(%P|%t|%D) INFO: Config File : [%s]\n"), data_service_config_file.c_str() )); - - ConfigFileHelper configFileHelper(data_service_config_file.c_str()); - - ACE_TString data_service_name; - if (configFileHelper.get_string_value (ACE_TEXT ("dataservice"), ACE_TEXT ("name"), data_service_name)) - { - ACE_ERROR ((LM_CRITICAL, ACE_TEXT("(%P|%t|%D) ERROR: Unable to get data service name from ini file %d.\n"), ACE_OS::last_error() )); - }; - - ACE_DEBUG ((LM_INFO, ACE_TEXT("(%P|%t|%D) INFO: DataService:[%s]\n"), data_service_name.c_str())); - - - /* - int port = 0; - if (configFileHelper.get_integer_value (ACE_TEXT ("database"), ACE_TEXT ("portnumber"), &port)) - { - ACE_ERROR ((LM_CRITICAL, ACE_TEXT("(%P|%t|%D) ERROR: Unable to get database port from ini file %d.\n"), ACE_OS::last_error() )); - }; - - ACE_TString hostname; - if (configFileHelper.get_string_value (ACE_TEXT ("database"), ACE_TEXT ("hostname"), hostname)) - { - ACE_ERROR ((LM_CRITICAL, ACE_TEXT("(%P|%t|%D) ERROR: Unable to get database hostname from ini file %d.\n"), ACE_OS::last_error() )); - }; - - ACE_TString username; - if (configFileHelper.get_string_value (ACE_TEXT ("database"), ACE_TEXT ("username"), username)) - { - ACE_ERROR ((LM_CRITICAL, ACE_TEXT("(%P|%t|%D) ERROR: Unable to get database username from ini file %d.\n"), ACE_OS::last_error() )); - }; - - ACE_TString password; - if (configFileHelper.get_string_value (ACE_TEXT ("database"), ACE_TEXT ("password"), password)) - { - ACE_ERROR ((LM_CRITICAL, ACE_TEXT("(%P|%t|%D) ERROR: Unable to get database password from ini file %d.\n"), ACE_OS::last_error() )); - }; - - ACE_TString database; - if (configFileHelper.get_string_value (ACE_TEXT ("database"), ACE_TEXT ("database"), database)) - { - ACE_ERROR ((LM_CRITICAL, ACE_TEXT("(%P|%t|%D) ERROR: Unable to get database password from ini file %d.\n"), ACE_OS::last_error() )); - }; + auto base_dir_ats = std::getenv("BASEDIR_ATS"); + + if ( base_dir_ats == NULL ) + throw std::runtime_error("BASEDIR_ATS is not set"); - ACE_DEBUG ((LM_INFO, ACE_TEXT("(%P|%t|%D) INFO: Database settings : Hostname : [%s]|Port : [%d]|Username : [%s]|Password : [%s]|Database : [%s]\n"), hostname.c_str(), - port, username.c_str(), password.c_str(), database.c_str())); - */ - - - //FIX::DatabaseConnectionID databaseConnectionID(database.c_str(), username.c_str(), password.c_str(), hostname.c_str(), port); + std::string data_service_name = pt.get("dataservice.name"); + std::string database_file = pt.get("database.database_file"); - ACE_TString database_file; - if (configFileHelper.get_string_value (ACE_TEXT ("database"), ACE_TEXT ("database_file"), database_file)) - { - ACE_ERROR ((LM_CRITICAL, ACE_TEXT("(%P|%t|%D) ERROR: Unable to get database hostname from ini file %d.\n"), ACE_OS::last_error() )); - }; + distributed_ats_utils::basic_domain_participant_ptr basic_domain_participant_ptr = + std::make_shared( 0, data_service_name ); - FIX::DatabaseConnectionID databaseConnectionID(database_file.c_str(),"", "", "", 0); + basic_domain_participant_ptr->create_subscriber(); + basic_domain_participant_ptr->create_publisher(); + + FIX::DatabaseConnectionID databaseConnectionID(std::string(base_dir_ats) + "/data/" + database_file,"", "", "", 0); - std::shared_ptr mySqlConnectionPtr = + std::shared_ptr sql_connection = std::make_shared( databaseConnectionID ); - if ( !mySqlConnectionPtr->connected() ) + if ( !sql_connection->connected() ) { - ACE_ERROR ((LM_CRITICAL, ACE_TEXT("(%P|%t|%D) ERROR: Data Service is not connected to the database.\n"))); - return -1; + LOG4CXX_ERROR(logger, "Data Service is not connected to the database"); + return -1; }; auto authServicePtr = - std::make_shared(participantPtr, databaseConnectionID, ACE_Thread_Manager::instance () ); + std::make_shared(basic_domain_participant_ptr, databaseConnectionID ); auto refServicePtr = - std::make_shared(participantPtr, databaseConnectionID, ACE_Thread_Manager::instance ()); + std::make_shared(basic_domain_participant_ptr, databaseConnectionID); auto marketDataServicePtr = - std::make_shared(participantPtr, databaseConnectionID, ACE_Thread_Manager::instance ()); + std::make_shared(basic_domain_participant_ptr, databaseConnectionID); - auto massOrderStatusServicePtr = - std::make_shared( participantPtr, ACE_Thread_Manager::instance ()); - - std::string data_service_filter_expression = "m_Header.TargetSubID = '" + std::string( data_service_name.c_str() ) + "'"; + auto orderMassStatusServicePtr = + std::make_shared( basic_domain_participant_ptr ); + + // Ref Data + refServicePtr->createSecurityListRequestListener(); + refServicePtr->createSecurityListDataWriter(); // Authentication - authServicePtr->createLogonTopic(data_service_filter_expression); - authServicePtr->createLogoutTopic(data_service_filter_expression); + authServicePtr->createLogonTopic(); + authServicePtr->createLogoutTopic(); - // Ref Data - refServicePtr->createSecurityListRequestListener(data_service_filter_expression); - refServicePtr->createSecurityListDataWriter(); // Market Data - marketDataServicePtr->createMarketDataRequestListener(data_service_filter_expression); + marketDataServicePtr->createMarketDataRequestListener(); marketDataServicePtr->createMarketDataIncrementalRefreshListener(); marketDataServicePtr->createMarketDataFullRefreshDataWriter(); // Order Status - massOrderStatusServicePtr->createOrderMassStatusRequestListener(data_service_filter_expression); - massOrderStatusServicePtr->createExecutionReportListener(data_service_filter_expression); - - authServicePtr->activate(THR_NEW_LWP, 2); // since we will be making a blocking database call, lets hava a pool of 2 - refServicePtr->activate(); - marketDataServicePtr->activate(); - massOrderStatusServicePtr->activate(); + orderMassStatusServicePtr->createOrderMassStatusRequestListener(); + orderMassStatusServicePtr->createExecutionReportListener(); std::atomic_init(&is_running, true); - // TODO: Gracefull shutdown: deactivate tasks (disconnect from the db) - while ( is_running == true ) - ACE_OS::sleep(1); + boost::asio::io_context io_service; + boost::asio::signal_set signals(io_service, SIGINT, SIGTERM); + + signals.async_wait([&](const boost::system::error_code& ec, int signal_number) { + if (!ec) { + std::cout << "Signal number " << signal_number << std::endl; + std::cout << "Gracefully stopping the timer and exiting" + << std::endl; + is_running.store(false); + } else { + std::cout << "Error " << ec.value() << " - " << ec.message() + << " - Signal number - " << signal_number << std::endl; + } + }); - } catch ( std::exception & e) { + io_service.run(); - ACE_ERROR ((LM_CRITICAL, ACE_TEXT("(%P|%t|%D) ERROR: Exception during the initialization of Data Service : %s\n"), e.what())); + } catch ( std::exception & e) { - std::cout << e.what() << std::endl; + LOG4CXX_ERROR(logger, "Exception during the initialization of Data Service" << e.what()); return 1; } - TheServiceParticipant->shutdown (); }; diff --git a/FIXGateway/config/sample_fix_gwy.cfg b/FIXGateway/config/sample_fix_gwy.cfg index 1a90b1c..8e193af 100644 --- a/FIXGateway/config/sample_fix_gwy.cfg +++ b/FIXGateway/config/sample_fix_gwy.cfg @@ -6,10 +6,10 @@ DataService=DATA_SERVICE_A ConnectionType=acceptor SocketReuseAddress=Y -#DataDictionary=/Users/mkipnis/DistributedATS/FIXGateway/spec/FIX44.xml -DataDictionary=../../FIXGateway/spec/FIX44.xml -FileLogPath=../logs -FileStorePath=../store +DataDictionary=/Users/mkipnis/git/DistributedATS/FIXGateway/spec/FIX44.xml +#DataDictionary=FIX44.xml +FileLogPath=/tmp/ +FileStorePath=/tmp/ StartTime=00:00:00 EndTime=00:00:00 TimestampPrecision=6 diff --git a/FIXGateway/scripts/fixgateway.sh b/FIXGateway/scripts/fixgateway.sh index b6efb19..1e08a75 100755 --- a/FIXGateway/scripts/fixgateway.sh +++ b/FIXGateway/scripts/fixgateway.sh @@ -6,35 +6,15 @@ PRG="$0" PROGNAME=FIXGateway CONFIG_FILE_NAME=$2 -if [ "$1" != "start" ] && [ "$1" != "stop" ] && [ "$1" != "check" ] ; -then - echo "Unsupported Command - "$1 : "Supported Commands : (start/stop/check)"; - exit 1; -fi +export LOG_FILE_NAME=$2.log -if [ -z "$CONFIG_FILE_NAME" ] -then - echo "Config File Name is not set"; - exit 1; -fi +. $DATS_HOME/dats_env.sh -#PRGDIR=`dirname "$PRG"` - -if [ -z "$BASEDIR" ] -then - BASEDIR=`cd ".." > /dev/null; pwd` -fi - -if [ ! -d "$BASEDIR/logs/" ] -then - mkdir $BASEDIR/logs/ -fi - -logfile=$BASEDIR/logs/$PROGNAME.$CONFIG_FILE_NAME.console.log +logfile=$BASEDIR_ATS/logs/$PROGNAME.$CONFIG_FILE_NAME.console.log #ldd $DATS_HOME/bin/$PROGNAME >> $logfile -PROCESS="$PROGNAME -c $BASEDIR/config/$CONFIG_FILE_NAME -DCPSConfigFile $DATS_HOME/Protocols/tcp.ini -ORBLogFile $BASEDIR/logs/$PROGNAME.$CONFIG_FILE_NAME.log" +PROCESS="$PROGNAME -c $BASEDIR_ATS/config/$CONFIG_FILE_NAME" #echo PROCESS=$PROCESS >> $logfile idn=$(id -u) diff --git a/FIXGateway/src/Application.cpp b/FIXGateway/src/Application.cpp index c1e2233..64f9bf4 100644 --- a/FIXGateway/src/Application.cpp +++ b/FIXGateway/src/Application.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,37 +26,28 @@ */ #include -#include #include -#include #include -#include #include -#include #include -#include #include -#include #include -#include #include -#include - -#include #include "Application.hpp" #include "SocketConnection.h" #include -#include - #include "SocketAcceptor.h" #include "AuthServiceHelper.h" #include +#include +#include + #include #include #include @@ -66,63 +57,67 @@ #include #include +#include +#include +#include +#include +#include +#include + #include "DataWriterContainer.hpp" + using namespace DistributedATS; Mutex DATSApplication::s_quickFIXSessionStateMutex; -template +//static auto logger = log4cxx::Logger::getRootLogger(); + +template void DATSApplication::publishToDDS(const FIX::Message &message, - DATA_WRITER &dataWriter, + const distributed_ats_utils::data_writer_ptr& dataWriter, const std::string &sender, const std::string &target, const std::string &senderSubID) { - DATA ddsMessage; - - try { - ADAPTER::FIX2DDS(message, ddsMessage); - } catch (FIX::FieldNotFound &field_not_found) { - ACE_ERROR((LM_ERROR, - ACE_TEXT("(%P|%t|%D) ERROR: Adapter message convertion : field " - "not found : Type - [%s] : Field - [%d] - %s.\n"), - field_not_found.type.c_str(), field_not_found.field, - message.toString().c_str())); - return; - } - - ddsMessage.m_Header.SenderCompID = CORBA::string_dup(sender.c_str()); - ddsMessage.m_Header.TargetCompID = CORBA::string_dup(target.c_str()); - ddsMessage.m_Header.SenderSubID = CORBA::string_dup(senderSubID.c_str()); - ddsMessage.m_Header.TargetSubID = CORBA::string_dup(_dataService.c_str()); - - std::stringstream ss; - LOGGER::log(ss, ddsMessage); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) Publishing to DDS : %s\n"), - ss.str().c_str())); - - int ret = dataWriter->write(ddsMessage, NULL); - - if (ret != DDS::RETCODE_OK) { - ACE_ERROR((LM_ERROR, - ACE_TEXT("(%P|%t) ERROR: Data Writer write returned %d.\n"), - ret)); - } + DATA ddsMessage; + + try { + ADAPTER::FIX2DDS(message, ddsMessage); + } catch (FIX::FieldNotFound &field_not_found) { + + LOG4CXX_ERROR(logger, "Adapter message convertion : field not found : Type - [" << field_not_found.type << "] : Field - [" << field_not_found.field << "]" << " - " << message.toString()); + + return; + } + + ddsMessage.DATS_Source(sender); + ddsMessage.DATS_SourceUser(senderSubID); + ddsMessage.DATS_Destination(target); + ddsMessage.DATS_DestinationUser(_dataService); + + std::stringstream ss; + LOGGER::log(ss, ddsMessage); + + LOG4CXX_INFO(logger, "Publishing to DDS :" << ss.str()); + + auto ret = dataWriter->write(&ddsMessage); + + if (ret != eprosima::fastdds::dds::RETCODE_OK) { + LOG4CXX_ERROR(logger, "Unable to publishing to DDS:" << ss.str()); + } + } void DATSApplication::onCreate(const FIX::SessionID &sessionID) { - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) Session Created : %s\n"), - sessionID.toString().c_str())); + LOG4CXX_INFO(logger, "Session Created :" << sessionID.toString()); } void DATSApplication::onLogon(const FIX::SessionID &sessionID) { - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) Session Logon : %s\n"), - sessionID.toString().c_str())); + LOG4CXX_INFO(logger, "Session Logon :" << sessionID.toString()); } void DATSApplication::onLogout(const FIX::SessionID &sessionID) { - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) Session Logout : %s\n"), - sessionID.toString().c_str())); + LOG4CXX_INFO(logger, "Session Logout :" << sessionID.toString()); FIX::ClOrdID clOrdID; FIX::MassCancelRequestType massCancelRequestType( @@ -133,10 +128,9 @@ void DATSApplication::onLogout(const FIX::SessionID &sessionID) { transactType); publishToDDS( - message, _dataWriterContainer->_orderMassCancelRequestDataWriter, + message, _dataWriterContainer->_order_mass_cancel_request_dw, sessionID.getSenderCompID(), "MATCHING_ENGINE", sessionID.getTargetCompID()); } @@ -144,8 +138,9 @@ void DATSApplication::onLogout(const FIX::SessionID &sessionID) { void DATSApplication::onDisconnect( const FIX::SessionID &sessionID, DistributedATS::SocketConnection *pSocketConnection) { - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) Session Disconnect : %s\n"), - sessionID.toString().c_str())); + + LOG4CXX_INFO(logger, "Session Disconnect :" << sessionID.toString()); + FIX::Locker lock(s_quickFIXSessionStateMutex); _authService->processDisconnect(sessionID, pSocketConnection); } @@ -186,18 +181,16 @@ void DATSApplication::publishToClient(FIX::Message &message) { FIX::Session::sendToTarget(message, activeSessionID); } catch ( std::exception& exp ) { - ACE_ERROR((LM_ERROR, - ACE_TEXT("(%P|%t|%D) ERROR: unable to publish the message [%s] \n"), - exp.what())); + LOG4CXX_ERROR(logger, "unable to publish the message" << exp.what()); } } } catch (FIX::FieldNotFound &field_not_found) { - ACE_ERROR((LM_ERROR, - ACE_TEXT("(%P|%t|%D) ERROR: Adapter message convertion : field " - "not found : Type - [%s] : Field - [%d] - %s.\n"), - field_not_found.type.c_str(), field_not_found.field, - message.toString().c_str())); + + LOG4CXX_ERROR(logger, "Adapter message convertion : field " + "not found : Type - [" << field_not_found.type << "%] : Field - [" << field_not_found.field << "] - " << + message.toString() << "]"); + return; } } @@ -214,9 +207,8 @@ void DATSApplication::broadcastToClients(FIX::Message &message) { void DATSApplication::onMessage(const FIX44::NewOrderSingle &message, const FIX::SessionID &sessionID) { publishToDDS( - message, _dataWriterContainer->_newOrderSingleDataWriter, + message, _dataWriterContainer->_new_order_single_dw, sessionID.getSenderCompID(), "MATCHING_ENGINE", sessionID.getTargetCompID()); } @@ -224,10 +216,9 @@ void DATSApplication::onMessage(const FIX44::NewOrderSingle &message, void DATSApplication::onMessage(const FIX44::OrderCancelRequest &message, const FIX::SessionID &sessionID) { publishToDDS( - message, _dataWriterContainer->_orderCancelRequestDataWriter, + message, _dataWriterContainer->_order_cancel_request_dw, sessionID.getSenderCompID(), "MATCHING_ENGINE", sessionID.getTargetCompID()); } @@ -235,10 +226,9 @@ void DATSApplication::onMessage(const FIX44::OrderCancelRequest &message, void DATSApplication::onMessage(const FIX44::OrderMassCancelRequest &message, const FIX::SessionID &sessionID) { publishToDDS( - message, _dataWriterContainer->_orderMassCancelRequestDataWriter, + message, _dataWriterContainer->_order_mass_cancel_request_dw, sessionID.getSenderCompID(), "MATCHING_ENGINE", sessionID.getTargetCompID()); } @@ -246,10 +236,9 @@ void DATSApplication::onMessage(const FIX44::OrderMassCancelRequest &message, void DATSApplication::onMessage(const FIX44::OrderCancelReplaceRequest &message, const FIX::SessionID &sessionID) { publishToDDS( - message, _dataWriterContainer->_orderCancelReplaceRequestDataWriter, + message, _dataWriterContainer->_order_cancel_replace_request_dw, sessionID.getSenderCompID(), "MATCHING_ENGINE", sessionID.getTargetCompID()); } @@ -257,30 +246,27 @@ void DATSApplication::onMessage(const FIX44::OrderCancelReplaceRequest &message, void DATSApplication::onMessage(const FIX44::SecurityListRequest &message, const FIX::SessionID &sessionID) { publishToDDS( - message, _dataWriterContainer->_securityListRequestDataWriter, + message, _dataWriterContainer->_security_list_request_dw, sessionID.getSenderCompID(), "DATA_SERVICE", sessionID.getTargetCompID()); } void DATSApplication::onMessage(const FIX44::MarketDataRequest &message, const FIX::SessionID &sessionID) { publishToDDS( - message, _dataWriterContainer->_marketDataRequestDataWriter, + message, _dataWriterContainer->_market_data_request_dw, sessionID.getSenderCompID(), "DATA_SERVICE", sessionID.getTargetCompID()); } void DATSApplication::onMessage(const FIX44::OrderMassStatusRequest &message, const FIX::SessionID &sessionID) { publishToDDS( - message, _dataWriterContainer->_orderMassStatusRequestDataWriter, + message, _dataWriterContainer->_order_mass_status_request_dw, sessionID.getSenderCompID(), "DATA_SERVICE", sessionID.getTargetCompID()); } @@ -310,9 +296,9 @@ DATSApplication::getConnectionToken(const FIX::Message &pendingLogon) { << ":" << utcTimStamp.getTimeT() << ":" << _connection_id++; std::string tokenStr = tokenStream.str().c_str(); + + LOG4CXX_INFO(logger, "Connection Token :" << tokenStr); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) Connection Token: %s \n"), - tokenStr.c_str())); return tokenStr; } @@ -323,20 +309,15 @@ bool DATSApplication::insertPendingLogonSocketConnection( pendingLogon.getHeader().getField(clTargetCompID); if (clTargetCompID.getValue().compare(this->_senderCompId) != 0) { - ACE_DEBUG( - (LM_INFO, - ACE_TEXT("(%P|%t|%D) Invalid Target CompID | Pending Logon : %s \n"), - pendingLogon.toString().c_str())); + LOG4CXX_DEBUG(logger, "Invalid Target CompID | Pending Logon :" << pendingLogon.toString()); + socketConnection->disconnect(); return false; } std::string connectionToken = getConnectionToken(pendingLogon); - - ACE_DEBUG( - (LM_INFO, - ACE_TEXT("(%P|%t|%D) Connection Token : %s | Pending Logon : %s \n"), - connectionToken.c_str(), pendingLogon.toString().c_str())); + + LOG4CXX_DEBUG(logger, "Connection Token : " << connectionToken << " | Pending Logon :" << pendingLogon.toString()); _authService->insertPendingConnection(connectionToken, socketConnection); @@ -348,10 +329,10 @@ bool DATSApplication::insertPendingLogonSocketConnection( FIX::RawData tokenData(connectionToken); const_cast(pendingLogon).setField(tokenData); - publishToDDS( - pendingLogon, _dataWriterContainer->_logonDataWriter, - clTargetCompID.getValue(), "AUTH", clSenderCompID.getValue()); + pendingLogon, _dataWriterContainer->_logon_dw, + clTargetCompID.getValue(), "DATA_SERVICE", clSenderCompID.getValue()); return true; } diff --git a/FIXGateway/src/Application.hpp b/FIXGateway/src/Application.hpp index 52f8df4..ed41cda 100644 --- a/FIXGateway/src/Application.hpp +++ b/FIXGateway/src/Application.hpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,8 +26,7 @@ */ -#ifndef DATS_APPLICATION_H -#define DATS_APPLICATION_H +#pragma once #include #include @@ -43,14 +42,15 @@ #include #include #include +#include #include "AuthServiceHelper.h" -#include +#include "DataWriterContainer.hpp" + namespace DistributedATS { class SocketConnection; class SocketAcceptor; -class DataWriterContrainer; class DATSApplication : public FIX::Application, public FIX::MessageCracker { @@ -84,7 +84,7 @@ class DATSApplication : public FIX::Application, public FIX::MessageCracker { public: DATSApplication( std::string dataService, std::string senderCompId, - std::shared_ptr dataWriterContainer) + DataWriterContrainerPtr dataWriterContainer) : _connection_id(0), _dataService(dataService), _senderCompId(senderCompId), _dataWriterContainer(dataWriterContainer){}; @@ -96,8 +96,9 @@ class DATSApplication : public FIX::Application, public FIX::MessageCracker { void onDisconnect(const FIX::SessionID &sessionID, SocketConnection *pSocketConnection); - template - void publishToDDS(const FIX::Message &message, DATA_WRITER &dataWriter, + template + void publishToDDS(const FIX::Message &message, + const distributed_ats_utils::data_writer_ptr& dataWriter, const std::string &sender, const std::string &target, const std::string &senderSubID); @@ -106,20 +107,26 @@ class DATSApplication : public FIX::Application, public FIX::MessageCracker { void processDDSLogon(FIX::Message &message); void processDDSLogout(std::string &connectionToken, FIX::Message &message); - std::string getConnectionToken( - const FIX::Message - &); // RawData of Login Message, it will be used to cross reference - // logon reply with Socket Connection + // RawData of Login Message, it will be used to cross reference + // logon reply with Socket Connection + std::string getConnectionToken(const FIX::Message&); public: void setAuthService(std::shared_ptr &authService) { _authService = authService; }; + + const std::shared_ptr& get_data_writer_container() const + { + return _dataWriterContainer; + } + + const std::string& fix_gateway_name() const { return _senderCompId;}; private: DistributedATS::SocketAcceptor *_acceptor; std::shared_ptr _authService; - std::shared_ptr _dataWriterContainer; + DistributedATS::DataWriterContrainerPtr _dataWriterContainer; unsigned int _connection_id; // used in token generation std::string _dataService; @@ -127,7 +134,8 @@ class DATSApplication : public FIX::Application, public FIX::MessageCracker { // Must lock whenever we interract with QuickFIX Sessions(i.e. if quickfix client disconnets and session state is update on QuickFIX Threads, we can't send messages from DDS threads in an non-synchronized matter ) static FIX::Mutex s_quickFIXSessionStateMutex; + + DistributedATS_Logon::Logon logon; }; }; // namespace DistributedATS -#endif /* DATS_APPLICATION_H */ diff --git a/FIXGateway/src/AuthServiceHelper.cpp b/FIXGateway/src/AuthServiceHelper.cpp index 39e303d..564605d 100644 --- a/FIXGateway/src/AuthServiceHelper.cpp +++ b/FIXGateway/src/AuthServiceHelper.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -28,20 +28,20 @@ #include "AuthServiceHelper.h" #include +#include -#include -#include -#include -#include +#include +#include + +static auto logger = log4cxx::Logger::getRootLogger(); -#include ActiveUserMap AuthServiceHelper::m_activeUserMap; AuthServiceHelper::AuthServiceHelper( std::shared_ptr settings, std::shared_ptr sessionFactory, - const FIX::Dictionary *defaultDictionary, std::string senderCompID) + std::shared_ptr defaultDictionary, std::string senderCompID) : _settings(settings), _sessionFactory(sessionFactory), _defaultDictionary(defaultDictionary), _senderCompID(senderCompID) {} @@ -90,10 +90,9 @@ FIX::Session *AuthServiceHelper::createSessionFromAuthMessage( if (session == NULL) { session = _sessionFactory->create(newFixSessionID, *_defaultDictionary); - ACE_DEBUG((LM_INFO, - ACE_TEXT("(%P|%t|%D) Creating QuickFIX Session from message " - "from auth service : %s\n"), - session->getSessionID().toString().c_str())); + LOG4CXX_INFO(logger, "Creating QuickFIX Session from message " + "from auth service :" << session->getSessionID() ); + } } catch (FIX::ConfigError &cfgError) { std::cerr << "Config Exception in session create : " << cfgError.what() @@ -107,12 +106,9 @@ void AuthServiceHelper::insertPendingConnection( const std::string &connectionToken, DistributedATS::SocketConnection *socketConnection) { FIX::Locker lock(_pendingSessionMutex); - - ACE_DEBUG( - (LM_INFO, - ACE_TEXT( - "(%P|%t|%D) Inserting pending connection : %s : Socket : [%d]\n"), - connectionToken.c_str(), socketConnection->getSocket())); + + + LOG4CXX_INFO(logger, "Inserting pending connection : [" << connectionToken << "] Socket :[" << socketConnection->getSocket()<<"]"); std::cout << "Connection Token: " << connectionToken << std::endl; m_pendingLogonSocketConnection[connectionToken] = socketConnection; @@ -129,35 +125,22 @@ std::string AuthServiceHelper::getConnectionToken(const FIX::Message &message) { } void AuthServiceHelper::processDDSLogon(FIX::Message &message) { - std::string connectionToken = getConnectionToken(message); - FIX::BeginString beginString; - FIX::TargetCompID clTargetCompID; - FIX::SenderCompID clLogonSenderCompID; - FIX::RawData clSessionQualifier; - - message.getHeader().getField(beginString); - message.getHeader().getField(clTargetCompID); - message.getHeader().getField(clLogonSenderCompID); - message.getField(clSessionQualifier); + auto connectionToken = getConnectionToken(message); - //for ( auto& registredSessionId : ) - - //FIX::SessionID newFixSessionID(beginString, _senderCompID, clTargetCompID, - // ""); - - ACE_DEBUG( - (LM_INFO, - ACE_TEXT( - "(%P|%t|%D) Received Session ID for Logon : %s : Session : [%s]\n"), - _senderCompID.c_str(), clSessionQualifier.getValue().c_str())); + auto beginString = message.getHeader().getField(FIX::FIELD::BeginString); + //auto senderCompID = message.getHeader().getField(FIX::FIELD::SenderCompID); + auto targetCompID = message.getHeader().getField(FIX::FIELD::TargetCompID); + auto targetSubID = message.getHeader().getField(FIX::FIELD::TargetSubID); + auto clSessionQualifier = message.getField(FIX::FIELD::RawData); + + LOG4CXX_INFO(logger, "Received Session ID for Logon : [" << _senderCompID.c_str() << "] Session :[" << clSessionQualifier<<"]"); + FIX::Session *session = NULL; - FIX::Session *session = NULL; + auto activeSessionID = m_activeUserMap.find(targetSubID); - auto activeSessionID = m_activeUserMap.find(clTargetCompID.getValue()); - - if ( activeSessionID != m_activeUserMap.end() ) + if ( activeSessionID != m_activeUserMap.end() ) session = FIX::Session::lookupSession(activeSessionID->second); @@ -165,14 +148,14 @@ void AuthServiceHelper::processDDSLogon(FIX::Message &message) { if (session != NULL) { // Reconnection to the same gateway if (session->isLoggedOn() && - clLogonSenderCompID.getValue().compare(_senderCompID) == 0) + targetCompID.compare(_senderCompID) == 0) { FIX44::Logout logoutMessage; FIX::Text logoutText("New session logged in with your credentials"); logoutMessage.set(logoutText); - std:cout << "Sending logout: " << activeSessionID->second << std::endl; + std::cout << "Sending logout: " << activeSessionID->second << std::endl; FIX::Session::sendToTarget(logoutMessage, activeSessionID->second); m_activeUserMap.erase(activeSessionID); @@ -192,16 +175,16 @@ void AuthServiceHelper::processDDSLogon(FIX::Message &message) { } } - if (clLogonSenderCompID.getValue().compare(_senderCompID) == 0) + if (targetCompID.compare(_senderCompID) == 0) { - FIX::SessionID newFixSessionID(beginString, _senderCompID, clTargetCompID, - clSessionQualifier.getValue()); + FIX::SessionID newFixSessionID(beginString, _senderCompID, targetSubID, + clSessionQualifier); session = AuthServiceHelper::createSessionFromAuthMessage(newFixSessionID, message, ""); if (session) { - m_activeUserMap[clTargetCompID.getValue()] = newFixSessionID; + m_activeUserMap[targetSubID] = newFixSessionID; } else { std::cerr << "Something is wrong unable to create session object!!!!!" << std::endl; @@ -217,10 +200,9 @@ void AuthServiceHelper::processDDSLogon(FIX::Message &message) { void AuthServiceHelper::loginSession(FIX::Session *session, std::string &connectionToken) { FIX::Locker lock(_pendingSessionMutex); + + LOG4CXX_INFO(logger, "Login-in Session : [" << session->getSessionID() << "] Token :[" << connectionToken<<"]"); - ACE_DEBUG( - (LM_INFO, ACE_TEXT("(%P|%t|%D) Login-in Session : [%s] - Token [%s] \n"), - session->getSessionID().toString().c_str(), connectionToken.c_str())); DistributedATS::SocketConnection *responder = m_pendingLogonSocketConnection[connectionToken]; @@ -235,17 +217,15 @@ void AuthServiceHelper::loginSession(FIX::Session *session, try { session->next(pendingLogin, UtcTimeStamp()); } catch (Exception &e) { - ACE_DEBUG( - (LM_ERROR, - ACE_TEXT("(%P|%t|%D) Exception in Logon : [%s] - Exception [%s] \n"), - session->getSessionID().toString().c_str(), e.what())); + + LOG4CXX_ERROR(logger, "Exception in Logon : [" << session->getSessionID() << "] Exception :[" << e.what()<<"]"); + }; } else { - ACE_DEBUG( - (LM_INFO, - ACE_TEXT("(%P|%t|%D) Responder not found : [%s] - Token [%s] \n"), - session->getSessionID().toString().c_str(), connectionToken.c_str())); + + LOG4CXX_INFO(logger, "Responder not found : [" << session->getSessionID() << "] Token :[" << connectionToken <<"]"); + } } @@ -282,11 +262,8 @@ void AuthServiceHelper::processDDSLogout(std::string &connectionToken, message.getHeader().setField(targetCompID); message.getHeader().setField(senderCompID); message.getHeader().setField(sendingTime); - - ACE_DEBUG((LM_INFO, - ACE_TEXT("(%P|%t|%D) Logout : Original SessionID Token [%s] : " - "Logout Message ID: %s\n"), - connectionToken.c_str(), message.toString().c_str())); + + LOG4CXX_INFO(logger, "Logout : Original SessionID Token [%s] : [" << connectionToken << "] Logout Message :[" << message.toString() <<"]"); responder->send(message.toString()); responder->disconnect(); @@ -296,11 +273,9 @@ void AuthServiceHelper::processDisconnect( const FIX::SessionID &sessionID, DistributedATS::SocketConnection *pSocketConnection) { FIX::Locker lock(_pendingSessionMutex); + + LOG4CXX_INFO(logger, "Disconnecting Pending Connection Token: [" << pSocketConnection->getPendingConnectionToken() ); - ACE_DEBUG( - (LM_INFO, - ACE_TEXT("(%P|%t|%D) Disconnecting Pending Connection Token: %s \n"), - pSocketConnection->getPendingConnectionToken().c_str())); // lets check if its a pending connection auto responder_iterator = m_pendingLogonSocketConnection.find( @@ -311,8 +286,8 @@ void AuthServiceHelper::processDisconnect( return; } - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) Disconneting : [%s]\n"), - sessionID.toString().c_str())); + LOG4CXX_INFO(logger, "Disconnecting : [" << sessionID.toString() ); + FIX::Session *session = FIX::Session::lookupSession(sessionID); session->setResponder(NULL); diff --git a/FIXGateway/src/AuthServiceHelper.h b/FIXGateway/src/AuthServiceHelper.h index 7a57458..1baef4a 100644 --- a/FIXGateway/src/AuthServiceHelper.h +++ b/FIXGateway/src/AuthServiceHelper.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,8 +25,7 @@ SOFTWARE. */ -#ifndef __AUTH_SERVICE_HELPER_H__ -#define __AUTH_SERVICE_HELPER_H__ +#pragma once #include #include @@ -40,7 +39,7 @@ typedef std::map ActiveUserMap; class AuthServiceHelper { std::shared_ptr _settings; std::shared_ptr _sessionFactory; - const FIX::Dictionary *_defaultDictionary; + std::shared_ptr< FIX::Dictionary > _defaultDictionary; typedef std::map PendingLogonSocketConnection; @@ -54,7 +53,7 @@ class AuthServiceHelper { public: AuthServiceHelper(std::shared_ptr settings, std::shared_ptr sessionFactory, - const FIX::Dictionary *defaultDictionary, + std::shared_ptr< FIX::Dictionary > defaultDictionary, std::string senderCompID); static bool @@ -83,5 +82,3 @@ class AuthServiceHelper { void loginSession(FIX::Session *session, std::string &connectionToken); }; - -#endif diff --git a/FIXGateway/src/CMakeLists.txt b/FIXGateway/src/CMakeLists.txt new file mode 100644 index 0000000..7691bef --- /dev/null +++ b/FIXGateway/src/CMakeLists.txt @@ -0,0 +1,46 @@ +cmake_minimum_required(VERSION 3.12.4) + +if(NOT CMAKE_VERSION VERSION_LESS 3.0) + cmake_policy(SET CMP0048 NEW) +endif() + +project(FIXGateway) + +# Find requirements +if(NOT fastcdr_FOUND) + find_package(fastcdr REQUIRED) +endif() + +if(NOT fastdds_FOUND) + find_package(fastdds 3 REQUIRED) +endif() + +find_package(log4cxx REQUIRED) + +# Set C++11 +include(CheckCXXCompilerFlag) +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG OR + CMAKE_CXX_COMPILER_ID MATCHES "Clang") + check_cxx_compiler_flag(-std=c++11 SUPPORTS_CXX11 -g) + if(SUPPORTS_CXX11) + add_compile_options(-std=c++11 -g) + else() + message(FATAL_ERROR "Compiler doesn't support C++11") + endif() +endif() + +link_directories(${CMAKE_INSTALL_PREFIX}/lib) +link_directories(${CMAKE_QUICKFIX_PREFIX}/lib) +#link_directories(${Boost_LIBRARY_DIRS}) + +file(GLOB DISTRIBUTED_ATS_FIX_GATEWAY_SRC *) +add_executable(FIXGateway ${DISTRIBUTED_ATS_FIX_GATEWAY_SRC}) +link_directories(DistributedATSLib quickfix log4cxx) +target_link_libraries(FIXGateway DistributedATSLib quickfix log4cxx boost_program_options) + +set(CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "-o linker-signed") + +install(TARGETS FIXGateway + PUBLIC_HEADER + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dats +) diff --git a/FIXGateway/src/ConcurrentQueue.h b/FIXGateway/src/ConcurrentQueue.h index 9a7ab7e..ab50b61 100644 --- a/FIXGateway/src/ConcurrentQueue.h +++ b/FIXGateway/src/ConcurrentQueue.h @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,6 +26,7 @@ */ #pragma once + #include #include #include diff --git a/FIXGateway/src/DataReaderContainer.h b/FIXGateway/src/DataReaderContainer.h index 88477a0..d5cfcc7 100644 --- a/FIXGateway/src/DataReaderContainer.h +++ b/FIXGateway/src/DataReaderContainer.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,148 +25,152 @@ SOFTWARE. */ -#ifndef DataReaderContainer_h -#define DataReaderContainer_h +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + namespace DistributedATS { struct DataReaderContrainer { + + + distributed_ats_utils::data_reader_tuple_ptr _logon_data_reader_tuple; + + distributed_ats_utils::topic_tuple_ptr _logout_topic_tuple; + distributed_ats_utils::data_reader_tuple_ptr _logout_data_reader_tuple; + + + distributed_ats_utils::topic_tuple_ptr _market_data_incremental_refresh_topic_tuple; + distributed_ats_utils::data_reader_tuple_ptr _market_data_incremental_refresh_data_reader_tuple; + + distributed_ats_utils::topic_tuple_ptr _market_data_snapshot_full_refresh_topic_tuple; + distributed_ats_utils::data_reader_tuple_ptr _market_data_snapshot_full_refresh_data_reader_tuple; + + + distributed_ats_utils::topic_tuple_ptr _execution_report_topic_tuple; + distributed_ats_utils::data_reader_tuple_ptr _execution_report_data_reader_tuple; + + distributed_ats_utils::topic_tuple_ptr _order_cancel_reject_topic_tuple; + distributed_ats_utils::data_reader_tuple_ptr _order_cancel_reject_data_reader_tuple; + + distributed_ats_utils::topic_tuple_ptr _order_mass_cancel_report_topic_tuple; + distributed_ats_utils::data_reader_tuple_ptr _order_mass_cancel_report_data_reader_tuple; + + distributed_ats_utils::topic_tuple_ptr _security_list_topic_tuple; + distributed_ats_utils::data_reader_tuple_ptr _security_list_data_reader_tuple; + + + ~DataReaderContrainer() + { + std::cout << "~DataReaderContrainer" << std::endl; + } + DataReaderContrainer( - distributed_ats_utils::BasicDomainParticipantPtr participantPtr, + distributed_ats_utils::basic_domain_participant_ptr participant_ptr, DistributedATS::DATSApplication &application, - std::string targetCompIdFilter) { + std::string gateway_name) { + // // Data Reader Topic // - DDS::Topic_var logon_topic = participantPtr->createTopicAndRegisterType< - DistributedATS_Logon::LogonTypeSupport_var, DistributedATS_Logon::LogonTypeSupportImpl>( - LOGON_TOPIC_NAME); - DDS::Topic_var logout_topic = participantPtr->createTopicAndRegisterType< - DistributedATS_Logout::LogoutTypeSupport_var, DistributedATS_Logout::LogoutTypeSupportImpl>( - LOGOUT_TOPIC_NAME); + auto& logon_topic_tuple = application.get_data_writer_container()->_logon_topic_tuple; + + std::string authCompIdFilter = "DATS_SourceUser=%0"; + + _logon_data_reader_tuple = participant_ptr->make_data_reader_tuple(logon_topic_tuple, + new DistributedATS::LogonDataReaderListenerImpl(application), "FILTERED_LOGON", authCompIdFilter, {"AUTH"}); + - DDS::Topic_var market_data_incremental_refresh_topic = - participantPtr->createTopicAndRegisterType< - DistributedATS_MarketDataIncrementalRefresh:: - MarketDataIncrementalRefreshTypeSupport_var, - DistributedATS_MarketDataIncrementalRefresh:: - MarketDataIncrementalRefreshTypeSupportImpl>( - MARKET_DATA_INCREMENTAL_REFRESH_TOPIC_NAME); - DDS::Topic_var market_data_snapshot_full_refresh_topic = - participantPtr->createTopicAndRegisterType< + _logout_topic_tuple = participant_ptr->make_topic< + DistributedATS_Logout::LogoutPubSubType, + DistributedATS_Logout::Logout>( + LOGOUT_TOPIC_NAME); + + _logout_data_reader_tuple = participant_ptr->make_data_reader_tuple(_logout_topic_tuple, + new DistributedATS::LogoutDataReaderListenerImpl(application),"FILTERED_LOGOUT", authCompIdFilter, {"AUTH"}); + + + _security_list_topic_tuple = + participant_ptr->make_topic< + DistributedATS_SecurityList::SecurityListPubSubType, + DistributedATS_SecurityList::SecurityList>( + SECURITY_LIST_TOPIC_NAME); + + std::string target_comp_id_filter = "DATS_Destination=%0"; + + _security_list_data_reader_tuple = participant_ptr->make_data_reader_tuple(_security_list_topic_tuple, + new DistributedATS::SecurityListDataReaderListenerImpl(application) ,"FILTERED_REF_DATA", target_comp_id_filter, {gateway_name}); + + + _market_data_incremental_refresh_topic_tuple = + participant_ptr->make_topic< + DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefreshPubSubType, + DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh>( + MARKET_DATA_INCREMENTAL_REFRESH_TOPIC_NAME); + + _market_data_incremental_refresh_data_reader_tuple = participant_ptr->make_data_reader_tuple(_market_data_incremental_refresh_topic_tuple, + new DistributedATS::MarketDataIncrementalRefreshDataReaderListenerImpl(application)); + + + + _market_data_snapshot_full_refresh_topic_tuple = + participant_ptr->make_topic< DistributedATS_MarketDataSnapshotFullRefresh:: - MarketDataSnapshotFullRefreshTypeSupport_var, + MarketDataSnapshotFullRefreshPubSubType, DistributedATS_MarketDataSnapshotFullRefresh:: - MarketDataSnapshotFullRefreshTypeSupportImpl>( + MarketDataSnapshotFullRefresh>( MARKET_DATA_SNAPSHOT_FULL_REFRESH_TOPIC_NAME); - - DDS::Topic_var execution_report_topic = - participantPtr->createTopicAndRegisterType< - DistributedATS_ExecutionReport::ExecutionReportTypeSupport_var, - DistributedATS_ExecutionReport::ExecutionReportTypeSupportImpl>( + + _market_data_snapshot_full_refresh_data_reader_tuple = + participant_ptr->make_data_reader_tuple(_market_data_snapshot_full_refresh_topic_tuple, + new DistributedATS::MarketDataSnapshotFullRefreshDataReaderListenerImpl(application)); + + + _execution_report_topic_tuple = + participant_ptr->make_topic< + DistributedATS_ExecutionReport::ExecutionReportPubSubType, + DistributedATS_ExecutionReport::ExecutionReport>( EXECUTION_REPORT_TOPIC_NAME); - DDS::Topic_var order_cancel_reject_topic = - participantPtr->createTopicAndRegisterType< - DistributedATS_OrderCancelReject::OrderCancelRejectTypeSupport_var, - DistributedATS_OrderCancelReject::OrderCancelRejectTypeSupportImpl>( - ORDER_CANCEL_REJECT_TOPIC_NAME); - DDS::Topic_var order_mass_cancel_report_topic = - participantPtr->createTopicAndRegisterType< - DistributedATS_OrderMassCancelReport::OrderMassCancelReportTypeSupport_var, - DistributedATS_OrderMassCancelReport::OrderMassCancelReportTypeSupportImpl>( + + _execution_report_data_reader_tuple = participant_ptr->make_data_reader_tuple(_execution_report_topic_tuple, + new DistributedATS::ExecutionReportDataReaderListenerImpl(application), + "FILTERED_EXEC_REPORT", target_comp_id_filter, {gateway_name}); + + _order_cancel_reject_topic_tuple = + participant_ptr->make_topic< + DistributedATS_OrderCancelReject::OrderCancelRejectPubSubType, + DistributedATS_OrderCancelReject::OrderCancelReject>( + ORDER_CANCEL_REJECT_TOPIC_NAME); + + _order_cancel_reject_data_reader_tuple = participant_ptr->make_data_reader_tuple(_order_cancel_reject_topic_tuple, + new DistributedATS::OrderCancelRejectDataReaderListenerImpl(application), + "FILTERED_ORDER_CANCEL_REJECT", target_comp_id_filter, {gateway_name}); + + + _order_mass_cancel_report_topic_tuple = + participant_ptr->make_topic< + DistributedATS_OrderMassCancelReport::OrderMassCancelReportPubSubType, + DistributedATS_OrderMassCancelReport::OrderMassCancelReport>( ORDER_MASS_CANCEL_REPORT_TOPIC_NAME); - - DDS::Topic_var security_list_topic = - participantPtr->createTopicAndRegisterType< - DistributedATS_SecurityList::SecurityListTypeSupport_var, - DistributedATS_SecurityList::SecurityListTypeSupportImpl>( - SECURITY_LIST_TOPIC_NAME); - - // - // Content Filters - // - - std::string authCompIdFilter = "m_Header.SenderCompID='AUTH'"; - - DDS::ContentFilteredTopic_ptr cft_logon = - participantPtr->getDomainParticipant()->create_contentfilteredtopic( - "FILTERED_LOGON", logon_topic, authCompIdFilter.c_str(), - DDS::StringSeq()); - - DDS::ContentFilteredTopic_ptr cft_logout = - participantPtr->getDomainParticipant()->create_contentfilteredtopic( - "FILTERED_LOGOUT", logout_topic, authCompIdFilter.c_str(), - DDS::StringSeq()); - - DDS::ContentFilteredTopic_ptr cft_ref_data = - participantPtr->getDomainParticipant()->create_contentfilteredtopic( - "FILTERED_REF_DATA", security_list_topic, - targetCompIdFilter.c_str(), DDS::StringSeq()); - - DDS::ContentFilteredTopic_ptr cft_exec_report = - participantPtr->getDomainParticipant()->create_contentfilteredtopic( - "FILTERED_EXEC_REPORT", execution_report_topic, - targetCompIdFilter.c_str(), DDS::StringSeq()); - - DDS::ContentFilteredTopic_ptr cft_mdc_full_refresh = - participantPtr->getDomainParticipant()->create_contentfilteredtopic( - "FILTERED_MDC_FULL_REFRESH", - market_data_snapshot_full_refresh_topic, targetCompIdFilter.c_str(), - DDS::StringSeq()); - - DDS::ContentFilteredTopic_ptr cft_order_cancel_reject = - participantPtr->getDomainParticipant()->create_contentfilteredtopic( - "FILTERED_ORDER_CANCEL_REJECT", order_cancel_reject_topic, - targetCompIdFilter.c_str(), DDS::StringSeq()); - - DDS::ContentFilteredTopic_ptr cft_order_mass_cancel_report = - participantPtr->getDomainParticipant()->create_contentfilteredtopic( - "FILTERED_ORDER_MASS_CANCEL", order_mass_cancel_report_topic, - targetCompIdFilter.c_str(), DDS::StringSeq()); - - // - // Data Listeners - // - DDS::DataReaderListener_var logonDataListener( - new DistributedATS::LogonDataReaderListenerImpl(application)); - DDS::DataReaderListener_var logoutDataListener( - new DistributedATS::LogoutDataReaderListenerImpl(application)); - DDS::DataReaderListener_var executionReportDataListener( - new DistributedATS::ExecutionReportDataReaderListenerImpl(application)); - DDS::DataReaderListener_var marketDataIncrementalRefreshtDataListener( - new DistributedATS:: - MarketDataIncrementalRefreshDataReaderListenerImpl(application)); - DDS::DataReaderListener_var marketDataSnapdshotFullRefreshtDataListener( - new DistributedATS:: - MarketDataSnapshotFullRefreshDataReaderListenerImpl(application)); - DDS::DataReaderListener_var orderCancelRejectDataListener( - new DistributedATS::OrderCancelRejectDataReaderListenerImpl(application)); - DDS::DataReaderListener_var orderMassCancelReportDataListener( - new DistributedATS::OrderMassCancelReportDataReaderListenerImpl(application)); - DDS::DataReaderListener_var securityListReportDataListener( - new DistributedATS::SecurityListDataReaderListenerImpl(application)); - - participantPtr->createDataReaderListener(cft_logon, logonDataListener); - participantPtr->createDataReaderListener(cft_logout, logoutDataListener); - participantPtr->createDataReaderListener(cft_exec_report, - executionReportDataListener); - participantPtr->createDataReaderListener( - market_data_incremental_refresh_topic, - marketDataIncrementalRefreshtDataListener); - participantPtr->createDataReaderListener( - cft_mdc_full_refresh, marketDataSnapdshotFullRefreshtDataListener); - participantPtr->createDataReaderListener(cft_order_cancel_reject, - orderCancelRejectDataListener); - participantPtr->createDataReaderListener(cft_order_mass_cancel_report, - orderMassCancelReportDataListener); - participantPtr->createDataReaderListener(cft_ref_data, - securityListReportDataListener); + + _order_mass_cancel_report_data_reader_tuple = participant_ptr->make_data_reader_tuple(_order_mass_cancel_report_topic_tuple, + new DistributedATS::OrderMassCancelReportDataReaderListenerImpl(application), + "FILTERED_ORDER_MASS_CANCEL", target_comp_id_filter, {gateway_name}); }; }; }; // namespace DistributedATS -#endif /* DataReaderContainer_h */ diff --git a/FIXGateway/src/DataWriterContainer.hpp b/FIXGateway/src/DataWriterContainer.hpp index 814ce09..b188ba7 100644 --- a/FIXGateway/src/DataWriterContainer.hpp +++ b/FIXGateway/src/DataWriterContainer.hpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,144 +25,133 @@ SOFTWARE. */ -#ifndef DataWriterContainer_hpp -#define DataWriterContainer_hpp +#pragma once -#include - -#include -#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + namespace DistributedATS { struct DataWriterContrainer { + + distributed_ats_utils::topic_tuple_ptr _logon_topic_tuple; + distributed_ats_utils::topic_tuple_ptr _new_order_single_topic_tuple; + distributed_ats_utils::topic_tuple_ptr _order_cancel_request_topic_tuple; + distributed_ats_utils::topic_tuple_ptr _order_mass_cancel_request_topic_tuple; + distributed_ats_utils::topic_tuple_ptr _order_mass_status_request_topic_tuple; + distributed_ats_utils::topic_tuple_ptr _security_list_request_topic_tuple; + distributed_ats_utils::topic_tuple_ptr _security_list_topic_tuple; + distributed_ats_utils::topic_tuple_ptr _market_data_request_topic_tuple; + distributed_ats_utils::topic_tuple_ptr _order_cancel_replace_request_topic_tuple; + + distributed_ats_utils::data_writer_ptr _logon_dw; + distributed_ats_utils::data_writer_ptr _new_order_single_dw; + distributed_ats_utils::data_writer_ptr _order_cancel_request_dw; + distributed_ats_utils::data_writer_ptr _order_mass_cancel_request_dw; + distributed_ats_utils::data_writer_ptr _security_list_request_dw; + distributed_ats_utils::data_writer_ptr _market_data_request_dw; + distributed_ats_utils::data_writer_ptr _order_mass_status_request_dw; + distributed_ats_utils::data_writer_ptr _order_cancel_replace_request_dw; + + DataWriterContrainer( - distributed_ats_utils::BasicDomainParticipantPtr participantPtr) { + distributed_ats_utils::basic_domain_participant_ptr participant_ptr) { // // Topics // - DDS::Topic_var logon_topic = participantPtr->createTopicAndRegisterType< - DistributedATS_Logon::LogonTypeSupport_var, DistributedATS_Logon::LogonTypeSupportImpl>( + _logon_topic_tuple = participant_ptr->make_topic< + DistributedATS_Logon::LogonPubSubType, + DistributedATS_Logon::Logon>( LOGON_TOPIC_NAME); + + _logon_dw = participant_ptr->make_data_writer(_logon_topic_tuple); + - DDS::Topic_var new_order_single_topic = - participantPtr->createTopicAndRegisterType< - DistributedATS_NewOrderSingle::NewOrderSingleTypeSupport_var, - DistributedATS_NewOrderSingle::NewOrderSingleTypeSupportImpl>( + _new_order_single_topic_tuple = + participant_ptr->make_topic< + DistributedATS_NewOrderSingle::NewOrderSinglePubSubType, + DistributedATS_NewOrderSingle::NewOrderSingle>( NEW_ORDER_SINGLE_TOPIC_NAME); - DDS::Topic_var order_cancel_request_topic = - participantPtr->createTopicAndRegisterType< - DistributedATS_OrderCancelRequest::OrderCancelRequestTypeSupport_var, - DistributedATS_OrderCancelRequest::OrderCancelRequestTypeSupportImpl>( + _new_order_single_dw = participant_ptr->make_data_writer(_new_order_single_topic_tuple); + + _order_cancel_request_topic_tuple = + participant_ptr->make_topic< + DistributedATS_OrderCancelRequest::OrderCancelRequestPubSubType, + DistributedATS_OrderCancelRequest::OrderCancelRequest>( ORDER_CANCEL_REQUEST_TOPIC_NAME); + + + _order_cancel_request_dw = participant_ptr->make_data_writer(_order_cancel_request_topic_tuple); - DDS::Topic_var order_mass_cancel_request_topic = - participantPtr->createTopicAndRegisterType< - DistributedATS_OrderMassCancelRequest::OrderMassCancelRequestTypeSupport_var, - DistributedATS_OrderMassCancelRequest::OrderMassCancelRequestTypeSupportImpl>( + _order_mass_cancel_request_topic_tuple = + participant_ptr->make_topic< + DistributedATS_OrderMassCancelRequest::OrderMassCancelRequestPubSubType, + DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest>( ORDER_MASS_CANCEL_REQUEST_TOPIC_NAME); + - DDS::Topic_var order_mass_status_request_topic = - participantPtr->createTopicAndRegisterType< - DistributedATS_OrderMassStatusRequest::OrderMassStatusRequestTypeSupport_var, - DistributedATS_OrderMassStatusRequest::OrderMassStatusRequestTypeSupportImpl>( - ORDER_MASS_STATUS_REQUEST_TOPIC_NAME); + _order_mass_cancel_request_dw = participant_ptr->make_data_writer(_order_mass_cancel_request_topic_tuple); - DDS::Topic_var security_list_request_topic = - participantPtr->createTopicAndRegisterType< - DistributedATS_SecurityListRequest::SecurityListRequestTypeSupport_var, - DistributedATS_SecurityListRequest::SecurityListRequestTypeSupportImpl>( - SECURITY_LIST_REQUEST_TOPIC_NAME); + _order_cancel_replace_request_topic_tuple = + participant_ptr->make_topic< + DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequestPubSubType, + DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest>( + ORDER_CANCEL_REPLACE_REQUEST_TOPIC_NAME); + + _order_cancel_replace_request_dw = participant_ptr->make_data_writer(_order_cancel_replace_request_topic_tuple); + + _order_mass_status_request_topic_tuple = + participant_ptr->make_topic< + DistributedATS_OrderMassStatusRequest::OrderMassStatusRequestPubSubType, + DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest>( + ORDER_MASS_STATUS_REQUEST_TOPIC_NAME); - DDS::Topic_var market_data_request_topic = - participantPtr->createTopicAndRegisterType< - DistributedATS_MarketDataRequest::MarketDataRequestTypeSupport_var, - DistributedATS_MarketDataRequest::MarketDataRequestTypeSupportImpl>( - MARKET_DATA_REQUEST_TOPIC_NAME); + _order_mass_status_request_dw = participant_ptr->make_data_writer(_order_mass_status_request_topic_tuple); - DDS::Topic_var order_cancel_replace_request_topic = - participantPtr->createTopicAndRegisterType< - DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequestTypeSupport_var, - DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequestTypeSupportImpl>( - ORDER_CANCEL_REPLACE_REQUEST_TOPIC_NAME); - // - // Data Writers - // - _logonDataWriter = - participantPtr->createDataWriter( - logon_topic); - - _newOrderSingleDataWriter = - participantPtr - ->createDataWriter( - new_order_single_topic); - - _orderCancelRequestDataWriter = participantPtr->createDataWriter< - DistributedATS_OrderCancelRequest::OrderCancelRequestDataWriter_var, - DistributedATS_OrderCancelRequest::OrderCancelRequestDataWriter>( - order_cancel_request_topic); - - _orderMassCancelRequestDataWriter = participantPtr->createDataWriter< - DistributedATS_OrderMassCancelRequest::OrderMassCancelRequestDataWriter_var, - DistributedATS_OrderMassCancelRequest::OrderMassCancelRequestDataWriter>( - order_mass_cancel_request_topic); - - _orderMassStatusRequestDataWriter = participantPtr->createDataWriter< - DistributedATS_OrderMassStatusRequest::OrderMassStatusRequestDataWriter_var, - DistributedATS_OrderMassStatusRequest::OrderMassStatusRequestDataWriter>( - order_mass_status_request_topic); - - _securityListRequestDataWriter = participantPtr->createDataWriter< - DistributedATS_SecurityListRequest::SecurityListRequestDataWriter_var, - DistributedATS_SecurityListRequest::SecurityListRequestDataWriter>( - security_list_request_topic); - - _marketDataRequestDataWriter = participantPtr->createDataWriter< - DistributedATS_MarketDataRequest::MarketDataRequestDataWriter_var, - DistributedATS_MarketDataRequest::MarketDataRequestDataWriter>( - market_data_request_topic); + _security_list_request_topic_tuple = + participant_ptr->make_topic< + DistributedATS_SecurityListRequest::SecurityListRequestPubSubType, + DistributedATS_SecurityListRequest::SecurityListRequest>( + SECURITY_LIST_REQUEST_TOPIC_NAME); - _orderCancelReplaceRequestDataWriter = participantPtr->createDataWriter< - DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequestDataWriter_var, - DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequestDataWriter>(order_cancel_replace_request_topic); - } + + _security_list_request_dw = participant_ptr->make_data_writer(_security_list_request_topic_tuple); + + _market_data_request_topic_tuple = + participant_ptr->make_topic< + DistributedATS_MarketDataRequest::MarketDataRequestPubSubType, + DistributedATS_MarketDataRequest::MarketDataRequest>( + MARKET_DATA_REQUEST_TOPIC_NAME); - DistributedATS_Logon::LogonDataWriter_var _logonDataWriter; - DistributedATS_NewOrderSingle::NewOrderSingleDataWriter_var _newOrderSingleDataWriter; - DistributedATS_OrderCancelRequest::OrderCancelRequestDataWriter_ptr - _orderCancelRequestDataWriter; - DistributedATS_OrderMassCancelRequest::OrderMassCancelRequestDataWriter_ptr - _orderMassCancelRequestDataWriter; - DistributedATS_SecurityListRequest::SecurityListRequestDataWriter_ptr - _securityListRequestDataWriter; - DistributedATS_MarketDataRequest::MarketDataRequestDataWriter_ptr - _marketDataRequestDataWriter; - DistributedATS_OrderMassStatusRequest::OrderMassStatusRequestDataWriter_ptr - _orderMassStatusRequestDataWriter; + _market_data_request_dw = participant_ptr->make_data_writer(_market_data_request_topic_tuple); + + } - DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequestDataWriter_ptr - _orderCancelReplaceRequestDataWriter; }; -}; // namespace DistributedATS +using DataWriterContrainerPtr = std::shared_ptr; -#endif /* DataWriterSingleton_hpp */ +}; diff --git a/FIXGateway/src/ExecutionReportDataReaderListenerImpl.cpp b/FIXGateway/src/ExecutionReportDataReaderListenerImpl.cpp index 2f65495..a751036 100644 --- a/FIXGateway/src/ExecutionReportDataReaderListenerImpl.cpp +++ b/FIXGateway/src/ExecutionReportDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,77 +26,54 @@ */ #include - #include - #include "ExecutionReportDataReaderListenerImpl.h" +#include +#include +#include +#include -#include "Application.hpp" +#include +#include -#include +#include "Application.hpp" auto const exec_report_processor = [] (DistributedATS::DATSApplication &application, DistributedATS_ExecutionReport::ExecutionReport& executionReport) { FIX::Message executionReportMessage; - executionReport.m_Header.SendingTime = 0; // this is precision; -- TODO: move to auto gen - executionReport.m_Header.BeginString = CORBA::string_dup("FIX.4.4"); - executionReport.m_Header.SenderCompID = executionReport.m_Header.SenderSubID; + + executionReport.fix_header().BeginString("FIX.4.4"); + executionReport.fix_header().TargetCompID(executionReport.DATS_Destination()); + executionReport.fix_header().SenderCompID(executionReport.DATS_DestinationUser()); + executionReport.fix_header().SendingTime(0); + ExecutionReportAdapter::DDS2FIX(executionReport, executionReportMessage); - DATSApplication::publishToClient(executionReportMessage); + DistributedATS::DATSApplication::publishToClient(executionReportMessage); }; namespace DistributedATS { ExecutionReportDataReaderListenerImpl::ExecutionReportDataReaderListenerImpl(DistributedATS::DATSApplication &application) - : _processor(application, exec_report_processor, 100) + : _processor(application, exec_report_processor, "ExecutionReportDataReaderListenerImpl", 100) { } void ExecutionReportDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_ExecutionReport::ExecutionReportDataReader_var execution_report_dr = - DistributedATS_ExecutionReport::ExecutionReportDataReader::_narrow(reader); - - if (CORBA::is_nil(execution_report_dr.in())) { - std::cerr << "ExecutionReportDataReaderListenerImpl::on_data_available: " - "_narrow failed." - << std::endl; - ACE_OS::exit(1); - } - - while (true) { - DistributedATS_ExecutionReport::ExecutionReport executionReport; - DDS::SampleInfo si; - DDS::ReturnCode_t status = - execution_report_dr->take_next_sample(executionReport, si); - - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; - - /* - std::stringstream ss; - ExecutionReportLogger::log(ss, executionReport); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) Received Execution Report : %s\n"), ss.str().c_str())); - */ - - _processor.enqueue_dds_message(executionReport); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::ExecutionReport: Error: " << status - << std::endl; - } + eprosima::fastdds::dds::DataReader* reader) +{ + DistributedATS_ExecutionReport::ExecutionReport executionReport; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&executionReport, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + _processor.enqueue_dds_message(executionReport); + } } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } + } } // namespace DistributedATS diff --git a/FIXGateway/src/ExecutionReportDataReaderListenerImpl.h b/FIXGateway/src/ExecutionReportDataReaderListenerImpl.h index 81d863d..52a3200 100644 --- a/FIXGateway/src/ExecutionReportDataReaderListenerImpl.h +++ b/FIXGateway/src/ExecutionReportDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,63 +25,37 @@ SOFTWARE. */ -#ifndef EXECUTIONREPORTDATAREADERLISTENERIMPL_H_ -#define EXECUTIONREPORTDATAREADERLISTENERIMPL_H_ +#pragma once -#include -//#include #include +#include "FIXMsgComposerThread.h" +#include -//#include +#include +#include +#include +#include +#include +#include -//#include "Application.hpp" +#include -#include "FIXMsgComposerThread.h" +#include "Application.hpp" namespace DistributedATS { class ExecutionReportDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { -public: - ExecutionReportDataReaderListenerImpl(DistributedATS::DATSApplication &application); - virtual ~ExecutionReportDataReaderListenerImpl() {}; - - - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); + : public eprosima::fastdds::dds::DataReaderListener { + public: + ExecutionReportDataReaderListenerImpl(DistributedATS::DATSApplication &application); + ~ExecutionReportDataReaderListenerImpl() override {}; - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; + void on_data_available(eprosima::fastdds::dds::DataReader* reader) override; - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; - - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; private: fix_message_composer_thread _processor; }; } // namespace DistributedATS - -#endif /* EXECUTIONREPORTDATAREADERLISTENERIMPL_H_ */ diff --git a/FIXGateway/src/FIXGateway.mpc b/FIXGateway/src/FIXGateway.mpc deleted file mode 100644 index a2a9013..0000000 --- a/FIXGateway/src/FIXGateway.mpc +++ /dev/null @@ -1,40 +0,0 @@ -project(FIXGateway) : dcpsexe, dcps_tcp, svc_utils { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - requires += tao_orbsvcs - after += Svc_Utils Adapters Logon Logout NewOrderSingle ExecutionReport MarketDataIncrementalRefresh OrderCancelRequest OrderCancelReject OrderMassCancelRequest OrderMassCancelReport SecurityListRequest SecurityList MarketDataRequest MarketDataSnapshotFullRefresh OrderMassStatusRequest - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - exeout = $(DATS_HOME)/bin - exename = * - requires += tao_orbsvcs - - includes += $(TAO_ROOT)/orbsvcs $(QUICKFIX_HOME)/include $(DATS_HOME)/GenTools/idl/ $(DATS_HOME)/Common - libpaths += $(QUICKFIX_HOME)/lib $(DATS_HOME)/lib - - after += Svc_Utils - - libs += quickfix Adapters Logon Logout NewOrderSingle ExecutionReport MarketDataIncrementalRefresh OrderCancelRequest OrderCancelReject OrderMassCancelRequest OrderMassCancelReport SecurityListRequest SecurityList MarketDataRequest MarketDataSnapshotFullRefresh OrderMassStatusRequest OrderCancelReplaceRequest BusinessMessageReject Heartbeat - - Source_Files { - main.cpp - Application.cpp - SocketAcceptor.cpp - SocketConnection.cpp - LogonDataReaderListenerImpl.cpp - ExecutionReportDataReaderListenerImpl.cpp - LogoutDataReaderListenerImpl.cpp - MarketDataIncrementalRefreshDataReaderListenerImpl.cpp - MarketDataSnapshotFullRefreshDataReaderListenerImpl.cpp - OrderCancelRejectDataReaderListenerImpl.cpp - OrderMassCancelReportDataReaderListenerImpl.cpp - SecurityListDataReaderListenerImpl.cpp - AuthServiceHelper.cpp - FileLog.cpp - } -} - diff --git a/FIXGateway/src/FIXMsgComposerThread.h b/FIXGateway/src/FIXMsgComposerThread.h index beac1ae..24e2f9c 100644 --- a/FIXGateway/src/FIXMsgComposerThread.h +++ b/FIXGateway/src/FIXMsgComposerThread.h @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,8 +25,7 @@ SOFTWARE. */ -#ifndef FIXMsgComposerThread_h -#define FIXMsgComposerThread_h +#pragma once #include #include "ConcurrentQueue.h" @@ -39,8 +38,13 @@ class fix_message_composer_thread { public: - fix_message_composer_thread(DistributedATS::DATSApplication& application, std::function< void(DistributedATS::DATSApplication&, TT&) >&& processor, unsigned long wait_timeout_us = 1000) : _processor(processor), _wait_timeout_us(wait_timeout_us) + fix_message_composer_thread(DistributedATS::DATSApplication& application, std::function< void(DistributedATS::DATSApplication&, TT&) >&& processor, const std::string& name, + unsigned long wait_timeout_us = 1000) : _processor(processor), _name(name), _wait_timeout_us(wait_timeout_us) { + + LOG4CXX_INFO(logger, "Starting processor : [" << _name << "]"); + + _done.store(false); _fix_publisher_thread = std::thread([&](){ while(!_done.load()) @@ -48,12 +52,16 @@ class fix_message_composer_thread TT dds_message; while(_dds_msg_queue.try_pop(dds_message)) { + LOG4CXX_INFO(logger, "Processing: [" << _name << "]"); _processor(application, dds_message); + LOG4CXX_INFO(logger, "Processed: [" << _name << "]"); } std::this_thread::sleep_for(std::chrono::microseconds(_wait_timeout_us)); } - + + LOG4CXX_INFO(logger, "Exiting processes: [" << _name << "]"); + }); }; @@ -64,9 +72,13 @@ class fix_message_composer_thread virtual ~fix_message_composer_thread() { + LOG4CXX_INFO(logger, "Stopping processor : [" << _name << "]"); + _done.store(true); _fix_publisher_thread.join(); + + LOG4CXX_INFO(logger, "Stopped processor"); }; private: @@ -77,10 +89,10 @@ class fix_message_composer_thread unsigned long _wait_timeout_us; + std::string _name; + std::function< void(DistributedATS::DATSApplication&, TT&)> _processor; }; } - -#endif /* FIXMsgComposerThread_h */ diff --git a/FIXGateway/src/FileLog.cpp b/FIXGateway/src/FileLog.cpp index ff72f6d..85a4958 100644 --- a/FIXGateway/src/FileLog.cpp +++ b/FIXGateway/src/FileLog.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/FIXGateway/src/FileLog.h b/FIXGateway/src/FileLog.h index c0b2380..496ef63 100644 --- a/FIXGateway/src/FileLog.h +++ b/FIXGateway/src/FileLog.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,8 +25,7 @@ SOFTWARE. */ -#ifndef FIX_FILELOG_H -#define FIX_FILELOG_H +#pragma once #include #include @@ -40,28 +39,28 @@ namespace DistributedATS { */ class FileLogFactory : public FIX::LogFactory { public: - FileLogFactory(const FIX::SessionSettings &settings, std::string fix_prefix) - : m_settings(settings), m_globalLog(0), m_globalLogCount(0), - m_fix_prefix(fix_prefix){}; - FileLogFactory(const std::string &path) - : m_path(path), m_backupPath(path), m_globalLog(0), m_globalLogCount(0){}; - FileLogFactory(const std::string &path, const std::string &backupPath) - : m_path(path), m_backupPath(backupPath), m_globalLog(0), - m_globalLogCount(0){}; - + FileLogFactory(const FIX::SessionSettings &settings, std::string fix_prefix) + : m_settings(settings), m_globalLog(0), m_globalLogCount(0), + m_fix_prefix(fix_prefix){}; + FileLogFactory(const std::string &path) + : m_path(path), m_backupPath(path), m_globalLog(0), m_globalLogCount(0){}; + FileLogFactory(const std::string &path, const std::string &backupPath) + : m_path(path), m_backupPath(backupPath), m_globalLog(0), + m_globalLogCount(0){}; + public: - FIX::Log *create(); - FIX::Log *create(const FIX::SessionID &); - void destroy(FIX::Log *log); - + FIX::Log *create(); + FIX::Log *create(const FIX::SessionID &); + void destroy(FIX::Log *log); + private: - std::string m_path; - std::string m_backupPath; - FIX::SessionSettings m_settings; - FIX::Log *m_globalLog; - int m_globalLogCount; - - std::string m_fix_prefix; + std::string m_path; + std::string m_backupPath; + FIX::SessionSettings m_settings; + FIX::Log *m_globalLog; + int m_globalLogCount; + + std::string m_fix_prefix; }; /** @@ -73,45 +72,44 @@ class FileLogFactory : public FIX::LogFactory { */ class FileLog : public FIX::Log { public: - FileLog(const std::string &path, const std::string &); - FileLog(const std::string &path, const std::string &backupPath, - const std::string &); - FileLog(const std::string &path, const FIX::SessionID &sessionID, - const std::string &); - FileLog(const std::string &path, const std::string &backupPath, - const FIX::SessionID &sessionID, const std::string &); - virtual ~FileLog(); - - void clear(); - void backup(); - - void onIncoming(const std::string &value) { - m_messages << FIX::UtcTimeStampConvertor::convert(FIX::UtcTimeStamp(), 9) - << " : " << value << std::endl; - } - void onOutgoing(const std::string &value) { - m_messages << FIX::UtcTimeStampConvertor::convert(FIX::UtcTimeStamp(), 9) - << " : " << value << std::endl; - } - void onEvent(const std::string &value) { - FIX::UtcTimeStamp now; - m_event << FIX::UtcTimeStampConvertor::convert(now, 9) << " : " << value - << std::endl; - } - + FileLog(const std::string &path, const std::string &); + FileLog(const std::string &path, const std::string &backupPath, + const std::string &); + FileLog(const std::string &path, const FIX::SessionID &sessionID, + const std::string &); + FileLog(const std::string &path, const std::string &backupPath, + const FIX::SessionID &sessionID, const std::string &); + virtual ~FileLog(); + + void clear(); + void backup(); + + void onIncoming(const std::string &value) { + m_messages << FIX::UtcTimeStampConvertor::convert(FIX::UtcTimeStamp(), 9) + << " : " << value << std::endl; + } + void onOutgoing(const std::string &value) { + m_messages << FIX::UtcTimeStampConvertor::convert(FIX::UtcTimeStamp(), 9) + << " : " << value << std::endl; + } + void onEvent(const std::string &value) { + FIX::UtcTimeStamp now; + m_event << FIX::UtcTimeStampConvertor::convert(now, 9) << " : " << value + << std::endl; + } + private: - std::string generatePrefix(const std::string &filePrefix, - const FIX::SessionID &sessionID); - void init(std::string path, std::string backupPath, - const std::string &prefix); - - std::ofstream m_messages; - std::ofstream m_event; - std::string m_messagesFileName; - std::string m_eventFileName; - std::string m_fullPrefix; - std::string m_fullBackupPrefix; + std::string generatePrefix(const std::string &filePrefix, + const FIX::SessionID &sessionID); + void init(std::string path, std::string backupPath, + const std::string &prefix); + + std::ofstream m_messages; + std::ofstream m_event; + std::string m_messagesFileName; + std::string m_eventFileName; + std::string m_fullPrefix; + std::string m_fullBackupPrefix; }; -} // namespace DistributedATS -#endif // FIX_LOG_H +} // namespace DistributedATS diff --git a/FIXGateway/src/LogonDataReaderListenerImpl.cpp b/FIXGateway/src/LogonDataReaderListenerImpl.cpp index 137ba9d..7a6d430 100644 --- a/FIXGateway/src/LogonDataReaderListenerImpl.cpp +++ b/FIXGateway/src/LogonDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -28,8 +28,13 @@ #include "LogonDataReaderListenerImpl.hpp" #include #include -#include #include +#include +#include +#include +#include + + namespace DistributedATS { @@ -38,17 +43,17 @@ auto const logon_processor = [] (DistributedATS::DATSApplication &application, D { std::stringstream ss; LogonLogger::log(ss, logon); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) Data Reader Logon : %s\n"), - ss.str().c_str())); - + + std::cout << "Data Reader Logon : " << ss.str() << std::endl; + + LOG4CXX_INFO(logger, "Data Reader Logon : [" << ss.str() << "]"); + FIX::Message logonMessage; - logon.m_Header.SendingTime = 0; // this is precision; - std::string logonSenderCompID = logon.m_Header.TargetSubID.in(); - - logon.m_Header.SenderCompID = logon.m_Header.TargetCompID; - logon.m_Header.TargetCompID = logonSenderCompID.c_str(); - logon.RawData = logon.RawData; // Session Ticker/Identifier + logon.fix_header().SendingTime(0); // this is precision; + //logon.fix_header().SenderCompID(logon.DATS_Destination()); + logon.fix_header().TargetSubID(logon.DATS_DestinationUser()); + LogonAdapter::DDS2FIX(logon, logonMessage); application.processDDSLogon(logonMessage); }; @@ -56,44 +61,23 @@ auto const logon_processor = [] (DistributedATS::DATSApplication &application, D LogonDataReaderListenerImpl::LogonDataReaderListenerImpl(DistributedATS::DATSApplication &application) - : _processor(application, logon_processor) + : _processor(application, logon_processor, "LogonDataReaderListenerImpl") { }; void LogonDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_Logon::LogonDataReader_var logon_dr = - DistributedATS_Logon::LogonDataReader::_narrow(reader); - - if (CORBA::is_nil(logon_dr.in())) { - std::cerr - << "LogonDataReaderListenerImpl::on_data_available: _narrow failed." - << std::endl; - ACE_OS::exit(1); - } - - while (true) { - DistributedATS_Logon::Logon logon; - DDS::SampleInfo si; - DDS::ReturnCode_t status = logon_dr->take_next_sample(logon, si); - - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; - - _processor.enqueue_dds_message(logon); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logon: Error: " << status << std::endl; - } + eprosima::fastdds::dds::DataReader* reader) +{ + + DistributedATS_Logon::Logon logon; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&logon, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + _processor.enqueue_dds_message(logon); + } } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } } }; // namespace DistributedATS diff --git a/FIXGateway/src/LogonDataReaderListenerImpl.hpp b/FIXGateway/src/LogonDataReaderListenerImpl.hpp index 3624695..257bad2 100644 --- a/FIXGateway/src/LogonDataReaderListenerImpl.hpp +++ b/FIXGateway/src/LogonDataReaderListenerImpl.hpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,61 +25,33 @@ SOFTWARE. */ -#ifndef LogonDataReaderListenerImpl_hpp -#define LogonDataReaderListenerImpl_hpp +#pragma once #include -#include #include #include "Application.hpp" #include "FIXMsgComposerThread.h" +#include +#include +#include + namespace DistributedATS { class LogonDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: LogonDataReaderListenerImpl(DistributedATS::DATSApplication &application); - virtual ~LogonDataReaderListenerImpl(){}; - - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); - - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; + ~LogonDataReaderListenerImpl() override {}; - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; + void on_data_available(eprosima::fastdds::dds::DataReader* reader) override; - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; - - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; private: fix_message_composer_thread _processor; }; } // namespace DistributedATS - -#endif /* LogonDataReaderListenerImpl_hpp */ diff --git a/FIXGateway/src/LogoutDataReaderListenerImpl.cpp b/FIXGateway/src/LogoutDataReaderListenerImpl.cpp index 3525e7a..fee00e3 100644 --- a/FIXGateway/src/LogoutDataReaderListenerImpl.cpp +++ b/FIXGateway/src/LogoutDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -28,9 +28,18 @@ #include "LogoutDataReaderListenerImpl.hpp" #include #include -#include #include +#include +#include +#include +#include + +#include +#include + +//static auto logger = log4cxx::Logger::getRootLogger(); + namespace DistributedATS { @@ -38,67 +47,40 @@ auto const logout_processor = [] (DistributedATS::DATSApplication &application, { std::stringstream ss; LogoutLogger::log(ss, logout); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t|%D) Data Reader Logout : %s\n"), - ss.str().c_str())); + + LOG4CXX_INFO(logger, "Data Reader Logout : [" << ss.str() << "]"); FIX::Message logoutMessage; - logout.m_Header.SendingTime = 0; + logout.fix_header().SendingTime(0); LogoutAdapter::DDS2FIX(logout, logoutMessage); - std::string connectionToken = - logout.m_Header.TargetSubID - .in(); // Kludge : Connection token is populated in RawData in - // Logon message, but because there is no RawData in - // Logout message, DataService populates TargetSubID with - // the Connection Token of the session that needs to be - // Logged out and disconnected in case of invalid - // credentials. + std::string connectionToken = logout.DATS_DestinationUser(); application.processDDSLogout(connectionToken, logoutMessage); }; LogoutDataReaderListenerImpl::LogoutDataReaderListenerImpl(DistributedATS::DATSApplication &application) - : _processor(application, logout_processor) + : _processor(application, logout_processor, "LogoutDataReaderListenerImpl") { }; void LogoutDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_Logout::LogoutDataReader_var logout_dr = - DistributedATS_Logout::LogoutDataReader::_narrow(reader); - - if (CORBA::is_nil(logout_dr.in())) { - std::cerr - << "LogoutDataReaderListenerImpl::on_data_available: _narrow failed." - << std::endl; - ACE_OS::exit(1); - } - - while (true) { - DistributedATS_Logout::Logout logout; - DDS::SampleInfo si; - DDS::ReturnCode_t status = logout_dr->take_next_sample(logout, si); - - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; - - _processor.enqueue_dds_message(logout); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logout: Error: " << status << std::endl; - } + eprosima::fastdds::dds::DataReader* reader) +{ + + DistributedATS_Logout::Logout logout; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&logout, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + _processor.enqueue_dds_message(logout); + } } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } + } }; // namespace DistributedATS diff --git a/FIXGateway/src/LogoutDataReaderListenerImpl.hpp b/FIXGateway/src/LogoutDataReaderListenerImpl.hpp index d0f015f..8d772f3 100644 --- a/FIXGateway/src/LogoutDataReaderListenerImpl.hpp +++ b/FIXGateway/src/LogoutDataReaderListenerImpl.hpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,55 +25,28 @@ SOFTWARE. */ -#ifndef LogoutDataReaderListenerImpl_hpp -#define LogoutDataReaderListenerImpl_hpp +#pragma once #include -#include #include #include "FIXMsgComposerThread.h" #include "Application.hpp" +#include +#include + namespace DistributedATS { class LogoutDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: LogoutDataReaderListenerImpl(DistributedATS::DATSApplication &application); - ~LogoutDataReaderListenerImpl(){}; - - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); - - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; + ~LogoutDataReaderListenerImpl() override {}; - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; + virtual void on_data_available(eprosima::fastdds::dds::DataReader* reader) override; - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; - - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; private: fix_message_composer_thread _processor; @@ -81,5 +54,3 @@ class LogoutDataReaderListenerImpl }; }; // namespace DistributedATS - -#endif /* LogoutDataReaderListenerImpl_hpp */ diff --git a/FIXGateway/src/MarketDataIncrementalRefreshDataReaderListenerImpl.cpp b/FIXGateway/src/MarketDataIncrementalRefreshDataReaderListenerImpl.cpp index 73ac09c..c8b2e64 100644 --- a/FIXGateway/src/MarketDataIncrementalRefreshDataReaderListenerImpl.cpp +++ b/FIXGateway/src/MarketDataIncrementalRefreshDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,39 +25,51 @@ SOFTWARE. */ -#include "MarketDataIncrementalRefreshDataReaderListenerImpl.h" + #include #include +#include "MarketDataIncrementalRefreshDataReaderListenerImpl.h" + +#include +#include +#include +#include +#include +#include +#include #include + +#include "Application.hpp" + namespace DistributedATS { auto const market_data_refresh_processor = [] (DistributedATS::DATSApplication &application, DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& marketDataRefresh) { FIX::Message marketDataIncementalRefreshMessage; - marketDataRefresh.m_Header.SendingTime = 0; // this is precision; - HeaderAdapter::DDS2FIX(marketDataRefresh.m_Header, + marketDataRefresh.fix_header().SendingTime(0); // this is precision; + HeaderAdapter::DDS2FIX(marketDataRefresh.fix_header(), marketDataIncementalRefreshMessage.getHeader()); for (int incremental_update = 0; - incremental_update < marketDataRefresh.c_NoMDEntries.length(); + incremental_update < marketDataRefresh.c_NoMDEntries().size(); incremental_update++) { DistributedATS_MarketDataIncrementalRefresh::NoMDEntries mdEntry = - marketDataRefresh.c_NoMDEntries[incremental_update]; + marketDataRefresh.c_NoMDEntries()[incremental_update]; - if (mdEntry.MDUpdateAction == 0) + if (mdEntry.MDUpdateAction() == 0) continue; FIX50::MarketDataIncrementalRefresh::NoMDEntries fixMDEntry; - FIX::MDUpdateAction updateAction(mdEntry.MDUpdateAction); - FIX::Symbol symbol(mdEntry.Symbol.in()); - FIX::SecurityExchange securityExchange(mdEntry.SecurityExchange.in()); - FIX::MDEntryType entryType(mdEntry.MDEntryType); - FIX::MDEntryPx entryPx(mdEntry.MDEntryPx); - FIX::MDEntrySize entrySize(mdEntry.MDEntrySize); + FIX::MDUpdateAction updateAction(mdEntry.MDUpdateAction()); + FIX::Symbol symbol(mdEntry.Symbol()); + FIX::SecurityExchange securityExchange(mdEntry.SecurityExchange()); + FIX::MDEntryType entryType(mdEntry.MDEntryType()); + FIX::MDEntryPx entryPx(mdEntry.MDEntryPx()); + FIX::MDEntrySize entrySize(mdEntry.MDEntrySize()); fixMDEntry.setField(updateAction); fixMDEntry.setField(symbol); @@ -73,52 +85,27 @@ auto const market_data_refresh_processor = [] (DistributedATS::DATSApplication & }; -MarketDataIncrementalRefreshDataReaderListenerImpl::MarketDataIncrementalRefreshDataReaderListenerImpl(DistributedATS::DATSApplication &application) : _processor(application, market_data_refresh_processor ) +MarketDataIncrementalRefreshDataReaderListenerImpl::MarketDataIncrementalRefreshDataReaderListenerImpl(DistributedATS::DATSApplication &application) : + _processor(application, market_data_refresh_processor, "MarketDataIncrementalRefreshDataReaderListenerImpl" ) { } void MarketDataIncrementalRefreshDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - - static int count = 0; - try { - DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefreshDataReader_var - market_data_incremental_refresh_dr = DistributedATS_MarketDataIncrementalRefresh:: - MarketDataIncrementalRefreshDataReader::_narrow(reader); - - if (CORBA::is_nil(market_data_incremental_refresh_dr.in())) { - std::cerr << "MarketDataIncrementalRefreshDataReaderListenerImpl::on_" - "data_available: _narrow failed." - << std::endl; - ACE_OS::exit(1); - } - - while (true) { - DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh - marketDataRefresh; - DDS::SampleInfo si; - DDS::ReturnCode_t status = - market_data_incremental_refresh_dr->take_next_sample( - marketDataRefresh, si); - - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; - - _processor.enqueue_dds_message(marketDataRefresh); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logon: Error: " << status << std::endl; - } - } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } + eprosima::fastdds::dds::DataReader* reader) +{ + + DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh + marketDataRefresh; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&marketDataRefresh, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + _processor.enqueue_dds_message(marketDataRefresh); + } + } } } // namespace DistributedATS diff --git a/FIXGateway/src/MarketDataIncrementalRefreshDataReaderListenerImpl.h b/FIXGateway/src/MarketDataIncrementalRefreshDataReaderListenerImpl.h index 9c3b786..bcf3061 100644 --- a/FIXGateway/src/MarketDataIncrementalRefreshDataReaderListenerImpl.h +++ b/FIXGateway/src/MarketDataIncrementalRefreshDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,55 +25,31 @@ SOFTWARE. */ -#ifndef MARKETDATAINCREMENTALREFRESHDATAREADERLISTENERIMPL_H_ -#define MARKETDATAINCREMENTALREFRESHDATAREADERLISTENERIMPL_H_ +#pragma once -#include +#include #include -#include "Application.hpp" +#include +#include +#include +#include +#include + +#include +#include "Application.hpp" #include "FIXMsgComposerThread.h" namespace DistributedATS { class MarketDataIncrementalRefreshDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: - virtual ~MarketDataIncrementalRefreshDataReaderListenerImpl() {}; - MarketDataIncrementalRefreshDataReaderListenerImpl(DistributedATS::DATSApplication &application); + ~MarketDataIncrementalRefreshDataReaderListenerImpl() override {}; - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); - - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; - - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; + void on_data_available(eprosima::fastdds::dds::DataReader* reader) override; private: @@ -81,5 +57,3 @@ class MarketDataIncrementalRefreshDataReaderListenerImpl }; } /* namespace DistributedATS */ - -#endif /* MARKETDATAINCREMENTALREFRESHDATAREADERLISTENERIMPL_H_ */ diff --git a/FIXGateway/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.cpp b/FIXGateway/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.cpp index 6f5982e..ef1ef16 100644 --- a/FIXGateway/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.cpp +++ b/FIXGateway/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -30,6 +30,12 @@ #include #include +#include +#include +#include +#include +#include + #include "Application.hpp" namespace DistributedATS { @@ -39,34 +45,33 @@ auto const market_data_full_snapshot_processor = [] (DistributedATS::DATSApplica { FIX::Message marketDataSnapshotFullRefreshMessage; - marketDataSnapshotFullRefresh.m_Header.SendingTime = - 0; // this is precision; - marketDataSnapshotFullRefresh.m_Header.SenderCompID = - marketDataSnapshotFullRefresh.m_Header.TargetSubID; - + marketDataSnapshotFullRefresh.fix_header().SendingTime(0); // this is precision; + marketDataSnapshotFullRefresh.fix_header().TargetCompID(marketDataSnapshotFullRefresh.DATS_Destination()); + marketDataSnapshotFullRefresh.fix_header().SenderCompID(marketDataSnapshotFullRefresh.DATS_DestinationUser()); + HeaderAdapter::DDS2FIX( - marketDataSnapshotFullRefresh.m_Header, + marketDataSnapshotFullRefresh.fix_header(), marketDataSnapshotFullRefreshMessage.getHeader()); - FIX::Symbol symbol(marketDataSnapshotFullRefresh.Symbol.in()); + FIX::Symbol symbol(marketDataSnapshotFullRefresh.Symbol()); FIX::SecurityExchange securityExchange( - marketDataSnapshotFullRefresh.SecurityExchange.in()); + marketDataSnapshotFullRefresh.SecurityExchange()); marketDataSnapshotFullRefreshMessage.setField(symbol); marketDataSnapshotFullRefreshMessage.setField(securityExchange); for (int snapshot_refresh = 0; snapshot_refresh < - marketDataSnapshotFullRefresh.c_NoMDEntries.length(); + marketDataSnapshotFullRefresh.c_NoMDEntries().size(); ++snapshot_refresh) { DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntries mdEntry = - marketDataSnapshotFullRefresh.c_NoMDEntries[snapshot_refresh]; + marketDataSnapshotFullRefresh.c_NoMDEntries()[snapshot_refresh]; FIX50::MarketDataSnapshotFullRefresh::NoMDEntries fixMDEntry; - FIX::MDEntryType entryType(mdEntry.MDEntryType); - FIX::MDEntryPx entryPx(mdEntry.MDEntryPx); - FIX::MDEntrySize entrySize(mdEntry.MDEntrySize); + FIX::MDEntryType entryType(mdEntry.MDEntryType()); + FIX::MDEntryPx entryPx(mdEntry.MDEntryPx()); + FIX::MDEntrySize entrySize(mdEntry.MDEntrySize()); fixMDEntry.setField(entryType); fixMDEntry.setField(entryPx); @@ -81,52 +86,34 @@ auto const market_data_full_snapshot_processor = [] (DistributedATS::DATSApplica -MarketDataSnapshotFullRefreshDataReaderListenerImpl::MarketDataSnapshotFullRefreshDataReaderListenerImpl(DistributedATS::DATSApplication &application) : _processor(application, market_data_full_snapshot_processor ) +MarketDataSnapshotFullRefreshDataReaderListenerImpl::MarketDataSnapshotFullRefreshDataReaderListenerImpl(DistributedATS::DATSApplication &application) : + _processor(application, market_data_full_snapshot_processor, + "MarketDataSnapshotFullRefreshDataReaderListenerImpl" ), + _fix_gateway_name(application.fix_gateway_name()) { } void MarketDataSnapshotFullRefreshDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_MarketDataSnapshotFullRefresh:: - MarketDataSnapshotFullRefreshDataReader_var - market_data_snapshot_full_refresh_dr = - DistributedATS_MarketDataSnapshotFullRefresh:: - MarketDataSnapshotFullRefreshDataReader::_narrow(reader); - - if (CORBA::is_nil(market_data_snapshot_full_refresh_dr.in())) { - std::cerr << "DATSMarketDataSnapshotFullRefreshDataReaderListenerImpl::" - "on_data_available: _narrow failed." - << std::endl; - ACE_OS::exit(1); - } + eprosima::fastdds::dds::DataReader* reader) +{ - while (true) { - DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh - marketDataSnapshotFullRefresh; - DDS::SampleInfo si; - DDS::ReturnCode_t status = - market_data_snapshot_full_refresh_dr->take_next_sample( - marketDataSnapshotFullRefresh, si); - - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; - - _processor.enqueue_dds_message(marketDataSnapshotFullRefresh); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logon: Error: " << status << std::endl; - } + DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh + marketDataSnapshotFullRefresh; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&marketDataSnapshotFullRefresh, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + std::stringstream ss; + MarketDataSnapshotFullRefreshLogger::log(ss, marketDataSnapshotFullRefresh); + LOG4CXX_INFO(logger, "marketDataSnapshotFullRefresh : [" << ss.str() << "]"); + + _processor.enqueue_dds_message(marketDataSnapshotFullRefresh); + } } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } + } } /* namespace DistributedATS */ diff --git a/FIXGateway/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.h b/FIXGateway/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.h index a8a0a9a..1f30ee5 100644 --- a/FIXGateway/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.h +++ b/FIXGateway/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,60 +25,32 @@ SOFTWARE. */ -#ifndef MARKETDATASNAPSHOTFULLREFRESHDATAREADERLISTENERIMPL_H_ -#define MARKETDATASNAPSHOTFULLREFRESHDATAREADERLISTENERIMPL_H_ +#pragma once -#include #include #include "Application.hpp" #include "FIXMsgComposerThread.h" +#include +#include namespace DistributedATS { class MarketDataSnapshotFullRefreshDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: MarketDataSnapshotFullRefreshDataReaderListenerImpl(DistributedATS::DATSApplication &application); - virtual ~MarketDataSnapshotFullRefreshDataReaderListenerImpl() {}; - - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); - - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; - - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; + ~MarketDataSnapshotFullRefreshDataReaderListenerImpl() override {}; + + void + on_data_available(eprosima::fastdds::dds::DataReader* reader) override; private: + + std::string _fix_gateway_name; fix_message_composer_thread _processor; }; } /* namespace DistributedATS */ - -#endif /* MARKETDATASNAPSHOTFULLREFRESHDATAREADERLISTENERIMPL_H_ */ diff --git a/FIXGateway/src/OrderCancelRejectDataReaderListenerImpl.cpp b/FIXGateway/src/OrderCancelRejectDataReaderListenerImpl.cpp index cc77a64..5dba701 100644 --- a/FIXGateway/src/OrderCancelRejectDataReaderListenerImpl.cpp +++ b/FIXGateway/src/OrderCancelRejectDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -28,6 +28,11 @@ #include "Application.hpp" #include #include +#include +#include +#include +#include +#include namespace DistributedATS { @@ -36,8 +41,8 @@ auto const order_cancel_reject_processor = [] (DistributedATS::DATSApplication & FIX::Message orderCancelRejectMessage; - orderCancelReject.m_Header.SendingTime = 0; // this is precision; - HeaderAdapter::DDS2FIX(orderCancelReject.m_Header, + orderCancelReject.fix_header().SendingTime(0); // this is precision; + HeaderAdapter::DDS2FIX(orderCancelReject.fix_header(), orderCancelRejectMessage.getHeader()); OrderCancelRejectAdapter::DDS2FIX(orderCancelReject, orderCancelRejectMessage); @@ -47,48 +52,25 @@ auto const order_cancel_reject_processor = [] (DistributedATS::DATSApplication & }; OrderCancelRejectDataReaderListenerImpl::OrderCancelRejectDataReaderListenerImpl(DistributedATS::DATSApplication &application) - :_processor(application, order_cancel_reject_processor, 100 ) + :_processor(application, order_cancel_reject_processor, "OrderCancelRejectDataReaderListenerImpl", 100 ) { }; void OrderCancelRejectDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_OrderCancelReject::OrderCancelRejectDataReader_var - order_cancel_reject_dr = - DistributedATS_OrderCancelReject::OrderCancelRejectDataReader::_narrow(reader); - - if (CORBA::is_nil(order_cancel_reject_dr.in())) { - std::cerr << "OrderCancelRejectDataReaderListenerImpl::on_data_available:" - " _narrow failed." - << std::endl; - ACE_OS::exit(1); - } - - while (true) { - DistributedATS_OrderCancelReject::OrderCancelReject orderCancelReject; - DDS::SampleInfo si; - DDS::ReturnCode_t status = - order_cancel_reject_dr->take_next_sample(orderCancelReject, si); - - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; - - _processor.enqueue_dds_message(orderCancelReject); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logon: Error: " << status << std::endl; - } - } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } + eprosima::fastdds::dds::DataReader* reader) +{ + + DistributedATS_OrderCancelReject::OrderCancelReject orderCancelReject; + eprosima::fastdds::dds::SampleInfo info; + if (reader->take_next_sample(&orderCancelReject, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + _processor.enqueue_dds_message(orderCancelReject); + } + } + } } /* namespace DistributedATS */ diff --git a/FIXGateway/src/OrderCancelRejectDataReaderListenerImpl.h b/FIXGateway/src/OrderCancelRejectDataReaderListenerImpl.h index 1dc6d89..6c20135 100644 --- a/FIXGateway/src/OrderCancelRejectDataReaderListenerImpl.h +++ b/FIXGateway/src/OrderCancelRejectDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,60 +25,30 @@ SOFTWARE. */ -#ifndef ORDERCANCELREJECTDATAREADERLISTENERIMPL_H_ -#define ORDERCANCELREJECTDATAREADERLISTENERIMPL_H_ +#pragma once -#include #include #include "Application.hpp" #include "FIXMsgComposerThread.h" +#include +#include +#include namespace DistributedATS { class OrderCancelRejectDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: OrderCancelRejectDataReaderListenerImpl(DistributedATS::DATSApplication &application); - virtual ~OrderCancelRejectDataReaderListenerImpl() {}; + ~OrderCancelRejectDataReaderListenerImpl() override {}; - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); - - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; - - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; + void on_data_available(eprosima::fastdds::dds::DataReader* reader) override; private: fix_message_composer_thread _processor; }; -} /* namespace DistributedATS */ - -#endif /* ORDERCANCELREJECTDATAREADERLISTENERIMPL_H_ */ +} diff --git a/FIXGateway/src/OrderMassCancelReportDataReaderListenerImpl.cpp b/FIXGateway/src/OrderMassCancelReportDataReaderListenerImpl.cpp index e93c175..ffa87cc 100644 --- a/FIXGateway/src/OrderMassCancelReportDataReaderListenerImpl.cpp +++ b/FIXGateway/src/OrderMassCancelReportDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -30,17 +30,23 @@ #include #include +#include +#include +#include +#include +#include +#include + namespace DistributedATS { auto const order_mass_cencel_report_processor = [] (DistributedATS::DATSApplication &application, DistributedATS_OrderMassCancelReport::OrderMassCancelReport& orderMassCancelReport) { FIX::Message orderMassCancelReportMessage; - orderMassCancelReport.m_Header.BeginString = - CORBA::string_dup("FIX.4.4"); - orderMassCancelReport.m_Header.SendingTime = 0; // this is precision; - orderMassCancelReport.m_Header.SenderCompID = - orderMassCancelReport.m_Header.TargetSubID; + orderMassCancelReport.fix_header().BeginString("FIX.4.4"); + orderMassCancelReport.fix_header().SendingTime(0); // this is precision; + orderMassCancelReport.fix_header().SenderCompID( + orderMassCancelReport.fix_header().TargetSubID()); OrderMassCancelReportAdapter::DDS2FIX(orderMassCancelReport, orderMassCancelReportMessage); @@ -50,47 +56,23 @@ auto const order_mass_cencel_report_processor = [] (DistributedATS::DATSApplicat }; -OrderMassCancelReportDataReaderListenerImpl::OrderMassCancelReportDataReaderListenerImpl(DistributedATS::DATSApplication &application) : _processor(application, order_mass_cencel_report_processor, 500 ) +OrderMassCancelReportDataReaderListenerImpl::OrderMassCancelReportDataReaderListenerImpl(DistributedATS::DATSApplication &application) : + _processor(application, order_mass_cencel_report_processor, "OrderMassCancelReportDataReaderListenerImpl", 500 ) {}; void OrderMassCancelReportDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_OrderMassCancelReport::OrderMassCancelReportDataReader_var - order_mass_cancel_report_dr = - DistributedATS_OrderMassCancelReport::OrderMassCancelReportDataReader::_narrow( - reader); - - if (CORBA::is_nil(order_mass_cancel_report_dr.in())) { - std::cerr << "OrderCancelReportDataReaderListenerImpl::on_data_available:" - " _narrow failed." - << std::endl; - ACE_OS::exit(1); - } - - while (true) { - DistributedATS_OrderMassCancelReport::OrderMassCancelReport orderMassCancelReport; - DDS::SampleInfo si; - DDS::ReturnCode_t status = order_mass_cancel_report_dr->take_next_sample( - orderMassCancelReport, si); - - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; - - _processor.enqueue_dds_message(orderMassCancelReport); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logon: Error: " << status << std::endl; - } + eprosima::fastdds::dds::DataReader* reader) { + + DistributedATS_OrderMassCancelReport::OrderMassCancelReport orderMassCancelReport; + eprosima::fastdds::dds::SampleInfo info; + if (reader->take_next_sample(&orderMassCancelReport, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + _processor.enqueue_dds_message(orderMassCancelReport); + } } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } + } } /* namespace DistributedATS */ diff --git a/FIXGateway/src/OrderMassCancelReportDataReaderListenerImpl.h b/FIXGateway/src/OrderMassCancelReportDataReaderListenerImpl.h index 622816d..77517cc 100644 --- a/FIXGateway/src/OrderMassCancelReportDataReaderListenerImpl.h +++ b/FIXGateway/src/OrderMassCancelReportDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,59 +25,29 @@ SOFTWARE. */ -#ifndef ORDERMASSCANCELREPORTDATAREADERLISTENERIMPL_H_ -#define ORDERMASSCANCELREPORTDATAREADERLISTENERIMPL_H_ +#pragma once -#include #include #include "Application.hpp" #include "FIXMsgComposerThread.h" +#include +#include + namespace DistributedATS { class OrderMassCancelReportDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: OrderMassCancelReportDataReaderListenerImpl(DistributedATS::DATSApplication &application); - virtual ~OrderMassCancelReportDataReaderListenerImpl() {}; - - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); - - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; + ~OrderMassCancelReportDataReaderListenerImpl() override {}; - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; + void on_data_available(eprosima::fastdds::dds::DataReader* reader) override; - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; - - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; - private: fix_message_composer_thread _processor; }; } /* namespace DistributedATS */ - -#endif /* ORDERCANCELREPORTDATAREADERLISTENERIMPL_H_ */ diff --git a/FIXGateway/src/SecurityListDataReaderListenerImpl.cpp b/FIXGateway/src/SecurityListDataReaderListenerImpl.cpp index c2b3159..1868332 100644 --- a/FIXGateway/src/SecurityListDataReaderListenerImpl.cpp +++ b/FIXGateway/src/SecurityListDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -31,109 +31,101 @@ #include #include +#include +#include + +#include +#include +#include +#include +#include + + namespace DistributedATS { auto const security_list_processor = [] (DistributedATS::DATSApplication &application, DistributedATS_SecurityList::SecurityList& securityList) { - + /* std::stringstream ss; SecurityListLogger::log(ss, securityList); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) SecurityList : %s\n"), - ss.str().c_str())); + LOG4CXX_INFO(logger, "SecurityList : [" << ss.str() << "]"); + */ FIX44::SecurityList securityListMessage; - securityList.m_Header.SendingTime = 0; // this is precision; + securityList.fix_header().SendingTime(0); // this is precision; - securityList.m_Header.SenderCompID = - securityList.m_Header - .TargetSubID; // security_list.m_Header.TargetCompID; - HeaderAdapter::DDS2FIX(securityList.m_Header, - securityListMessage.getHeader()); + securityList.fix_header().TargetCompID(securityList.DATS_Destination()); + securityList.fix_header().SenderCompID(securityList.DATS_DestinationUser()); + + HeaderAdapter::DDS2FIX(securityList.fix_header(), securityListMessage.getHeader()); - FIX::SecurityReqID securityReqID(securityList.SecurityReqID.in()); + FIX::SecurityReqID securityReqID(securityList.SecurityReqID()); securityListMessage.setField(securityReqID); FIX::SecurityResponseID securityResponseID( - securityList.SecurityResponseID.in()); + securityList.SecurityResponseID()); securityListMessage.setField(securityResponseID); FIX::SecurityRequestResult securityRequestResult( - securityList.SecurityRequestResult); + securityList.SecurityRequestResult()); securityListMessage.setField(securityRequestResult); - for (int sec_index = 0; - sec_index < securityList.c_NoRelatedSym.length(); sec_index++) { - FIX44::SecurityList::NoRelatedSym relatedSymbol; + for (int sec_index = 0; sec_index < securityList.c_NoRelatedSym().size(); sec_index++) + { - std::string instrument = - securityList.c_NoRelatedSym[sec_index].Symbol.in(); - std::string exchange = - securityList.c_NoRelatedSym[sec_index].SecurityExchange.in(); + FIX44::SecurityList::NoRelatedSym relatedSymbol; + + std::string instrument = + securityList.c_NoRelatedSym()[sec_index].Symbol(); + std::string exchange = + securityList.c_NoRelatedSym()[sec_index].SecurityExchange(); - std::string ref_data = securityList.c_NoRelatedSym[sec_index].Text.in(); + std::string ref_data = securityList.c_NoRelatedSym()[sec_index].Text(); - FIX::Symbol symbol(instrument); - relatedSymbol.setField(symbol); + FIX::Symbol symbol(instrument); + relatedSymbol.setField(symbol); - FIX::SecurityExchange securityExchange(exchange); - relatedSymbol.setField(securityExchange); + FIX::SecurityExchange securityExchange(exchange); + relatedSymbol.setField(securityExchange); - if ( ref_data.size() > 0 ) - { - FIX::Text text(ref_data); - relatedSymbol.setField(text); - } + if ( ref_data.size() > 0 ) + { + FIX::Text text(ref_data); + relatedSymbol.setField(text); + } - securityListMessage.addGroup(relatedSymbol); + securityListMessage.addGroup(relatedSymbol); } + DistributedATS::DATSApplication::publishToClient(securityListMessage); - }; -SecurityListDataReaderListenerImpl::SecurityListDataReaderListenerImpl(DistributedATS::DATSApplication &application) : - _processor(application, security_list_processor ) {}; +SecurityListDataReaderListenerImpl::SecurityListDataReaderListenerImpl(DistributedATS::DATSApplication &application) + : _processor(application, security_list_processor, "SecurityListDataReaderListenerImpl" ) +{ +}; void SecurityListDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_SecurityList::SecurityListDataReader_var security_list_dr = - DistributedATS_SecurityList::SecurityListDataReader::_narrow(reader); - - if (CORBA::is_nil(security_list_dr.in())) { - std::cerr << "SecurityListDataReaderListenerImpl::on_data_available: " - "_narrow failed." - << std::endl; - ACE_OS::exit(1); + eprosima::fastdds::dds::DataReader* reader) { + + DistributedATS_SecurityList::SecurityList security_list; + eprosima::fastdds::dds::SampleInfo info; + if (reader->take_next_sample(&security_list, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + std::stringstream ss; + SecurityListLogger::log(ss, security_list); + LOG4CXX_INFO(logger, "SecurityList : [" << ss.str() << "]"); + + _processor.enqueue_dds_message(security_list); + } } - - while (true) { - DistributedATS_SecurityList::SecurityList securityList; - DDS::SampleInfo si; - DDS::ReturnCode_t status = - security_list_dr->take_next_sample(securityList, si); - - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; - - _processor.enqueue_dds_message(securityList); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::SecurityList: Error: " << status - << std::endl; - } - } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } + } } /* namespace DistributedATS */ diff --git a/FIXGateway/src/SecurityListDataReaderListenerImpl.h b/FIXGateway/src/SecurityListDataReaderListenerImpl.h index 081a14a..df88bca 100644 --- a/FIXGateway/src/SecurityListDataReaderListenerImpl.h +++ b/FIXGateway/src/SecurityListDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,12 +25,13 @@ SOFTWARE. */ -#ifndef SECURITYLISTDATAREADERLISTENERIMPL_H_ -#define SECURITYLISTDATAREADERLISTENERIMPL_H_ +#pragma once -#include #include +#include +#include + #include "Application.hpp" #include "FIXMsgComposerThread.h" @@ -38,46 +39,15 @@ namespace DistributedATS { class SecurityListDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: SecurityListDataReaderListenerImpl(DistributedATS::DATSApplication &application); - virtual ~SecurityListDataReaderListenerImpl() {}; - - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); - - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; - - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; - + virtual ~SecurityListDataReaderListenerImpl() override {}; + + void on_data_available(eprosima::fastdds::dds::DataReader* reader) override; + private: fix_message_composer_thread _processor; }; } /* namespace DistributedATS */ - -#endif /* SECURITYLISTDATAREADERLISTENERIMPL_H_ */ diff --git a/FIXGateway/src/SocketAcceptor.cpp b/FIXGateway/src/SocketAcceptor.cpp index 0841447..90c4e42 100644 --- a/FIXGateway/src/SocketAcceptor.cpp +++ b/FIXGateway/src/SocketAcceptor.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -43,10 +43,9 @@ SocketAcceptor::SocketAcceptor( SocketAcceptor::SocketAcceptor( DistributedATS::DATSApplication &application, MessageStoreFactory &factory, - const SessionSettings &settings, FIX::LogFactory &logFactory, - std::ofstream *dds_input_stream_log_file) throw(ConfigError) - : Acceptor(application, factory, settings, logFactory), - m_dds_input_stream_log_file(dds_input_stream_log_file), m_pServer(0) {} + const SessionSettings &settings, FIX::LogFactory &logFactory/*, + std::ofstream *dds_input_stream_log_file*/) throw(ConfigError) + : Acceptor(application, factory, settings, logFactory), m_pServer(0) {} SocketAcceptor::~SocketAcceptor() { SocketConnections::iterator iter; @@ -107,16 +106,7 @@ void SocketAcceptor::onInitialize(const SessionSettings &s) throw( } void SocketAcceptor::onStart() { - - if (m_dds_input_stream_log_file->bad()) { - delete m_dds_input_stream_log_file; - } else { - ACE_LOG_MSG->msg_ostream(m_dds_input_stream_log_file, true); - } - - ACE_LOG_MSG->clr_flags(ACE_Log_Msg::STDERR | ACE_Log_Msg::LOGGER); - ACE_LOG_MSG->set_flags(ACE_Log_Msg::OSTREAM); - + while (!isStopped() && m_pServer && m_pServer->block(*this)) { // ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%T|%D) Socket Acceptor\n"))); } diff --git a/FIXGateway/src/SocketAcceptor.h b/FIXGateway/src/SocketAcceptor.h index 9ce355c..6b56912 100644 --- a/FIXGateway/src/SocketAcceptor.h +++ b/FIXGateway/src/SocketAcceptor.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -44,8 +44,8 @@ class SocketAcceptor : public FIX::Acceptor, FIX::SocketServer::Strategy { SocketAcceptor(DistributedATS::DATSApplication &, FIX::MessageStoreFactory &, const FIX::SessionSettings &) throw(FIX::ConfigError); SocketAcceptor(DistributedATS::DATSApplication &, FIX::MessageStoreFactory &, - const FIX::SessionSettings &, FIX::LogFactory &, - std::ofstream *) throw(FIX::ConfigError); + const FIX::SessionSettings &, FIX::LogFactory &/*, + std::ofstream */ ) throw(FIX::ConfigError); virtual ~SocketAcceptor(); @@ -79,16 +79,12 @@ class SocketAcceptor : public FIX::Acceptor, FIX::SocketServer::Strategy { void onError(FIX::SocketServer &); void onTimeout(FIX::SocketServer &); - // void insertPendingLogonSocketConnection(const SessionID&, SocketConnection* - // ); bool proceedWithLogon(const SessionID &); FIX::SocketServer *m_pServer; PortToSessions m_portToSessions; SocketConnections m_connections; - std::ofstream *m_dds_input_stream_log_file; - // PendingLogonSocketConnection m_pendingLogonSocketConnection; }; } // namespace DistributedATS diff --git a/FIXGateway/src/SocketConnection.cpp b/FIXGateway/src/SocketConnection.cpp index 91dd78d..1ee3014 100644 --- a/FIXGateway/src/SocketConnection.cpp +++ b/FIXGateway/src/SocketConnection.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,12 +25,6 @@ SOFTWARE. */ -#ifdef _MSC_VER -#include "stdafx.h" -#else -//#include -#endif - #include "SocketAcceptor.h" #include "SocketConnection.h" diff --git a/FIXGateway/src/SocketConnection.h b/FIXGateway/src/SocketConnection.h index 53b0f1c..37d3bdf 100644 --- a/FIXGateway/src/SocketConnection.h +++ b/FIXGateway/src/SocketConnection.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/FIXGateway/src/main.cpp b/FIXGateway/src/main.cpp index fee031c..561cb38 100644 --- a/FIXGateway/src/main.cpp +++ b/FIXGateway/src/main.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -28,25 +28,18 @@ #include #include -#include #include -#include #include -#include - #include -#include #include -#include - -#include #include -#include #include -#include -#include -#include + +#include +#include +#include +#include #include @@ -64,7 +57,6 @@ #include #include -#include #include "ExecutionReportDataReaderListenerImpl.h" #include "LogonDataReaderListenerImpl.hpp" @@ -84,188 +76,146 @@ #include -#include "ace/streams.h" -#include - #include "FileLog.h" -#include -#include -#include -#include #include +#include +#include +#include +#include -std::atomic is_running; - -namespace DistributedATS { - -class SignalHandler : public ACE_Event_Handler { -public: - virtual int handle_signal(int signum, siginfo_t * = 0, ucontext_t * = 0) { - std::cout << "Lets hangle signal : " << signum << std::endl; - is_running.store(false); - return 0; - }; -}; - -}; // namespace DistributedATS - -int main(int argc, char **argv) { - DDS::DomainParticipantFactory_var dpf = DDS::DomainParticipantFactory::_nil(); - - if (argc < 2) { - std::cout << "usage: " << argv[0] << std::endl - << "\t\t-c quickfix-config-file" << std::endl; - - return 0; - } - - std::string quickfix_config_file = ""; - std::string sender_comp_id = ""; - std::string data_service_name = ""; - - try { - - dpf = TheParticipantFactoryWithArgs(argc, argv); - - distributed_ats_utils::BasicDomainParticipantPtr participant_ptr = - std::make_shared( - dpf, DISTRIBUTED_ATS_DOMAIN_ID); - - participant_ptr->createSubscriber(); - participant_ptr->createPublisher(); - - ACE_Get_Opt cmd_opts(argc, argv, ":c:"); - - int option; - - while ((option = cmd_opts()) != EOF) { - switch (option) { - case 'c': - quickfix_config_file = cmd_opts.opt_arg(); - break; - } - } - - if (quickfix_config_file.empty()) { - std::cerr << "Error: Config file name is not specified." << std::endl; - return -1; - } - - is_running = true; - - auto settings = - std::make_shared(quickfix_config_file); - - FIX::SessionID default_session_id("FIX.4.4", "DEFAULT", "DEFAULT"); - const FIX::Dictionary *default_dictionary_tmp = - &settings->get(default_session_id); - - FIX::Dictionary *default_dictionary = new FIX::Dictionary(); - default_dictionary = const_cast(default_dictionary_tmp); - sender_comp_id = settings->get().getString("SenderCompID"); - data_service_name = default_dictionary->getString("DataService"); - - std::string file_log_path = settings->get().getString("FileLogPath"); - std::string file_store_path = settings->get().getString("FileStorePath"); - - std::string dds_log_file_name_prefix = - file_log_path + "/" + sender_comp_id + "." + data_service_name; - - // - // Lets deal with signals - // - signal(SIGPIPE, SIG_IGN); - - ACE_Sig_Handler handler; - DistributedATS::SignalHandler signalHandler; - // add signal handler for the SIGINT signal here - ACE_Sig_Handler sig_handler; - sig_handler.register_handler(SIGINT, &signalHandler); - - // Separate log files for DDS in and out messages to avoid serialization of - // threads - std::string fix_prefix = sender_comp_id + "." + data_service_name; - std::string dds_output_stream_log_file = - dds_log_file_name_prefix + ".dds.fix.log"; - - std::cout << "DDS out filename : " << dds_output_stream_log_file - << std::endl; - - std::ofstream *dds_output_stream = - new std::ofstream(dds_output_stream_log_file, ios::app); - - if (dds_output_stream->bad()) { - delete dds_output_stream; - } else { - ACE_LOG_MSG->msg_ostream(dds_output_stream, true); - } - - ACE_LOG_MSG->clr_flags(ACE_Log_Msg::STDERR | ACE_Log_Msg::LOGGER); - ACE_LOG_MSG->set_flags(ACE_Log_Msg::OSTREAM); - - std::string dds_input_stream_log_file = - dds_log_file_name_prefix + ".fix.dds.log"; - - std::cout << "DDS input filename : " << dds_input_stream_log_file - << std::endl; - - std::ofstream *dds_input_stream = - new std::ofstream(dds_input_stream_log_file, ios::app); - - auto data_writer_container = - std::make_shared(participant_ptr); - - ACE_DEBUG((LM_INFO, - ACE_TEXT("(%P|%t) SenderCompID : [%s] | DataService : [%s]"), - sender_comp_id.c_str(), data_service_name.c_str())); - - std::string target_comp_id_filter = - "m_Header.TargetCompID='" + sender_comp_id + - "'"; // content filtering for messages directed to instances of gateways - // with given sender comp id. These messages include Logon/Logout, - // ExectionReports, MassStatus, etc. - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) TargetCompID filter : [%s]"), - target_comp_id_filter.c_str())); - - FIX::FileStoreFactory store_factory(file_store_path); - // FIX::NullStoreFactory store_factory; - DistributedATS::FileLogFactory log_factory(*settings, fix_prefix); - - DistributedATS::DATSApplication application( - data_service_name, sender_comp_id, data_writer_container); - - auto acceptor = std::make_shared( - application, store_factory, *settings, log_factory, dds_input_stream); - auto sessionFactory = std::make_shared( - application, store_factory, &log_factory); - - auto data_reader_container = - std::make_shared( - participant_ptr, application, target_comp_id_filter); - auto authService = std::make_shared( - settings, sessionFactory, default_dictionary, sender_comp_id); - - application.setAuthService(authService); - - acceptor->start(); - - while (is_running == true) - ACE_OS::sleep(1); - - acceptor->stop(); +std::atomic is_running; - delete default_dictionary; - delete dds_output_stream; - delete dds_input_stream; - return 0; +int main(int argc, char **argv) +{ + std::string quickfix_config_file = ""; + std::string sender_comp_id = ""; + std::string data_service_name = ""; + + LOG4CXX_INFO(logger, "Starting up"); + + try { + + boost::program_options::options_description options_desc{"Options"}; + + options_desc.add_options() + ("help,h", "Help screen") + ("config,c", boost::program_options::value()->default_value(""), "QuickFIX config file"); + + boost::program_options::variables_map vm; + boost::program_options::store(parse_command_line(argc, argv, options_desc), vm); + boost::program_options::notify(vm); + + if (vm.count("help")) + std::cout << options_desc << '\n'; + else if (vm.count("config")) + quickfix_config_file = vm["config"].as(); + + is_running = true; + + auto settings = std::make_shared(quickfix_config_file); + + FIX::SessionID default_session_id("FIX.4.4", "DEFAULT", "DEFAULT"); + + auto session_settings = settings->get(default_session_id); + + auto dats_home = std::getenv("DATS_HOME"); + auto dats_log_home = std::getenv("DATS_LOG_HOME"); + + if ( dats_home == NULL || dats_log_home == NULL ) + throw std::runtime_error("DATS_HOME or/and DATS_LOG_HOME is not set"); + + auto default_dictionary_tmp = &settings->get(default_session_id); + const_cast(default_dictionary_tmp)->setString("DATADICTIONARY", std::string(dats_home) + "/spec/" + default_dictionary_tmp->getString("DATADICTIONARY") ); + + auto default_dictionary = std::make_shared(FIX::Dictionary(settings->get(default_session_id))); + + sender_comp_id = settings->get().getString("SenderCompID"); + data_service_name = default_dictionary->getString("DataService"); + + + auto participant_ptr = + std::make_shared(0, sender_comp_id); + + participant_ptr->create_publisher(); + participant_ptr->create_subscriber(); + + + if (quickfix_config_file.empty()) { + std::cerr << "Error: Config file name is not specified." << std::endl; + return -1; + } + + + LOG4CXX_INFO(logger, "SenderCompID : [" << sender_comp_id << "] | DataService : ["<< data_service_name << "]"); + + /* // content filtering for messages directed to instances of gateways + // with given sender comp id. These messages include Logon/Logout, + // ExectionReports, MassStatus, etc. + std::string target_comp_id_filter = + "header.TargetCompID='" + sender_comp_id + + "'"; + + LOG4CXX_INFO(logger, "TargetCompID filter : [" << target_comp_id_filter << "]"); + */ + + std::string fix_prefix = "FIXGateway-" + sender_comp_id + "." + data_service_name; + + FIX::FileStoreFactory store_factory(dats_log_home); + DistributedATS::FileLogFactory log_factory(*settings, fix_prefix); + + auto data_writer_container = + std::make_shared(participant_ptr); + + DistributedATS::DATSApplication application(data_service_name, sender_comp_id, data_writer_container); + + std::shared_ptr acceptor; + std::shared_ptr session_factory; + + try { + + acceptor = std::make_shared( application, store_factory, *settings, log_factory); + session_factory = std::make_shared( application, store_factory, &log_factory); + + } catch ( const std::exception& exp ) + { + LOG4CXX_ERROR(logger, "Exception during the initialization of FIX Gateway : [" << exp.what() << "]"); + } + + auto data_reader_container = + std::make_shared(participant_ptr, application, sender_comp_id); + + auto authService = std::make_shared( settings, session_factory, default_dictionary, sender_comp_id); + application.setAuthService(authService); + + acceptor->start(); + + boost::asio::io_context io_service; + boost::asio::signal_set signals(io_service, SIGINT, SIGTERM); + + signals.async_wait([&](const boost::system::error_code& ec, int signal_number) { + if (!ec) { + LOG4CXX_INFO(logger, "Signal number " << signal_number + << "Gracefully stopping the timer and exiting"); + is_running.store(false); + } else { + LOG4CXX_ERROR(logger, "Error " << ec.value() << " - " << ec.message() + << " - Signal number - " << signal_number); + } + }); + + io_service.run(); + + acceptor->stop(); + + return 0; + } catch (std::exception &e) { + + LOG4CXX_ERROR(logger, "Exception during the initialization of FIX Gateway : [" << e.what() << "]"); - ACE_ERROR ((LM_CRITICAL, ACE_TEXT("(%P|%t|%D) ERROR: Exception during the initialization of FIX Gateway : %s\n"), e.what())); - - std::cout << e.what() << std::endl; - return 1; + return 1; } } diff --git a/GenTools/CMakeLists.txt b/GenTools/CMakeLists.txt new file mode 100644 index 0000000..f8b5d94 --- /dev/null +++ b/GenTools/CMakeLists.txt @@ -0,0 +1,29 @@ +cmake_minimum_required(VERSION 3.12.4) + +if(NOT CMAKE_VERSION VERSION_LESS 3.0) + cmake_policy(SET CMP0048 NEW) +endif() + +project(DistributedATSLib) + +# Find requirements +if(NOT fastcdr_FOUND) + find_package(fastcdr REQUIRED) +endif() + +if(NOT fastdds_FOUND) + find_package(fastdds 3 REQUIRED) +endif() + +find_package(log4cxx REQUIRED) + +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +link_directories(${CMAKE_INSTALL_PREFIX}/lib) +link_directories(${QUICKFIX_INSTALL_PREFIX}/lib) +file(GLOB DISTRIBUTED_ATS_LIB *) +include_directories(${CMAKE_INSTALL_PREFIX}/include) +add_library(DistributedATSLib SHARED ${DISTRIBUTED_ATS_LIB}) +target_link_libraries(DistributedATSLib quickfix fastcdr fastdds log4cxx) diff --git a/GenTools/QuickFIX2OpenDDS/ComponentParser.py b/GenTools/QuickFIX2FastDDS/ComponentParser.py similarity index 60% rename from GenTools/QuickFIX2OpenDDS/ComponentParser.py rename to GenTools/QuickFIX2FastDDS/ComponentParser.py index 8dfcd09..82f0544 100644 --- a/GenTools/QuickFIX2OpenDDS/ComponentParser.py +++ b/GenTools/QuickFIX2FastDDS/ComponentParser.py @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,148 +26,147 @@ """ -import xml.etree.ElementTree as xml_parser; -import Entity; -import Member; -import QuickFIX2OpenDDS +import Entity +import Member +import QuickFIX2FastDDS class ComponentParser: def __init__(self, requiredFieldsComponents): - self.requiredFieldsComponents = requiredFieldsComponents; - self.complete_dependency_list = []; - self.components = dict(); + self.requiredFieldsComponents = requiredFieldsComponents + self.complete_dependency_list = [] + self.components = dict() - self.component_list = []; - self.component_dep_dict = {}; - self.compenent_dict = {}; - self.field_types = {}; + self.component_list = [] + self.component_dep_dict = {} + self.compenent_dict = {} + self.field_types = {} def populate_field_type_dict(self, quick_fix_specs): for item in quick_fix_specs.find('fields'): - fix_tag_name = item.get("name"); - fix_tag_type = item.get("type"); - self.field_types[fix_tag_name] = fix_tag_type; + fix_tag_name = item.get("name") + fix_tag_type = item.get("type") + self.field_types[fix_tag_name] = fix_tag_type def parse_components(self, quick_fix_specs): - self.populate_field_type_dict(quick_fix_specs); + self.populate_field_type_dict(quick_fix_specs) for item in quick_fix_specs.find('components'): - component_name = item.get("name"); + component_name = item.get("name") - component_list_comp = []; - required_fields = []; + component_list_comp = [] + required_fields = [] if component_name in self.requiredFieldsComponents.required_components: - required_fields = self.requiredFieldsComponents.required_fields; + required_fields = self.requiredFieldsComponents.required_fields - entity = self.parse_components_rec(component_name, item, self.components, component_list_comp, required_fields, False); - self.component_list.append(component_list_comp); + entity = self.parse_components_rec(component_name, item, self.components, component_list_comp, required_fields, False) + self.component_list.append(component_list_comp) # don't add structures that have no required fields if len(entity.members): - self.component_dep_dict[component_name] = component_list_comp; - self.compenent_dict[component_name] = entity; + self.component_dep_dict[component_name] = component_list_comp + self.compenent_dict[component_name] = entity # # Checks if required by QuickFIX or if specified in requirement # def is_required(self, item): - item_name = item.get("name"); + item_name = item.get("name") - is_required = item.get("required"); + is_required = item.get("required") if is_required is not None and is_required == 'Y': - return True; + return True if item_name not in self.requiredFieldsComponents.required_fields.keys() \ and item_name not in self.requiredFieldsComponents.required_messages.keys() \ - and item_name not in self.requiredFieldsComponents.required_components.keys() : - return False; + and item_name not in self.requiredFieldsComponents.required_components.keys(): + return False - return True; + return True def parse_components_rec(self, component_name, item, components, order_list, required_fields, is_message): - entity = Entity.Entity(self, component_name, item, is_message); + entity = Entity.Entity(self, component_name, item, is_message) for component_item in item: - item_name = component_item.get("name"); + item_name = component_item.get("name") if not self.is_required(component_item): if component_item.tag == 'field' and required_fields is not None: if item_name not in required_fields: - continue; + continue else: - continue; + continue if component_item.tag == 'field': if item_name == component_name: - item_name = item_name + "Str"; + item_name = item_name + "Str" elif item_name == "EventType": - item_name = item_name + "QuickFix"; + item_name = item_name + "QuickFix" if component_item.tag == 'component': - print("\t Required FIX Component : " + component_name + "." + item_name); + print("\t Required FIX Component : " + component_name + "." + item_name) - required_fields = self.requiredFieldsComponents.required_fields; + required_fields = self.requiredFieldsComponents.required_fields - component_members = self.compenent_dict.get(item_name); + component_members = self.compenent_dict.get(item_name) if component_members is not None: - component_entity = self.parse_components_rec(item_name, component_members.item, self.components, order_list, - required_fields, False); + component_entity = self.parse_components_rec(item_name, component_members.item, self.components, + order_list, required_fields, False) for member in component_entity.members: - entity.add_member(member); + entity.add_member(member) for group in component_entity.groups: - entity.add_group(group); + entity.add_group(group) elif component_item.tag == 'group': - print("\t Required FIX Group : " + component_name + "." + item_name); + print("\t Required FIX Group : " + component_name + "." + item_name) - required_fields = self.requiredFieldsComponents.required_fields; + required_fields = self.requiredFieldsComponents.required_fields - group_entity = self.parse_components_rec(item_name, component_item, self.components, order_list,required_fields, False); - entity.add_group(group_entity); + group_entity = self.parse_components_rec(item_name, component_item, self.components, order_list, required_fields, False) + entity.add_group(group_entity) - member = Member.GroupMember(item_name, item_name, component_name); - member.add_group_components(component_item, self, self.field_types); - entity.add_member(member); + member = Member.GroupMember(item_name, item_name, component_name) + member.add_group_components(component_item, self, self.field_types) + entity.add_member(member) elif component_item.tag == 'field': - tabs = "\t"; + tabs = "\t" if is_message == True: - tabs = "\t\t"; + tabs = "\t\t" - print("\t Required FIX Field : " + component_name + "." + item_name); + print("\t Required FIX Field : " + component_name + "." + item_name) - type_name = self.field_types[item_name]; + type_name = self.field_types[item_name] if type_name in self.requiredFieldsComponents.types.keys(): - dds_type = self.requiredFieldsComponents.types[type_name]; - gen_requirements = None; + dds_type = self.requiredFieldsComponents.types[type_name] + gen_requirements = None if item_name in self.requiredFieldsComponents.required_fields.keys(): - gen_requirements = self.requiredFieldsComponents.required_fields[item_name]; + gen_requirements = self.requiredFieldsComponents.required_fields[item_name] - member = Member.Member(dds_type, item_name, "fixMsg", "ddsMsg", gen_requirements); - entity.add_member(member); + member = Member.Member(dds_type, item_name, "fixMsg", "ddsMsg", gen_requirements) + entity.add_member(member) else: - print("Type not founds : [" + type_name + "]"); + print("Type not founds : [" + type_name + "]") - return entity; + return entity def store_components(self): @@ -175,48 +174,50 @@ def store_components(self): for component_name in self.compenent_dict.keys(): if component_name not in self.complete_dependency_list: - continue; + continue idl_file = open("../idl/" + component_name + ".idl", "w") hpp_file = open("../idl/" + component_name + "Adapter.hpp", "w") cpp_file = open("../idl/" + component_name + "Adapter.cpp", "w") logger_file = open("../idl/" + component_name + "Logger.hpp", "w") - hpp_file.write(QuickFIX2OpenDDS.DONT_MODIFY_TEXT); - hpp_file.write("#ifndef __" + component_name + "_h__\n"); - hpp_file.write("#define __" + component_name + "_h__\n\n"); - hpp_file.write("#include \"" + component_name + "TypeSupportImpl.h\"\n"); - hpp_file.write("#include \n\nusing namespace DistributedATS;\n\n"); + hpp_file.write(QuickFIX2FastDDS.DONT_MODIFY_TEXT) + hpp_file.write("#pragma once\n") + + hpp_file.write("#include \"" + component_name + ".hpp\"\n") + hpp_file.write("#include \n\n") - cpp_file.write(QuickFIX2OpenDDS.DONT_MODIFY_TEXT); - cpp_file.write("#include \"" + component_name + "Adapter.hpp\"\n\n"); - cpp_file.write("#include \"" + "ConvertUtils.h\"\n\n"); + cpp_file.write(QuickFIX2FastDDS.DONT_MODIFY_TEXT) + cpp_file.write("#include \"" + component_name + "Adapter.hpp\"\n\n") + cpp_file.write("#include <" + "ConvertUtils.h>\n\n") - logger_file.write(QuickFIX2OpenDDS.DONT_MODIFY_TEXT); - logger_file.write("#ifndef __" + component_name + "_logger_h__\n"); - logger_file.write("#define __" + component_name + "_logger_h__\n\n"); + logger_file.write(QuickFIX2FastDDS.DONT_MODIFY_TEXT) + logger_file.write("#pragma once\n") + #logger_file.write("#ifndef __" + component_name + "_logger_h__\n") + #logger_file.write("#define __" + component_name + "_logger_h__\n\n") - dependency_list = self.component_dep_dict[component_name]; + dependency_list = self.component_dep_dict[component_name] - idl_file.write(QuickFIX2OpenDDS.DONT_MODIFY_TEXT); + idl_file.write(QuickFIX2FastDDS.DONT_MODIFY_TEXT) for dependency_name in dependency_list: - idl_file.write("#include \"" + dependency_name + ".idl\"\n"); - hpp_file.write("#include \"" + dependency_name + "TypeSupportImpl.h\"\n"); + idl_file.write("#include \"" + dependency_name + ".idl\"\n") + #hpp_file.write("#include \"" + dependency_name + "TypeSupportImpl.h\"\n") - component_contexts = self.compenent_dict[component_name]; + component_contexts = self.compenent_dict[component_name] - idl_file.write("\n"); - idl_file.write(component_contexts.get_entity_idl()); - idl_file.close(); + idl_file.write("\n") + idl_file.write(component_contexts.get_entity_idl()) + idl_file.close() hpp_file.write(component_contexts.get_entity_hpp("")) - hpp_file.write("\n#endif"); - hpp_file.close(); + #hpp_file.write("\n#endif") + hpp_file.close() logger_file.write(component_contexts.get_entity_logger("")) - logger_file.write("\n};\n#endif"); - logger_file.close(); + # logger_file.write("\n};\n#endif") + logger_file.write("\n};\n") + logger_file.close() cpp_file.write(component_contexts.get_entity_cpp("")) - cpp_file.close(); + cpp_file.close() diff --git a/GenTools/QuickFIX2OpenDDS/Entity.py b/GenTools/QuickFIX2FastDDS/Entity.py similarity index 50% rename from GenTools/QuickFIX2OpenDDS/Entity.py rename to GenTools/QuickFIX2FastDDS/Entity.py index a0363ed..dd39d58 100644 --- a/GenTools/QuickFIX2OpenDDS/Entity.py +++ b/GenTools/QuickFIX2FastDDS/Entity.py @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,122 +26,124 @@ """ -import xml.etree.ElementTree as xml_parser; - class Entity: - def __init__(self, coponents_parser, entity_name, item, is_message): - - self.entity_name = entity_name; - self.item = item; - self.members = []; - self.groups = []; - self.is_message = is_message; - self.component_parser = coponents_parser; + def __init__(self, components_parser, entity_name, item, is_message): + self.entity_name = entity_name + self.item = item + self.members = [] + self.groups = [] + self.is_message = is_message + self.component_parser = components_parser def add_member(self, member): - self.members.append(member); + self.members.append(member) def add_group(self, entity): - self.groups.append(entity); + self.groups.append(entity) def get_entity_idl(self): - comp_str = ""; + comp_str = "" for group in self.groups: - group_idl = group.get_entity_idl(); - comp_str += group_idl; + group_idl = group.get_entity_idl() + comp_str += group_idl if self.item.tag == "message": - comp_str += "\t@topic\n\tstruct " + self.entity_name + "\n\t{\n\tDistributedATS::Header m_Header;\n"; + # comp_str += "\t@topic\n\tstruct " + self.entity_name + "\n\t{\n\tDistributedATS::Header m_Header;\n"; + comp_str += "\t\n\tstruct " + self.entity_name + \ + "\n\t{\n\t\tstring DATS_Source;\n " \ + " \t\tstring DATS_Destination;\n" \ + " \t\tstring DATS_SourceUser;\n" \ + " \t\tstring DATS_DestinationUser;\n\n\n\t\tDistributedATS::Header fix_header;\n\n" elif self.item.tag == 'group': - comp_str += "\tstruct " + self.entity_name + "\n\t{\n"; + comp_str += "\tstruct " + self.entity_name + "\n\t{\n" else: - comp_str += "module DistributedATS\n{\n\tstruct " + self.entity_name + "\n\t{\n"; + comp_str += "module DistributedATS\n{\n\tstruct " + self.entity_name + "\n\t{\n" for member in self.members: - comp_str += member.get_idl_statement(); + comp_str += member.get_idl_statement() if self.item.tag == "message": - comp_str += "\t};\n"; + comp_str += "\t};\n" elif self.item.tag == 'group': - comp_str += "\t};\n\ttypedef sequence<" + self.entity_name + "> " + self.entity_name + "Seq;\n\n"; + comp_str += "\t};\n\ttypedef sequence<" + self.entity_name + "> " + self.entity_name + "Seq;\n\n" else: - comp_str += "\t};\n};"; + comp_str += "\t};\n};" - return comp_str; + return comp_str # class prefix DistributedATS for messages def get_entity_logger(self, class_prefix): - comp_str = "\n\nclass " + self.entity_name+"Logger\n{\n\tpublic:\n"; - if self.is_message == True: - comp_str += "\t\tstatic void log(std::ostream & out, " + class_prefix + self.entity_name + "::"+ self.entity_name+"& ddsMsg ) __attribute__ ((visibility (\"default\")))\n"; - comp_str += "\t\t{\n\t\t\t;out<< \"Message : " + self.entity_name + " { \" << std::endl;\n"; - comp_str += "\t\t\tHeaderLogger::log(out, ddsMsg.m_Header);\n\n"; + comp_str = "\n\nclass " + self.entity_name + "Logger\n{\n\tpublic:\n" + if self.is_message: + comp_str += "\t\tstatic void log(std::ostream & out, " + class_prefix + self.entity_name + "::" + self.entity_name + "& ddsMsg ) __attribute__ ((visibility (\"default\")))\n" + comp_str += "\t\t{\n\t\t\t;out<< \"Message : " + self.entity_name + " { \" << std::endl;\n" + + comp_str += "\n\t\t\t;out \n\t\t\t << \"ddsMsg.DATS_Source : \" << ddsMsg.DATS_Source() << " \ + "std::endl " + comp_str += "\n\t\t\t << \"ddsMsg.DATS_Destination : \" << ddsMsg.DATS_Destination() << std::endl" + comp_str += "\n\t\t\t << \"ddsMsg.DATS_SourceUser : \" << ddsMsg.DATS_SourceUser() << std::endl" + comp_str += "\n\t\t\t << \"ddsMsg.DATS_DestinationUser : \" << ddsMsg.DATS_DestinationUser() << std::endl;" + comp_str += "\n\n\t\t\tHeaderLogger::log(out, ddsMsg.fix_header());\n" else: - comp_str += "\t\tstatic void log(std::ostream & out, DistributedATS::" + self.entity_name + "& ddsMsg ) __attribute__ ((visibility (\"default\")))\n\t\t{\n"; - comp_str += "\n\t\t\t;out<< \"" + self.entity_name + " { \" << std::endl\n"; + comp_str += "\t\tstatic void log(std::ostream & out, DistributedATS::" + self.entity_name + "& ddsMsg ) __attribute__ ((visibility (\"default\")))\n\t\t{\n" + comp_str += "\n\t\t\t;out<< \"" + self.entity_name + " { \" << std::endl\n" - comp_str += "\n\t\t\t;out\n"; + comp_str += "\n\t\t\t;out\n" for member in self.members: - comp_str += "\t\t\t"; - comp_str += member.get_logger_statement(self.entity_name); + comp_str += "\t\t\t" + comp_str += member.get_logger_statement(self.entity_name) comp_str += "\n" - #comp_str += " out <>>" + self.ddsObj) + self.gen_requirements = gen_requirements def get_idl_statement(self): - return "\t\t" + self.type.get("dds") + " " + self.name + ";\n"; + return "\t\t" + self.type.get("dds") + " " + self.name + ";\n" def get_logger_statement(self, entity_name): - return " << ""\"ddsMsg." + self.name + " : \" << ddsMsg." + self.name + " << std::endl"; + return " << ""\"ddsMsg." + self.name + " : \" << ddsMsg." + self.name + "() << std::endl" def get_cpp_member_statement(self, member_name): + fix2dds_cpp_def = "" + dds2fix_cpp_def = "" -# print("Change from/to fix/dds semantics"); - fix2dds_cpp_def = ""; - dds2fix_cpp_def = ""; - - var_name = "fix" + member_name; + var_name = "fix" + member_name - to_dds = self.type.get("to_dds"); - fix2dds_cpp_def += "\tif (" + self.fixObj + ".isSetField(FIX::FIELD::" + member_name + ") )\n"; + to_dds = self.type.get("to_dds") + fix2dds_cpp_def += "\tif (" + self.fixObj + ".isSetField(FIX::FIELD::" + member_name + ") )\n" if to_dds is not None: - formatted_statement = (to_dds % (member_name, self.fixObj, member_name)); - fix2dds_cpp_def += "\t\t"+self.ddsObj+"." + member_name + " = " + formatted_statement + ";\n"; + formatted_statement = (to_dds % (member_name, self.fixObj, member_name)) + fix2dds_cpp_def += "\t\t"+self.ddsObj+"." + member_name + " ( " + formatted_statement + ");\n" else: - fix2dds_cpp_def += "\t\t"+self.ddsObj+"." + member_name + " = FIELD_GET_REF( "+ self.fixObj + "," + member_name + ");\n"; + fix2dds_cpp_def += "\t\t"+self.ddsObj+"." + member_name + " ( FIELD_GET_REF( " + self.fixObj + "," + member_name + "));\n" - #print("DDS_TYOE : " + self.type.attrib['dds']) if self.type.attrib['dds'] == 'float' or self.type.attrib['dds'] == 'long' or self.type.attrib['dds'] == 'unsigned long long': fix2dds_cpp_def += '\telse \n' - fix2dds_cpp_def += "\t\t"+self.ddsObj+"." + member_name + " = 0;\n\n" + fix2dds_cpp_def += "\t\t"+self.ddsObj+"." + member_name + " ( 0 );\n\n" else: fix2dds_cpp_def += "\n" - to_fix = self.type.get("to_fix"); + to_fix = self.type.get("to_fix") if to_fix is not None: - to_fix_type=self.type.get("to_fix_type"); - #if to_fix_type == "string" : - #print("To FIX: " + to_fix ); + #to_fix_type=self.type.get("to_fix_type"); formatted_statement = (to_fix % ( self.ddsObj, member_name, member_name, self.fixObj ) ); dds2fix_cpp_def += "\t" + formatted_statement+"\n\n"; - # elif to_fix_type == "utctimestamp": - # formatted_statement = (to_fix % ( member_name, self.ddsObj, member_name, self.ddsObj, member_name, self.ddsObj, member_name ) ); - # dds2fix_cpp_def += "\t" + formatted_statement+"\n"; - # dds2fix_cpp_def += "\tFIX::" + member_name + " " + var_name + "("+member_name+"UTC);\n"; - # dds2fix_cpp_def += "\t"+self.fixObj+".setField("+var_name+");\n\n"; else: - dds2fix_cpp_def += "\tFIX::" + member_name + " " + var_name + "("+self.ddsObj+"."+ member_name+");\n"; + dds2fix_cpp_def += "\tFIX::" + member_name + " " + var_name + "("+self.ddsObj+"."+ member_name+"());\n"; dds2fix_cpp_def += "\t"+self.fixObj+".setField("+var_name+");\n\n"; return fix2dds_cpp_def, dds2fix_cpp_def; def get_cpp_declare_statement(self): - fix2dds_cpp_def = ""; - dds2fix_cpp_def = ""; + fix2dds_cpp_def = "" + dds2fix_cpp_def = "" if self.gen_requirements is None or self.gen_requirements.get("gen_cpp") == 'Y': - fix2dds_member_statement_cpp, dds2fix_member_statement_cpp = self.get_cpp_member_statement(self.name); - fix2dds_cpp_def += fix2dds_member_statement_cpp; - dds2fix_cpp_def += dds2fix_member_statement_cpp; + fix2dds_member_statement_cpp, dds2fix_member_statement_cpp = self.get_cpp_member_statement(self.name) + fix2dds_cpp_def += fix2dds_member_statement_cpp + dds2fix_cpp_def += dds2fix_member_statement_cpp - return fix2dds_cpp_def, dds2fix_cpp_def; + return fix2dds_cpp_def, dds2fix_cpp_def class GroupMember(Member): def __init__(self, type, name, parent ): - self.type = type; - self.name = name; - self.parent = parent; + self.type = type + self.name = name + self.parent = parent def add_group_components(self, component_item, component_parser, field_types): #print("Group Component :" + component_item.get("name")); component_name = component_item.get("name"); - self.group_components = component_item; - self.component_parser = component_parser; - self.field_types = field_types; + self.group_components = component_item + self.component_parser = component_parser + self.field_types = field_types def get_idl_statement(self): - idl_def = "\t\t" + self.name + "Seq c_" + self.name + ";\n"; - return idl_def; + idl_def = "\t\t" + self.name + "Seq c_" + self.name + ";\n" + return idl_def def get_logger_statement(self, entity_name): - parent_component = self.component_parser.compenent_dict.get(self.parent); + parent_component = self.component_parser.compenent_dict.get(self.parent) + + logger_def = "\n\t\t;out << \"ddsMsg.c_" + self.name + "\" << std::endl; \n\t \tout << \"{\" << std::endl;\n" + for group_component in parent_component.groups: + logger_def += "\n\t\tfor ( int tt = 0; tt < ddsMsg.c_" + self.name + "().size(); tt++)\n\t\t{\n" + for member in group_component.members: + logger_def += "\n\t\t\t ;out << \"" + "ddsMsg.c_" + self.name + "()[\" << tt << \"]." + \ + member.name + " : " + "\" << ddsMsg.c_" + self.name + "()[tt]." + member.name + "() << std::endl;"; + logger_def += "\n\t\t};\n" - logger_def = "\n\t\t;out << \"ddsMsg.c_" + self.name + "\" << std::endl; \n\t \tout << \"{\" << std::endl;\n"; - for group_component in parent_component.groups: - logger_def += "\n\t\tfor ( int tt = 0; tt < ddsMsg.c_" + self.name + ".length(); tt++)\n\t\t{\n"; - for member in group_component.members: - logger_def += "\n\t\t\t ;out << \"" + "ddsMsg.c_" + self.name + "[\" << tt << \"]." + member.name + " : " + "\" << ddsMsg.c_" + self.name + "[tt]." + member.name + " << std::endl;"; - logger_def += "\n\t\t};\n"; + logger_def += "\n\t\t;out << \"}\" << std::endl;" - logger_def += "\n\t\t;out << \"}\" << std::endl;"; + return logger_def - return logger_def; def get_cpp_declare_statement(self): - fix2dds_cpp_def = ""; - dds2fix_cpp_def = ""; + fix2dds_cpp_def = "" + dds2fix_cpp_def = "" - group_count_index_var = self.type +"_group_cnt"+"_index"; - fix2dds_cpp_statement, dds2fix_cpp_statement = self.get_cpp_dds_to_fix(group_count_index_var); + group_count_index_var = self.type +"_group_cnt"+"_index" + fix2dds_cpp_statement, dds2fix_cpp_statement = self.get_cpp_dds_to_fix(group_count_index_var) - group_count_var = self.type +"_group_cnt"; + group_count_var = self.type +"_group_cnt" - fix2dds_cpp_def += "// There is a group\n\n" + "\tFIX::" + self.type + " " + group_count_var + " = " + "FIELD_GET_REF( fixMsg," + self.type + ");\n\n"; - fix2dds_cpp_def += "\tddsMsg.c_"+self.name+".length("+ group_count_var+ ".getValue());\n\n"; - fix2dds_cpp_def += "\tint "+ group_count_index_var +" = 0;\n\twhile ( "+ group_count_index_var +" < "+ group_count_var+".getValue())\n\t{\n"; - fix2dds_cpp_def += "\t\t" + self.get_fix_group_definition(self.group_components) + ";\n"; - fix2dds_cpp_def += "\t\tfixMsg.getGroup("+group_count_index_var+"+1, grp);\n"; - #fix2dds_cpp_def += "\t\tfixMsg.getGroup(ii, FIX::FIELD::" + self.type + ", grp);\n"; - fix2dds_cpp_def += fix2dds_cpp_statement; - fix2dds_cpp_def += "\t\t"+group_count_index_var+"++;\n"; - fix2dds_cpp_def += "\t};\n;"; + fix2dds_cpp_def += "// There is a group\n\n" + "\tFIX::" + self.type + " " + group_count_var + " = " + "FIELD_GET_REF( fixMsg," + self.type + ");\n\n" + fix2dds_cpp_def += "\tddsMsg.c_"+self.name+"().resize("+ group_count_var+ ".getValue());\n\n" + fix2dds_cpp_def += "\tint "+ group_count_index_var +" = 0;\n\twhile ( "+ group_count_index_var +" < "+ group_count_var+".getValue())\n\t{\n" + fix2dds_cpp_def += "\t\t" + self.get_fix_group_definition(self.group_components) + ";\n" + fix2dds_cpp_def += "\t\tfixMsg.getGroup("+group_count_index_var+"+1, grp);\n" + #fix2dds_cpp_def += "\t\tfixMsg.getGroup(ii, FIX::FIELD::" + self.type + ", grp);\n" + fix2dds_cpp_def += fix2dds_cpp_statement + fix2dds_cpp_def += "\t\t"+group_count_index_var+"++;\n" + fix2dds_cpp_def += "\t};\n;" - dds2fix_cpp_def += "\tfor ( long "+ group_count_index_var +" = 0; "+ group_count_index_var +"\n") + + self.component_parser.complete_dependency_list.append(message_name) + hpp_file.write(QuickFIX2FastDDS.DONT_MODIFY_TEXT) + # hpp_file.write("#ifndef __" + message_name + "_h__\n") + # hpp_file.write("#define __" + message_name + "_h__\n\n") + hpp_file.write("#pragma once\n") + + hpp_file.write("#include \"" + message_name + ".hpp\"\n") + hpp_file.write("#include \n\n") + + for dependency_name in dependency_list: + hpp_file.write("#include \"" + dependency_name + "Adapter.hpp\"\n") + + if dependency_name not in self.component_parser.complete_dependency_list: + self.component_parser.complete_dependency_list.append(dependency_name) + + hpp_file.write(message_contexts.get_entity_hpp("DistributedATS_")) + cpp_file.write(message_contexts.get_entity_cpp("DistributedATS_")) + + hpp_file.close() + + + def store_message(self): + + for message_name, message_contexts in self.message_dict.items(): + + if message_name not in self.requiredFieldsComponents.required_messages: + continue + + dependency_list = self.message_dep_dict[message_name] + + self.store_idls(message_name, message_contexts, dependency_list) + self.store_hpp_cpp(message_name, message_contexts, dependency_list) + self.store_logger(message_name, message_contexts, dependency_list) \ No newline at end of file diff --git a/GenTools/QuickFIX2OpenDDS/QuickFIX2OpenDDS.py b/GenTools/QuickFIX2FastDDS/QuickFIX2FastDDS.py similarity index 60% rename from GenTools/QuickFIX2OpenDDS/QuickFIX2OpenDDS.py rename to GenTools/QuickFIX2FastDDS/QuickFIX2FastDDS.py index c1a20eb..ca6ef50 100644 --- a/GenTools/QuickFIX2OpenDDS/QuickFIX2OpenDDS.py +++ b/GenTools/QuickFIX2FastDDS/QuickFIX2FastDDS.py @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,19 +26,21 @@ """ -import sys,getopt; -import RequiredFieldsComponents; -import ComponentParser; -import MessageParser; +import sys +import getopt +import RequiredFieldsComponents +import ComponentParser +import MessageParser -import xml.etree.ElementTree as xml_parser; +import xml.etree.ElementTree as xml_parser -DONT_MODIFY_TEXT = "// Don't modify, automatically generated file by QuickFIX2OpenDDS.py\n"; +DONT_MODIFY_TEXT = "/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/\n" def print_help(): - print('QuickFIX2OpenDDS.py converts specified in requirements file messages, groups and fields from FIX specs to OpenDDS IDL libraries and conversion helper classes'); - print('QuickFIX2OpenDDS.py -r -s '); - print('try this : python QuickFIX2OpenDDS.py -r ../spec/dats_requirements.xml -s ../../FIXGateway/spec/FIX44.xml'); + print('QuickFIX2FastDDS.py converts specified in requirements file messages, groups and fields from FIX specs to ' + 'DDS IDL libraries and conversion helper classes') + print('QuickFIX2FastDDS.py -r -s ') + print('try this : python QuickFIX2FastDDS.py -r ../spec/dats_requirements.xml -s ../../FIXGateway/spec/FIX44.xml') def main(argv): requirements = '' @@ -47,11 +49,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, "hr:s:", ["rfile=", "sfile="]) except getopt.GetoptError: - print_help(); + print_help() sys.exit(2) for opt, arg in opts: if opt == '-h': - print_help(); + print_help() sys.exit() elif opt in ("-r", "--rfile"): requirements = arg @@ -59,44 +61,46 @@ def main(argv): fix_specs = arg if requirements == "" or fix_specs == "": - print_help(); - exit(1); + print_help() + exit(1) - print('Requirements file is :', requirements); + print('Requirements file is :', requirements) print('FIX Specs file is :', fix_specs) - generate( requirements, fix_specs ); + generate( requirements, fix_specs) -def generate( requirements, fix_spec ): - requiredFieldsComponents = RequiredFieldsComponents.RequiredFieldsComponents(requirements); - fix_specs = xml_parser.parse(fix_spec); +def generate( requirements, fix_spec): + requiredFieldsComponents = RequiredFieldsComponents.RequiredFieldsComponents(requirements) + fix_specs = xml_parser.parse(fix_spec) - component_parser = ComponentParser.ComponentParser(requiredFieldsComponents); - message_parser = MessageParser.MessageParser(requiredFieldsComponents,component_parser); + component_parser = ComponentParser.ComponentParser(requiredFieldsComponents) + message_parser = MessageParser.MessageParser(requiredFieldsComponents, component_parser) - header_list_comp = []; - header_messages = dict(); - required_header_fields = []; + header_list_comp = [] + header_messages = dict() + required_header_fields = [] - print("----- Processing Required Fields for QuickFIX Components -----"); - component_parser.parse_components(fix_specs); - print("--------------------------------------------------------------\n"); + print("----- Processing Required Fields for QuickFIX Components -----") + component_parser.parse_components(fix_specs) + print("--------------------------------------------------------------\n") - print("----- Processing Required Fields for QuickFIX Header -----"); - header_out = component_parser.parse_components_rec('Header', fix_specs.find('header'),header_messages,header_list_comp,required_header_fields, False); - component_dependency_dictionary = component_parser.component_dep_dict; # this list is required to populate dependecies for MPC to work - print("--------------------------------------------------------------\n"); + print("----- Processing Required Fields for QuickFIX Header -----") + header_out = component_parser.parse_components_rec('Header', fix_specs.find('header'), + header_messages, header_list_comp, required_header_fields, False) + component_dependency_dictionary = component_parser.component_dep_dict + print("--------------------------------------------------------------\n") - print("----- Processing Required Fields for QuickFIX Message -----"); - message_parser.parse_messages(fix_specs, component_dependency_dictionary); - print("--------------------------------------------------------------\n"); + print("----- Processing Required Fields for QuickFIX Message -----") + message_parser.parse_messages(fix_specs, component_dependency_dictionary) + print("--------------------------------------------------------------\n") - component_parser.compenent_dict["Header"] = header_out; - component_parser.complete_dependency_list.append("Header"); - component_parser.component_dep_dict["Header"] = []; + component_parser.compenent_dict["Header"] = header_out + component_parser.complete_dependency_list.append("Header") + component_parser.component_dep_dict["Header"] = [] - message_parser.store_message(); - component_parser.store_components(); + message_parser.store_message() + component_parser.store_components() +#/Users/mkipnis/Fast-DDS/Fast-DDS-Gen/scripts/fastddsgen *.idl if __name__ == "__main__": - main(sys.argv[1:]); + main(sys.argv[1:]) diff --git a/GenTools/QuickFIX2OpenDDS/RequiredFieldsComponents.py b/GenTools/QuickFIX2FastDDS/RequiredFieldsComponents.py similarity index 65% rename from GenTools/QuickFIX2OpenDDS/RequiredFieldsComponents.py rename to GenTools/QuickFIX2FastDDS/RequiredFieldsComponents.py index 04584cf..00a713c 100644 --- a/GenTools/QuickFIX2OpenDDS/RequiredFieldsComponents.py +++ b/GenTools/QuickFIX2FastDDS/RequiredFieldsComponents.py @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,36 +26,36 @@ """ -import xml.etree.ElementTree as xml_parser; +import xml.etree.ElementTree as xml_parser class RequiredFieldsComponents: def __init__(self, filename): - self.requirements = xml_parser.parse(filename); - self.required_messages = {}; - self.required_components = {}; - self.required_fields = {}; - self.types = {}; - messages = self.requirements.find('messages'); - self.populate_elements(messages, self.required_messages); + self.requirements = xml_parser.parse(filename) + self.required_messages = {} + self.required_components = {} + self.required_fields = {} + self.types = {} - components = self.requirements.find('components'); - self.populate_elements(components, self.required_components); + messages = self.requirements.find('messages') + self.populate_elements(messages, self.required_messages) - fields = self.requirements.find('fields'); - self.populate_elements(fields, self.required_fields); + components = self.requirements.find('components') + self.populate_elements(components, self.required_components) - types = self.requirements.find("types"); + fields = self.requirements.find('fields') + self.populate_elements(fields, self.required_fields) + + types = self.requirements.find("types") for type_item in types: - fix_type = type_item.get("fix"); - self.types[fix_type] = type_item; + fix_type = type_item.get("fix") + self.types[fix_type] = type_item # elements : messages or components - def populate_elements(self, elements, required_elements ): - + def populate_elements(self, elements, required_elements): for item in elements: - element_name = item.get("name"); - required_elements[element_name] = item; + element_name = item.get("name") + required_elements[element_name] = item diff --git a/GenTools/QuickFIX2OpenDDS/MessageParser.py b/GenTools/QuickFIX2OpenDDS/MessageParser.py deleted file mode 100644 index 5f8415c..0000000 --- a/GenTools/QuickFIX2OpenDDS/MessageParser.py +++ /dev/null @@ -1,263 +0,0 @@ -""" - Copyright (C) 2021 Mike Kipnis - - This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies - the process of having multiple FIX gateways communicating with multiple - matching engines in realtime. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - -""" - -import QuickFIX2OpenDDS; - -class MessageParser: - - def __init__(self, requiredFieldsComponents, component_parser ): - self.requiredFieldsComponents = requiredFieldsComponents; - self.component_parser = component_parser; - self.message_list = []; - self.message_dep_dict = {}; - self.message_dict = {}; - self.messages = dict(); - self.message_dep_dict = dict(); - self.internal_dependences = []; - - def parse_messages(self, quick_fix_specs, component_dependencies): - - for item in quick_fix_specs.find('messages'): - message_name = item.get("name"); - if message_name not in self.requiredFieldsComponents.required_messages: - continue; - - print("Processing Message : " + message_name ); - - message_list_comp = []; - - required_fields = self.requiredFieldsComponents.required_fields; - - message_entity = self.component_parser.parse_components_rec(message_name, item, self.messages, message_list_comp, required_fields, True); - - current_dependency_list = message_list_comp; - - # in order to generate correct MPC file, we need all depenecies used by all components - for component_dependency in message_list_comp: - self.populate_component_dependency_list(component_dependency, current_dependency_list, component_dependencies); - - message_list_comp.append('Header'); - self.message_list.append(current_dependency_list); - - self.message_dep_dict[message_name] = message_list_comp; - self.message_dict[message_name] = message_entity; - - # Triverse all dependencies - def populate_component_dependency_list(self, component_dependency_name, current_depency_list, component_dependencies): - - print("Checking dependency ["+ component_dependency_name+ "]" ) - if component_dependency_name in component_dependencies.keys(): - - if component_dependency_name not in current_depency_list: - current_depency_list.append(component_dependency_name); - - component_depenecy_list = component_dependencies.get(component_dependency_name); - - for component_depenecy_list_component_name in component_depenecy_list: - self.populate_component_dependency_list(component_depenecy_list_component_name, current_depency_list, component_dependencies); - - - def populate_all_dependencies(self, name ): - - if name not in self.internal_dependences: - self.internal_dependences.append(name); - - if name in self.message_dep_dict.keys(): - msg_deps = self.message_dep_dict[name]; - for msg_dep in msg_deps: - self.populate_all_dependences(self, msg_dep ); - - def get_dds_export_statement(self): - dds_exports = str("\tdynamicflags = DISTRIBUTEDATS_BUILD_DLL \n" + - "\tlibout = $(DATS_HOME)/lib \n" + - "\trequires += tao_orbsvcs \n" + - "\tafter += Svc_Utils \n" + - "\tincludes += $(TAO_ROOT)/orbsvcs \n" + - "\tidlflags += -I$(TAO_ROOT)/orbsvcs \ \n" + - "\t\t-Wb,export_macro=DistributedATS_Export \ \n" + - "\t\t-Wb,export_include=DistributedATS_Export.h \n" + - "\t\tdcps_ts_flags += -Wb,export_macro=DistributedATS_Export \n\n"); - - return dds_exports; - - def store_mpc(self, message_name, dependency_list ): - - mpc_file = open("../idl/QuickFixIDL" + message_name + ".mpc", "w") - mpc_file.write(QuickFIX2OpenDDS.DONT_MODIFY_TEXT); - mpc_file.write("project(" + message_name + ") : dcps {\n\n"); - mpc_file.write(self.get_dds_export_statement()); - #mpc_file.write("\n\tincludes += $(QUICKFIX_HOME)/include \n\tlibpaths += $(QUICKFIX_HOME)/lib\n\tlibs += quickfix\n"); - - for dependency_name in dependency_list: - self.populate_all_dependencies(dependency_name); - if dependency_name in self.message_dep_dict.keys(): - component_list_comp = self.message_dep_dict[dependency_name]; - for component_name in component_list_comp: - self.populate_all_dependencies(component_name); - - mpc_file.write("\tTypeSupport_Files{\n\t" + message_name + ".idl\n"); - for in_dep in self.internal_dependences: - mpc_file.write(in_dep + ".idl\n"); - mpc_file.write("\n}\n\n"); - - mpc_file.write("\tIDL_Files{\n\t" + message_name + "TypeSupport.idl\n\n"); - mpc_file.write(message_name + ".idl\n"); - for in_dep in self.internal_dependences: - mpc_file.write(in_dep + ".idl\n"); - mpc_file.write(in_dep + "TypeSupport.idl\n"); - mpc_file.write("\n}\n\n"); - - mpc_file.write("\tHeader_Files {\n\n\t}\n"); - mpc_file.write("\tSource_Files {\n\n\t}\n"); - - mpc_file.write("}\n\n"); - - def store_adapter_mpc(self, message_list, complete_dependency_list): - - mpc_file = open("../idl/Adapters.mpc", "w") - mpc_file.write("project( Adapters ) : dcps {\n\n"); - after_list_str = ""; - - for message_name in message_list: - after_list_str += " "; - after_list_str += message_name; - - after_list_str += "\n"; - - mpc_file.write("\tafter +=" + after_list_str); - - mpc_file.write(self.get_dds_export_statement()); - - mpc_file.write("\n\tincludes += $(QUICKFIX_HOME)/include \n\tlibpaths += $(QUICKFIX_HOME)/lib\n\tlibs += quickfix "+ after_list_str +"\n"); - - headers_str = "\tHeader_Files {\n\n\t"; - source_str = "\tSource_Files {\n\n\t"; - for dependency in complete_dependency_list: - headers_str += "\t"+dependency+"Adapter.hpp\n"; - source_str += "\t" + dependency + "Adapter.cpp\n"; - headers_str += "\t}\n"; - source_str += "\t}\n"; - - mpc_file.write(headers_str); - mpc_file.write(source_str); - - mpc_file.write("}\n\n"); - - def store_idls(self, message_name, message_contexts, dependency_list): - - idl_file = open("../idl/" + message_name + ".idl", "w") - - idl_file.write(QuickFIX2OpenDDS.DONT_MODIFY_TEXT); - #idl_file.write("#include \"DATSTypes.idl\"\n"); - for dependency_name in dependency_list: - idl_file.write("#include \"" + dependency_name + ".idl\"\n"); - - if dependency_name not in self.component_parser.complete_dependency_list: - self.component_parser.complete_dependency_list.append(dependency_name) - - idl_file.write("\n"); - - idl_file.write("module DistributedATS_" + message_name + "\n"); - #idl_file.write("{\n#pragma DCPS_DATA_TYPE \"DistributedATS_" + message_name + "::" + message_name + "\"\n\n"); - - #idl_file.write("{\n\t@topic\n"); - - idl_file.write("{\n\n"); - - idl_file.write(message_contexts.get_entity_idl()) - idl_file.write("};\n") - - idl_file.close() - - def store_logger(self, message_name, message_contexts, dependency_list): - - logger_file = open("../idl/" + message_name + "Logger.hpp", "w") - - logger_file.write(QuickFIX2OpenDDS.DONT_MODIFY_TEXT); - logger_file.write("#ifndef __" + message_name + "Logger_h__\n"); - logger_file.write("#define __" + message_name + "Logger_h__\n\n"); - - logger_file.write("#include \"" + message_name + "TypeSupportImpl.h\"\n"); - - for dependency_name in dependency_list: - logger_file.write("#include \"" + dependency_name + "Logger.hpp\"\n"); - - if dependency_name not in self.component_parser.complete_dependency_list: - self.component_parser.complete_dependency_list.append(dependency_name) - - logger_file.write(";\n"); - - logger_file.write(message_contexts.get_entity_logger("DistributedATS_")); - logger_file.write("\n};\n"); - - logger_file.write("\n#endif\n\n"); - logger_file.close(); - - def store_hpp_cpp(self, message_name, message_contexts, dependency_list): - - hpp_file = open("../idl/" + message_name + "Adapter.hpp", "w") - cpp_file = open("../idl/" + message_name + "Adapter.cpp", "w") - cpp_file.write(QuickFIX2OpenDDS.DONT_MODIFY_TEXT); - cpp_file.write("#include \"" + message_name+"Adapter.hpp\"\n"); - cpp_file.write("#include \"ConvertUtils.h\"\n"); - - self.component_parser.complete_dependency_list.append(message_name); - hpp_file.write(QuickFIX2OpenDDS.DONT_MODIFY_TEXT); - hpp_file.write("#ifndef __" + message_name + "_h__\n"); - hpp_file.write("#define __" + message_name + "_h__\n\n"); - hpp_file.write("#include \"" + message_name + "TypeSupportImpl.h\"\n"); - hpp_file.write("#include \n\n using namespace DistributedATS;\n\n"); - - for dependency_name in dependency_list: - hpp_file.write("#include \"" + dependency_name + "Adapter.hpp\"\n"); - - if dependency_name not in self.component_parser.complete_dependency_list: - self.component_parser.complete_dependency_list.append(dependency_name) - - hpp_file.write(message_contexts.get_entity_hpp("DistributedATS_")); - cpp_file.write(message_contexts.get_entity_cpp("DistributedATS_")); - - - hpp_file.write("\n#endif\n\n"); - hpp_file.close(); - - def store_message(self): - - for message_name, message_contexts in self.message_dict.items(): - - if message_name not in self.requiredFieldsComponents.required_messages: - continue; - - dependency_list = self.message_dep_dict[message_name]; - - self.store_mpc(message_name, dependency_list); - self.store_idls(message_name, message_contexts, dependency_list); - self.store_hpp_cpp(message_name, message_contexts, dependency_list); - self.store_logger(message_name, message_contexts, dependency_list); - - self.store_adapter_mpc(self.message_dict.keys(), self.component_parser.complete_dependency_list); diff --git a/GenTools/README.md b/GenTools/README.md index 9fdd659..423efdb 100644 --- a/GenTools/README.md +++ b/GenTools/README.md @@ -1,10 +1,20 @@ ## GenTools -QuickFIX2OpenDDS.py converts specified in the requirements file messages, groups, and fields from the FIX specs to the OpenDDS IDL libraries and conversion helper classes. +QuickFIX2FastDDS.py converts specified in the requirements file messages, groups, and fields from the FIX specs to the FastDDS IDL libraries and conversion helper classes. -QuickFIX2OpenDDS/QuickFIX2OpenDDS.py -r -s +cd QuickFIX2FastDDS +QuickFIX2FastDDS.py -r -s Example: ``` -python QuickFIX2OpenDDS.py -r ../spec/dats_requirements.xml -s ../../FIXGateway/spec/FIX44.xml +python QuickFIX2FastDDS.py -r ../spec/dats_requirements.xml -s ../../FIXGateway/spec/FIX44.xml ``` + +To regenerate hpp and cpp files from idl +----------------------------------------- +git clone https://github.com/eProsima/Fast-DDS-Gen.git +cd Fast-DDS-Gen +./gradlew assemble + +cd .. +run_fastddsgen.sh diff --git a/GenTools/idl/Adapters.mpc b/GenTools/idl/Adapters.mpc deleted file mode 100644 index cc8bc98..0000000 --- a/GenTools/idl/Adapters.mpc +++ /dev/null @@ -1,62 +0,0 @@ -project( Adapters ) : dcps { - - after += Heartbeat Logout ExecutionReport OrderCancelReject Logon NewOrderSingle OrderCancelRequest OrderCancelReplaceRequest MarketDataRequest MarketDataSnapshotFullRefresh MarketDataIncrementalRefresh BusinessMessageReject OrderMassCancelRequest OrderMassCancelReport SecurityListRequest SecurityList OrderMassStatusRequest - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - - includes += $(QUICKFIX_HOME)/include - libpaths += $(QUICKFIX_HOME)/lib - libs += quickfix Heartbeat Logout ExecutionReport OrderCancelReject Logon NewOrderSingle OrderCancelRequest OrderCancelReplaceRequest MarketDataRequest MarketDataSnapshotFullRefresh MarketDataIncrementalRefresh BusinessMessageReject OrderMassCancelRequest OrderMassCancelReport SecurityListRequest SecurityList OrderMassStatusRequest - - Header_Files { - - HeaderAdapter.hpp - HeartbeatAdapter.hpp - LogoutAdapter.hpp - ExecutionReportAdapter.hpp - OrderCancelRejectAdapter.hpp - LogonAdapter.hpp - NewOrderSingleAdapter.hpp - OrderCancelRequestAdapter.hpp - OrderCancelReplaceRequestAdapter.hpp - MarketDataRequestAdapter.hpp - MarketDataSnapshotFullRefreshAdapter.hpp - MarketDataIncrementalRefreshAdapter.hpp - BusinessMessageRejectAdapter.hpp - OrderMassCancelRequestAdapter.hpp - OrderMassCancelReportAdapter.hpp - SecurityListRequestAdapter.hpp - SecurityListAdapter.hpp - OrderMassStatusRequestAdapter.hpp - } - Source_Files { - - HeaderAdapter.cpp - HeartbeatAdapter.cpp - LogoutAdapter.cpp - ExecutionReportAdapter.cpp - OrderCancelRejectAdapter.cpp - LogonAdapter.cpp - NewOrderSingleAdapter.cpp - OrderCancelRequestAdapter.cpp - OrderCancelReplaceRequestAdapter.cpp - MarketDataRequestAdapter.cpp - MarketDataSnapshotFullRefreshAdapter.cpp - MarketDataIncrementalRefreshAdapter.cpp - BusinessMessageRejectAdapter.cpp - OrderMassCancelRequestAdapter.cpp - OrderMassCancelReportAdapter.cpp - SecurityListRequestAdapter.cpp - SecurityListAdapter.cpp - OrderMassStatusRequestAdapter.cpp - } -} - diff --git a/GenTools/idl/BusinessMessageReject.hpp b/GenTools/idl/BusinessMessageReject.hpp new file mode 100644 index 0000000..54eef88 --- /dev/null +++ b/GenTools/idl/BusinessMessageReject.hpp @@ -0,0 +1,514 @@ +// 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 BusinessMessageReject.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECT_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(BUSINESSMESSAGEREJECT_SOURCE) +#define BUSINESSMESSAGEREJECT_DllAPI __declspec( dllexport ) +#else +#define BUSINESSMESSAGEREJECT_DllAPI __declspec( dllimport ) +#endif // BUSINESSMESSAGEREJECT_SOURCE +#else +#define BUSINESSMESSAGEREJECT_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define BUSINESSMESSAGEREJECT_DllAPI +#endif // _WIN32 + +namespace DistributedATS_BusinessMessageReject { + +/*! + * @brief This class represents the structure BusinessMessageReject defined by the user in the IDL file. + * @ingroup BusinessMessageReject + */ +class BusinessMessageReject +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport BusinessMessageReject() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~BusinessMessageReject() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object BusinessMessageReject that will be copied. + */ + eProsima_user_DllExport BusinessMessageReject( + const BusinessMessageReject& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_RefMsgType = x.m_RefMsgType; + + m_BusinessRejectReason = x.m_BusinessRejectReason; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object BusinessMessageReject that will be copied. + */ + eProsima_user_DllExport BusinessMessageReject( + BusinessMessageReject&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_RefMsgType = std::move(x.m_RefMsgType); + m_BusinessRejectReason = x.m_BusinessRejectReason; + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object BusinessMessageReject that will be copied. + */ + eProsima_user_DllExport BusinessMessageReject& operator =( + const BusinessMessageReject& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_RefMsgType = x.m_RefMsgType; + + m_BusinessRejectReason = x.m_BusinessRejectReason; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object BusinessMessageReject that will be copied. + */ + eProsima_user_DllExport BusinessMessageReject& operator =( + BusinessMessageReject&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_RefMsgType = std::move(x.m_RefMsgType); + m_BusinessRejectReason = x.m_BusinessRejectReason; + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x BusinessMessageReject object to compare. + */ + eProsima_user_DllExport bool operator ==( + const BusinessMessageReject& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_RefMsgType == x.m_RefMsgType && + m_BusinessRejectReason == x.m_BusinessRejectReason && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x BusinessMessageReject object to compare. + */ + eProsima_user_DllExport bool operator !=( + const BusinessMessageReject& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member RefMsgType + * @param _RefMsgType New value to be copied in member RefMsgType + */ + eProsima_user_DllExport void RefMsgType( + const std::string& _RefMsgType) + { + m_RefMsgType = _RefMsgType; + } + + /*! + * @brief This function moves the value in member RefMsgType + * @param _RefMsgType New value to be moved in member RefMsgType + */ + eProsima_user_DllExport void RefMsgType( + std::string&& _RefMsgType) + { + m_RefMsgType = std::move(_RefMsgType); + } + + /*! + * @brief This function returns a constant reference to member RefMsgType + * @return Constant reference to member RefMsgType + */ + eProsima_user_DllExport const std::string& RefMsgType() const + { + return m_RefMsgType; + } + + /*! + * @brief This function returns a reference to member RefMsgType + * @return Reference to member RefMsgType + */ + eProsima_user_DllExport std::string& RefMsgType() + { + return m_RefMsgType; + } + + + /*! + * @brief This function sets a value in member BusinessRejectReason + * @param _BusinessRejectReason New value for member BusinessRejectReason + */ + eProsima_user_DllExport void BusinessRejectReason( + int32_t _BusinessRejectReason) + { + m_BusinessRejectReason = _BusinessRejectReason; + } + + /*! + * @brief This function returns the value of member BusinessRejectReason + * @return Value of member BusinessRejectReason + */ + eProsima_user_DllExport int32_t BusinessRejectReason() const + { + return m_BusinessRejectReason; + } + + /*! + * @brief This function returns a reference to member BusinessRejectReason + * @return Reference to member BusinessRejectReason + */ + eProsima_user_DllExport int32_t& BusinessRejectReason() + { + return m_BusinessRejectReason; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_RefMsgType; + int32_t m_BusinessRejectReason{0}; + std::string m_Text; + +}; + +} // namespace DistributedATS_BusinessMessageReject + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECT_HPP_ + + diff --git a/GenTools/idl/BusinessMessageReject.idl b/GenTools/idl/BusinessMessageReject.idl index 3af0ee2..d3e4886 100644 --- a/GenTools/idl/BusinessMessageReject.idl +++ b/GenTools/idl/BusinessMessageReject.idl @@ -1,13 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_BusinessMessageReject { - @topic + struct BusinessMessageReject { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string RefMsgType; long BusinessRejectReason; string Text; diff --git a/GenTools/idl/BusinessMessageRejectAdapter.cpp b/GenTools/idl/BusinessMessageRejectAdapter.cpp index d929403..8f859cc 100644 --- a/GenTools/idl/BusinessMessageRejectAdapter.cpp +++ b/GenTools/idl/BusinessMessageRejectAdapter.cpp @@ -1,22 +1,22 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "BusinessMessageRejectAdapter.hpp" -#include "ConvertUtils.h" +#include void BusinessMessageRejectAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_BusinessMessageReject::BusinessMessageReject& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::RefMsgType) ) - ddsMsg.RefMsgType = CORBA::string_dup(((FIX::RefMsgType)fixMsg.getField(FIX::FIELD::RefMsgType)).getString().c_str()); + ddsMsg.RefMsgType ( ((FIX::RefMsgType)fixMsg.getField(FIX::FIELD::RefMsgType)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::BusinessRejectReason) ) - ddsMsg.BusinessRejectReason = FIELD_GET_REF( fixMsg,BusinessRejectReason); + ddsMsg.BusinessRejectReason ( FIELD_GET_REF( fixMsg,BusinessRejectReason)); else - ddsMsg.BusinessRejectReason = 0; + ddsMsg.BusinessRejectReason ( 0 ); if (fixMsg.isSetField(FIX::FIELD::Text) ) - ddsMsg.Text = CORBA::string_dup(((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.Text ( ((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); }; @@ -25,14 +25,14 @@ void BusinessMessageRejectAdapter::FIX2DDS(const FIX::Message& fixMsg, Distribut void BusinessMessageRejectAdapter::DDS2FIX(const DistributedATS_BusinessMessageReject::BusinessMessageReject& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.RefMsgType.in(), FIX::FIELD::RefMsgType, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.RefMsgType(), FIX::FIELD::RefMsgType, fixMsg); - FIX::BusinessRejectReason fixBusinessRejectReason(ddsMsg.BusinessRejectReason); + FIX::BusinessRejectReason fixBusinessRejectReason(ddsMsg.BusinessRejectReason()); fixMsg.setField(fixBusinessRejectReason); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Text.in(), FIX::FIELD::Text, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Text(), FIX::FIELD::Text, fixMsg); }; diff --git a/GenTools/idl/BusinessMessageRejectAdapter.hpp b/GenTools/idl/BusinessMessageRejectAdapter.hpp index 1a0c95b..0c31009 100644 --- a/GenTools/idl/BusinessMessageRejectAdapter.hpp +++ b/GenTools/idl/BusinessMessageRejectAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __BusinessMessageReject_h__ -#define __BusinessMessageReject_h__ - -#include "BusinessMessageRejectTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "BusinessMessageReject.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class BusinessMessageRejectAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_BusinessMessageReject::BusinessMessageReject& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_BusinessMessageReject::BusinessMessageReject& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/BusinessMessageRejectCdrAux.hpp b/GenTools/idl/BusinessMessageRejectCdrAux.hpp new file mode 100644 index 0000000..b2de7e0 --- /dev/null +++ b/GenTools/idl/BusinessMessageRejectCdrAux.hpp @@ -0,0 +1,47 @@ +// 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 BusinessMessageRejectCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECTCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECTCDRAUX_HPP + +#include "BusinessMessageReject.hpp" + +constexpr uint32_t DistributedATS_BusinessMessageReject_BusinessMessageReject_max_cdr_typesize {3148UL}; +constexpr uint32_t DistributedATS_BusinessMessageReject_BusinessMessageReject_max_key_cdr_typesize {0UL}; + + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_BusinessMessageReject::BusinessMessageReject& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECTCDRAUX_HPP + diff --git a/GenTools/idl/BusinessMessageRejectCdrAux.ipp b/GenTools/idl/BusinessMessageRejectCdrAux.ipp new file mode 100644 index 0000000..ec22456 --- /dev/null +++ b/GenTools/idl/BusinessMessageRejectCdrAux.ipp @@ -0,0 +1,209 @@ +// 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 BusinessMessageRejectCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECTCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECTCDRAUX_IPP + +#include "BusinessMessageRejectCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_BusinessMessageReject::BusinessMessageReject& data, + size_t& current_alignment) +{ + using namespace DistributedATS_BusinessMessageReject; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.RefMsgType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.BusinessRejectReason(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_BusinessMessageReject::BusinessMessageReject& data) +{ + using namespace DistributedATS_BusinessMessageReject; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.RefMsgType() + << eprosima::fastcdr::MemberId(6) << data.BusinessRejectReason() + << eprosima::fastcdr::MemberId(7) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_BusinessMessageReject::BusinessMessageReject& data) +{ + using namespace DistributedATS_BusinessMessageReject; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.RefMsgType(); + break; + + case 6: + dcdr >> data.BusinessRejectReason(); + break; + + case 7: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_BusinessMessageReject::BusinessMessageReject& data) +{ + using namespace DistributedATS_BusinessMessageReject; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.RefMsgType(); + + scdr << data.BusinessRejectReason(); + + scdr << data.Text(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECTCDRAUX_IPP + diff --git a/GenTools/idl/BusinessMessageRejectLogger.hpp b/GenTools/idl/BusinessMessageRejectLogger.hpp index c694d0f..f0939b1 100644 --- a/GenTools/idl/BusinessMessageRejectLogger.hpp +++ b/GenTools/idl/BusinessMessageRejectLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __BusinessMessageRejectLogger_h__ -#define __BusinessMessageRejectLogger_h__ - -#include "BusinessMessageRejectTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,17 +10,20 @@ class BusinessMessageRejectLogger static void log(std::ostream & out, DistributedATS_BusinessMessageReject::BusinessMessageReject& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : BusinessMessageReject { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.RefMsgType : " << ddsMsg.RefMsgType << std::endl - << "ddsMsg.BusinessRejectReason : " << ddsMsg.BusinessRejectReason << std::endl - << "ddsMsg.Text : " << ddsMsg.Text << std::endl + << "ddsMsg.RefMsgType : " << ddsMsg.RefMsgType() << std::endl + << "ddsMsg.BusinessRejectReason : " << ddsMsg.BusinessRejectReason() << std::endl + << "ddsMsg.Text : " << ddsMsg.Text() << std::endl ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/BusinessMessageRejectPubSubTypes.cxx b/GenTools/idl/BusinessMessageRejectPubSubTypes.cxx new file mode 100644 index 0000000..8d15dd5 --- /dev/null +++ b/GenTools/idl/BusinessMessageRejectPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 BusinessMessageRejectPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "BusinessMessageRejectPubSubTypes.hpp" + +#include +#include + +#include "BusinessMessageRejectCdrAux.hpp" +#include "BusinessMessageRejectTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_BusinessMessageReject { + BusinessMessageRejectPubSubType::BusinessMessageRejectPubSubType() + { + set_name("DistributedATS_BusinessMessageReject::BusinessMessageReject"); + uint32_t type_size = DistributedATS_BusinessMessageReject_BusinessMessageReject_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_BusinessMessageReject_BusinessMessageReject_max_key_cdr_typesize > 16 ? DistributedATS_BusinessMessageReject_BusinessMessageReject_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + BusinessMessageRejectPubSubType::~BusinessMessageRejectPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool BusinessMessageRejectPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const BusinessMessageReject* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool BusinessMessageRejectPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + BusinessMessageReject* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t BusinessMessageRejectPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* BusinessMessageRejectPubSubType::create_data() + { + return reinterpret_cast(new BusinessMessageReject()); + } + + void BusinessMessageRejectPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool BusinessMessageRejectPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + BusinessMessageReject data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool BusinessMessageRejectPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const BusinessMessageReject* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_BusinessMessageReject_BusinessMessageReject_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_BusinessMessageReject_BusinessMessageReject_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void BusinessMessageRejectPubSubType::register_type_object_representation() + { + register_BusinessMessageReject_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_BusinessMessageReject + + +// Include auxiliary functions like for serializing/deserializing. +#include "BusinessMessageRejectCdrAux.ipp" diff --git a/GenTools/idl/BusinessMessageRejectPubSubTypes.hpp b/GenTools/idl/BusinessMessageRejectPubSubTypes.hpp new file mode 100644 index 0000000..7d52bcd --- /dev/null +++ b/GenTools/idl/BusinessMessageRejectPubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 BusinessMessageRejectPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECT_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECT_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "BusinessMessageReject.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated BusinessMessageReject is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_BusinessMessageReject +{ + + /*! + * @brief This class represents the TopicDataType of the type BusinessMessageReject defined by the user in the IDL file. + * @ingroup BusinessMessageReject + */ + class BusinessMessageRejectPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef BusinessMessageReject type; + + eProsima_user_DllExport BusinessMessageRejectPubSubType(); + + eProsima_user_DllExport ~BusinessMessageRejectPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_BusinessMessageReject + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECT_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/BusinessMessageRejectTypeObjectSupport.cxx b/GenTools/idl/BusinessMessageRejectTypeObjectSupport.cxx new file mode 100644 index 0000000..74a4b6b --- /dev/null +++ b/GenTools/idl/BusinessMessageRejectTypeObjectSupport.cxx @@ -0,0 +1,360 @@ +// 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 BusinessMessageRejectTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "BusinessMessageRejectTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "BusinessMessageReject.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_BusinessMessageReject { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_BusinessMessageReject_type_identifier( + TypeIdentifierPair& type_ids_BusinessMessageReject) +{ + + ReturnCode_t return_code_BusinessMessageReject {eprosima::fastdds::dds::RETCODE_OK}; + return_code_BusinessMessageReject = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_BusinessMessageReject::BusinessMessageReject", type_ids_BusinessMessageReject); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_BusinessMessageReject) + { + StructTypeFlag struct_flags_BusinessMessageReject = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_BusinessMessageReject = "DistributedATS_BusinessMessageReject::BusinessMessageReject"; + eprosima::fastcdr::optional type_ann_builtin_BusinessMessageReject; + eprosima::fastcdr::optional ann_custom_BusinessMessageReject; + CompleteTypeDetail detail_BusinessMessageReject = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_BusinessMessageReject, ann_custom_BusinessMessageReject, type_name_BusinessMessageReject.to_string()); + CompleteStructHeader header_BusinessMessageReject; + header_BusinessMessageReject = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_BusinessMessageReject); + CompleteStructMemberSeq member_seq_BusinessMessageReject; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_BusinessMessageReject.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_BusinessMessageReject); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_BusinessMessageReject, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_BusinessMessageReject.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_BusinessMessageReject); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_BusinessMessageReject, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_BusinessMessageReject.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_BusinessMessageReject); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_BusinessMessageReject, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_BusinessMessageReject.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_BusinessMessageReject); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_BusinessMessageReject, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_BusinessMessageReject.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_BusinessMessageReject); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_BusinessMessageReject, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_RefMsgType; + ReturnCode_t return_code_RefMsgType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_RefMsgType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_RefMsgType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_RefMsgType) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_RefMsgType)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_RefMsgType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_RefMsgType = 0x00000005; + bool common_RefMsgType_ec {false}; + CommonStructMember common_RefMsgType {TypeObjectUtils::build_common_struct_member(member_id_RefMsgType, member_flags_RefMsgType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_RefMsgType, common_RefMsgType_ec))}; + if (!common_RefMsgType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure RefMsgType member TypeIdentifier inconsistent."); + return; + } + MemberName name_RefMsgType = "RefMsgType"; + eprosima::fastcdr::optional member_ann_builtin_RefMsgType; + ann_custom_BusinessMessageReject.reset(); + CompleteMemberDetail detail_RefMsgType = TypeObjectUtils::build_complete_member_detail(name_RefMsgType, member_ann_builtin_RefMsgType, ann_custom_BusinessMessageReject); + CompleteStructMember member_RefMsgType = TypeObjectUtils::build_complete_struct_member(common_RefMsgType, detail_RefMsgType); + TypeObjectUtils::add_complete_struct_member(member_seq_BusinessMessageReject, member_RefMsgType); + } + { + TypeIdentifierPair type_ids_BusinessRejectReason; + ReturnCode_t return_code_BusinessRejectReason {eprosima::fastdds::dds::RETCODE_OK}; + return_code_BusinessRejectReason = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_BusinessRejectReason); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_BusinessRejectReason) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "BusinessRejectReason Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_BusinessRejectReason = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_BusinessRejectReason = 0x00000006; + bool common_BusinessRejectReason_ec {false}; + CommonStructMember common_BusinessRejectReason {TypeObjectUtils::build_common_struct_member(member_id_BusinessRejectReason, member_flags_BusinessRejectReason, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_BusinessRejectReason, common_BusinessRejectReason_ec))}; + if (!common_BusinessRejectReason_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure BusinessRejectReason member TypeIdentifier inconsistent."); + return; + } + MemberName name_BusinessRejectReason = "BusinessRejectReason"; + eprosima::fastcdr::optional member_ann_builtin_BusinessRejectReason; + ann_custom_BusinessMessageReject.reset(); + CompleteMemberDetail detail_BusinessRejectReason = TypeObjectUtils::build_complete_member_detail(name_BusinessRejectReason, member_ann_builtin_BusinessRejectReason, ann_custom_BusinessMessageReject); + CompleteStructMember member_BusinessRejectReason = TypeObjectUtils::build_complete_struct_member(common_BusinessRejectReason, detail_BusinessRejectReason); + TypeObjectUtils::add_complete_struct_member(member_seq_BusinessMessageReject, member_BusinessRejectReason); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x00000007; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_BusinessMessageReject.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_BusinessMessageReject); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_BusinessMessageReject, member_Text); + } + CompleteStructType struct_type_BusinessMessageReject = TypeObjectUtils::build_complete_struct_type(struct_flags_BusinessMessageReject, header_BusinessMessageReject, member_seq_BusinessMessageReject); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_BusinessMessageReject, type_name_BusinessMessageReject.to_string(), type_ids_BusinessMessageReject)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_BusinessMessageReject::BusinessMessageReject already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_BusinessMessageReject + diff --git a/GenTools/idl/BusinessMessageRejectTypeObjectSupport.hpp b/GenTools/idl/BusinessMessageRejectTypeObjectSupport.hpp new file mode 100644 index 0000000..aba4dbb --- /dev/null +++ b/GenTools/idl/BusinessMessageRejectTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 BusinessMessageRejectTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECT_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECT_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_BusinessMessageReject { +/** + * @brief Register BusinessMessageReject related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_BusinessMessageReject_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_BusinessMessageReject + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_BUSINESSMESSAGEREJECT_BUSINESSMESSAGEREJECT_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/CMakeLists.txt b/GenTools/idl/CMakeLists.txt new file mode 100644 index 0000000..3cb6d31 --- /dev/null +++ b/GenTools/idl/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.12.4) + +if(NOT CMAKE_VERSION VERSION_LESS 3.0) + cmake_policy(SET CMP0048 NEW) +endif() + +project(DistributedATSLib) + +# Find requirements +if(NOT fastcdr_FOUND) + find_package(fastcdr REQUIRED) +endif() + +if(NOT fastdds_FOUND) + find_package(fastdds 3 REQUIRED) +endif() + +find_package(log4cxx REQUIRED) + +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +link_directories(${CMAKE_INSTALL_PREFIX}/lib) +link_directories(${QUICKFIX_INSTALL_PREFIX}/lib) + +file(GLOB DISTRIBUTED_ATS_LIB *) +include_directories(${CMAKE_INSTALL_PREFIX}/include) +add_library(DistributedATSLib SHARED ${DISTRIBUTED_ATS_LIB}) +target_link_libraries(DistributedATSLib quickfix fastcdr fastdds log4cxx) + +install(TARGETS DistributedATSLib + PUBLIC_HEADER + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dats +) diff --git a/GenTools/idl/DistributedATS_Export.h b/GenTools/idl/DistributedATS_Export.h deleted file mode 100644 index 32cda7b..0000000 --- a/GenTools/idl/DistributedATS_Export.h +++ /dev/null @@ -1,58 +0,0 @@ - -// -*- C++ -*- -// $Id$ -// Definition for Win32 Export directives. -// This file is generated automatically by generate_export_file.pl DistributedATS -// ------------------------------ -#ifndef DISTRIBUTEDATS_EXPORT_H -#define DISTRIBUTEDATS_EXPORT_H - -#include "ace/config-all.h" - -#if defined (ACE_AS_STATIC_LIBS) && !defined (DISTRIBUTEDATS_HAS_DLL) -# define DISTRIBUTEDATS_HAS_DLL 0 -#endif /* ACE_AS_STATIC_LIBS && DISTRIBUTEDATS_HAS_DLL */ - -#if !defined (DISTRIBUTEDATS_HAS_DLL) -# define DISTRIBUTEDATS_HAS_DLL 1 -#endif /* ! DISTRIBUTEDATS_HAS_DLL */ - -#if defined (DISTRIBUTEDATS_HAS_DLL) && (DISTRIBUTEDATS_HAS_DLL == 1) -# if defined (DISTRIBUTEDATS_BUILD_DLL) -# define DistributedATS_Export ACE_Proper_Export_Flag -# define DISTRIBUTEDATS_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) -# define DISTRIBUTEDATS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -# else /* DISTRIBUTEDATS_BUILD_DLL */ -# define DistributedATS_Export ACE_Proper_Import_Flag -# define DISTRIBUTEDATS_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) -# define DISTRIBUTEDATS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -# endif /* DISTRIBUTEDATS_BUILD_DLL */ -#else /* DISTRIBUTEDATS_HAS_DLL == 1 */ -# define DistributedATS_Export -# define DISTRIBUTEDATS_SINGLETON_DECLARATION(T) -# define DISTRIBUTEDATS_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) -#endif /* DISTRIBUTEDATS_HAS_DLL == 1 */ - -// Set DISTRIBUTEDATS_NTRACE = 0 to turn on library specific tracing even if -// tracing is turned off for ACE. -#if !defined (DISTRIBUTEDATS_NTRACE) -# if (ACE_NTRACE == 1) -# define DISTRIBUTEDATS_NTRACE 1 -# else /* (ACE_NTRACE == 1) */ -# define DISTRIBUTEDATS_NTRACE 0 -# endif /* (ACE_NTRACE == 1) */ -#endif /* !DISTRIBUTEDATS_NTRACE */ - -#if (DISTRIBUTEDATS_NTRACE == 1) -# define DISTRIBUTEDATS_TRACE(X) -#else /* (DISTRIBUTEDATS_NTRACE == 1) */ -# if !defined (ACE_HAS_TRACE) -# define ACE_HAS_TRACE -# endif /* ACE_HAS_TRACE */ -# define DISTRIBUTEDATS_TRACE(X) ACE_TRACE_IMPL(X) -# include "ace/Trace.h" -#endif /* (DISTRIBUTEDATS_NTRACE == 1) */ - -#endif /* DISTRIBUTEDATS_EXPORT_H */ - -// End of auto generated file. diff --git a/GenTools/idl/ExecutionReport.hpp b/GenTools/idl/ExecutionReport.hpp new file mode 100644 index 0000000..7fbd939 --- /dev/null +++ b/GenTools/idl/ExecutionReport.hpp @@ -0,0 +1,1267 @@ +// 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 ExecutionReport.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORT_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(EXECUTIONREPORT_SOURCE) +#define EXECUTIONREPORT_DllAPI __declspec( dllexport ) +#else +#define EXECUTIONREPORT_DllAPI __declspec( dllimport ) +#endif // EXECUTIONREPORT_SOURCE +#else +#define EXECUTIONREPORT_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define EXECUTIONREPORT_DllAPI +#endif // _WIN32 + +namespace DistributedATS_ExecutionReport { + +/*! + * @brief This class represents the structure ExecutionReport defined by the user in the IDL file. + * @ingroup ExecutionReport + */ +class ExecutionReport +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport ExecutionReport() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~ExecutionReport() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object ExecutionReport that will be copied. + */ + eProsima_user_DllExport ExecutionReport( + const ExecutionReport& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_OrderID = x.m_OrderID; + + m_OrigClOrdID = x.m_OrigClOrdID; + + m_ExecID = x.m_ExecID; + + m_ExecType = x.m_ExecType; + + m_OrdStatus = x.m_OrdStatus; + + m_OrdRejReason = x.m_OrdRejReason; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_Side = x.m_Side; + + m_OrderQty = x.m_OrderQty; + + m_OrdType = x.m_OrdType; + + m_Price = x.m_Price; + + m_StopPx = x.m_StopPx; + + m_TimeInForce = x.m_TimeInForce; + + m_ExecInst = x.m_ExecInst; + + m_LastQty = x.m_LastQty; + + m_LastPx = x.m_LastPx; + + m_LeavesQty = x.m_LeavesQty; + + m_CumQty = x.m_CumQty; + + m_AvgPx = x.m_AvgPx; + + m_TransactTime = x.m_TransactTime; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object ExecutionReport that will be copied. + */ + eProsima_user_DllExport ExecutionReport( + ExecutionReport&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_OrderID = std::move(x.m_OrderID); + m_OrigClOrdID = std::move(x.m_OrigClOrdID); + m_ExecID = std::move(x.m_ExecID); + m_ExecType = x.m_ExecType; + m_OrdStatus = x.m_OrdStatus; + m_OrdRejReason = x.m_OrdRejReason; + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_Side = x.m_Side; + m_OrderQty = x.m_OrderQty; + m_OrdType = x.m_OrdType; + m_Price = x.m_Price; + m_StopPx = x.m_StopPx; + m_TimeInForce = x.m_TimeInForce; + m_ExecInst = std::move(x.m_ExecInst); + m_LastQty = x.m_LastQty; + m_LastPx = x.m_LastPx; + m_LeavesQty = x.m_LeavesQty; + m_CumQty = x.m_CumQty; + m_AvgPx = x.m_AvgPx; + m_TransactTime = x.m_TransactTime; + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object ExecutionReport that will be copied. + */ + eProsima_user_DllExport ExecutionReport& operator =( + const ExecutionReport& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_OrderID = x.m_OrderID; + + m_OrigClOrdID = x.m_OrigClOrdID; + + m_ExecID = x.m_ExecID; + + m_ExecType = x.m_ExecType; + + m_OrdStatus = x.m_OrdStatus; + + m_OrdRejReason = x.m_OrdRejReason; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_Side = x.m_Side; + + m_OrderQty = x.m_OrderQty; + + m_OrdType = x.m_OrdType; + + m_Price = x.m_Price; + + m_StopPx = x.m_StopPx; + + m_TimeInForce = x.m_TimeInForce; + + m_ExecInst = x.m_ExecInst; + + m_LastQty = x.m_LastQty; + + m_LastPx = x.m_LastPx; + + m_LeavesQty = x.m_LeavesQty; + + m_CumQty = x.m_CumQty; + + m_AvgPx = x.m_AvgPx; + + m_TransactTime = x.m_TransactTime; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object ExecutionReport that will be copied. + */ + eProsima_user_DllExport ExecutionReport& operator =( + ExecutionReport&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_OrderID = std::move(x.m_OrderID); + m_OrigClOrdID = std::move(x.m_OrigClOrdID); + m_ExecID = std::move(x.m_ExecID); + m_ExecType = x.m_ExecType; + m_OrdStatus = x.m_OrdStatus; + m_OrdRejReason = x.m_OrdRejReason; + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_Side = x.m_Side; + m_OrderQty = x.m_OrderQty; + m_OrdType = x.m_OrdType; + m_Price = x.m_Price; + m_StopPx = x.m_StopPx; + m_TimeInForce = x.m_TimeInForce; + m_ExecInst = std::move(x.m_ExecInst); + m_LastQty = x.m_LastQty; + m_LastPx = x.m_LastPx; + m_LeavesQty = x.m_LeavesQty; + m_CumQty = x.m_CumQty; + m_AvgPx = x.m_AvgPx; + m_TransactTime = x.m_TransactTime; + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x ExecutionReport object to compare. + */ + eProsima_user_DllExport bool operator ==( + const ExecutionReport& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_OrderID == x.m_OrderID && + m_OrigClOrdID == x.m_OrigClOrdID && + m_ExecID == x.m_ExecID && + m_ExecType == x.m_ExecType && + m_OrdStatus == x.m_OrdStatus && + m_OrdRejReason == x.m_OrdRejReason && + m_Symbol == x.m_Symbol && + m_SecurityExchange == x.m_SecurityExchange && + m_Side == x.m_Side && + m_OrderQty == x.m_OrderQty && + m_OrdType == x.m_OrdType && + m_Price == x.m_Price && + m_StopPx == x.m_StopPx && + m_TimeInForce == x.m_TimeInForce && + m_ExecInst == x.m_ExecInst && + m_LastQty == x.m_LastQty && + m_LastPx == x.m_LastPx && + m_LeavesQty == x.m_LeavesQty && + m_CumQty == x.m_CumQty && + m_AvgPx == x.m_AvgPx && + m_TransactTime == x.m_TransactTime && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x ExecutionReport object to compare. + */ + eProsima_user_DllExport bool operator !=( + const ExecutionReport& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member OrderID + * @param _OrderID New value to be copied in member OrderID + */ + eProsima_user_DllExport void OrderID( + const std::string& _OrderID) + { + m_OrderID = _OrderID; + } + + /*! + * @brief This function moves the value in member OrderID + * @param _OrderID New value to be moved in member OrderID + */ + eProsima_user_DllExport void OrderID( + std::string&& _OrderID) + { + m_OrderID = std::move(_OrderID); + } + + /*! + * @brief This function returns a constant reference to member OrderID + * @return Constant reference to member OrderID + */ + eProsima_user_DllExport const std::string& OrderID() const + { + return m_OrderID; + } + + /*! + * @brief This function returns a reference to member OrderID + * @return Reference to member OrderID + */ + eProsima_user_DllExport std::string& OrderID() + { + return m_OrderID; + } + + + /*! + * @brief This function copies the value in member OrigClOrdID + * @param _OrigClOrdID New value to be copied in member OrigClOrdID + */ + eProsima_user_DllExport void OrigClOrdID( + const std::string& _OrigClOrdID) + { + m_OrigClOrdID = _OrigClOrdID; + } + + /*! + * @brief This function moves the value in member OrigClOrdID + * @param _OrigClOrdID New value to be moved in member OrigClOrdID + */ + eProsima_user_DllExport void OrigClOrdID( + std::string&& _OrigClOrdID) + { + m_OrigClOrdID = std::move(_OrigClOrdID); + } + + /*! + * @brief This function returns a constant reference to member OrigClOrdID + * @return Constant reference to member OrigClOrdID + */ + eProsima_user_DllExport const std::string& OrigClOrdID() const + { + return m_OrigClOrdID; + } + + /*! + * @brief This function returns a reference to member OrigClOrdID + * @return Reference to member OrigClOrdID + */ + eProsima_user_DllExport std::string& OrigClOrdID() + { + return m_OrigClOrdID; + } + + + /*! + * @brief This function copies the value in member ExecID + * @param _ExecID New value to be copied in member ExecID + */ + eProsima_user_DllExport void ExecID( + const std::string& _ExecID) + { + m_ExecID = _ExecID; + } + + /*! + * @brief This function moves the value in member ExecID + * @param _ExecID New value to be moved in member ExecID + */ + eProsima_user_DllExport void ExecID( + std::string&& _ExecID) + { + m_ExecID = std::move(_ExecID); + } + + /*! + * @brief This function returns a constant reference to member ExecID + * @return Constant reference to member ExecID + */ + eProsima_user_DllExport const std::string& ExecID() const + { + return m_ExecID; + } + + /*! + * @brief This function returns a reference to member ExecID + * @return Reference to member ExecID + */ + eProsima_user_DllExport std::string& ExecID() + { + return m_ExecID; + } + + + /*! + * @brief This function sets a value in member ExecType + * @param _ExecType New value for member ExecType + */ + eProsima_user_DllExport void ExecType( + char _ExecType) + { + m_ExecType = _ExecType; + } + + /*! + * @brief This function returns the value of member ExecType + * @return Value of member ExecType + */ + eProsima_user_DllExport char ExecType() const + { + return m_ExecType; + } + + /*! + * @brief This function returns a reference to member ExecType + * @return Reference to member ExecType + */ + eProsima_user_DllExport char& ExecType() + { + return m_ExecType; + } + + + /*! + * @brief This function sets a value in member OrdStatus + * @param _OrdStatus New value for member OrdStatus + */ + eProsima_user_DllExport void OrdStatus( + char _OrdStatus) + { + m_OrdStatus = _OrdStatus; + } + + /*! + * @brief This function returns the value of member OrdStatus + * @return Value of member OrdStatus + */ + eProsima_user_DllExport char OrdStatus() const + { + return m_OrdStatus; + } + + /*! + * @brief This function returns a reference to member OrdStatus + * @return Reference to member OrdStatus + */ + eProsima_user_DllExport char& OrdStatus() + { + return m_OrdStatus; + } + + + /*! + * @brief This function sets a value in member OrdRejReason + * @param _OrdRejReason New value for member OrdRejReason + */ + eProsima_user_DllExport void OrdRejReason( + int32_t _OrdRejReason) + { + m_OrdRejReason = _OrdRejReason; + } + + /*! + * @brief This function returns the value of member OrdRejReason + * @return Value of member OrdRejReason + */ + eProsima_user_DllExport int32_t OrdRejReason() const + { + return m_OrdRejReason; + } + + /*! + * @brief This function returns a reference to member OrdRejReason + * @return Reference to member OrdRejReason + */ + eProsima_user_DllExport int32_t& OrdRejReason() + { + return m_OrdRejReason; + } + + + /*! + * @brief This function copies the value in member Symbol + * @param _Symbol New value to be copied in member Symbol + */ + eProsima_user_DllExport void Symbol( + const std::string& _Symbol) + { + m_Symbol = _Symbol; + } + + /*! + * @brief This function moves the value in member Symbol + * @param _Symbol New value to be moved in member Symbol + */ + eProsima_user_DllExport void Symbol( + std::string&& _Symbol) + { + m_Symbol = std::move(_Symbol); + } + + /*! + * @brief This function returns a constant reference to member Symbol + * @return Constant reference to member Symbol + */ + eProsima_user_DllExport const std::string& Symbol() const + { + return m_Symbol; + } + + /*! + * @brief This function returns a reference to member Symbol + * @return Reference to member Symbol + */ + eProsima_user_DllExport std::string& Symbol() + { + return m_Symbol; + } + + + /*! + * @brief This function copies the value in member SecurityExchange + * @param _SecurityExchange New value to be copied in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + const std::string& _SecurityExchange) + { + m_SecurityExchange = _SecurityExchange; + } + + /*! + * @brief This function moves the value in member SecurityExchange + * @param _SecurityExchange New value to be moved in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + std::string&& _SecurityExchange) + { + m_SecurityExchange = std::move(_SecurityExchange); + } + + /*! + * @brief This function returns a constant reference to member SecurityExchange + * @return Constant reference to member SecurityExchange + */ + eProsima_user_DllExport const std::string& SecurityExchange() const + { + return m_SecurityExchange; + } + + /*! + * @brief This function returns a reference to member SecurityExchange + * @return Reference to member SecurityExchange + */ + eProsima_user_DllExport std::string& SecurityExchange() + { + return m_SecurityExchange; + } + + + /*! + * @brief This function sets a value in member Side + * @param _Side New value for member Side + */ + eProsima_user_DllExport void Side( + char _Side) + { + m_Side = _Side; + } + + /*! + * @brief This function returns the value of member Side + * @return Value of member Side + */ + eProsima_user_DllExport char Side() const + { + return m_Side; + } + + /*! + * @brief This function returns a reference to member Side + * @return Reference to member Side + */ + eProsima_user_DllExport char& Side() + { + return m_Side; + } + + + /*! + * @brief This function sets a value in member OrderQty + * @param _OrderQty New value for member OrderQty + */ + eProsima_user_DllExport void OrderQty( + int32_t _OrderQty) + { + m_OrderQty = _OrderQty; + } + + /*! + * @brief This function returns the value of member OrderQty + * @return Value of member OrderQty + */ + eProsima_user_DllExport int32_t OrderQty() const + { + return m_OrderQty; + } + + /*! + * @brief This function returns a reference to member OrderQty + * @return Reference to member OrderQty + */ + eProsima_user_DllExport int32_t& OrderQty() + { + return m_OrderQty; + } + + + /*! + * @brief This function sets a value in member OrdType + * @param _OrdType New value for member OrdType + */ + eProsima_user_DllExport void OrdType( + char _OrdType) + { + m_OrdType = _OrdType; + } + + /*! + * @brief This function returns the value of member OrdType + * @return Value of member OrdType + */ + eProsima_user_DllExport char OrdType() const + { + return m_OrdType; + } + + /*! + * @brief This function returns a reference to member OrdType + * @return Reference to member OrdType + */ + eProsima_user_DllExport char& OrdType() + { + return m_OrdType; + } + + + /*! + * @brief This function sets a value in member Price + * @param _Price New value for member Price + */ + eProsima_user_DllExport void Price( + float _Price) + { + m_Price = _Price; + } + + /*! + * @brief This function returns the value of member Price + * @return Value of member Price + */ + eProsima_user_DllExport float Price() const + { + return m_Price; + } + + /*! + * @brief This function returns a reference to member Price + * @return Reference to member Price + */ + eProsima_user_DllExport float& Price() + { + return m_Price; + } + + + /*! + * @brief This function sets a value in member StopPx + * @param _StopPx New value for member StopPx + */ + eProsima_user_DllExport void StopPx( + float _StopPx) + { + m_StopPx = _StopPx; + } + + /*! + * @brief This function returns the value of member StopPx + * @return Value of member StopPx + */ + eProsima_user_DllExport float StopPx() const + { + return m_StopPx; + } + + /*! + * @brief This function returns a reference to member StopPx + * @return Reference to member StopPx + */ + eProsima_user_DllExport float& StopPx() + { + return m_StopPx; + } + + + /*! + * @brief This function sets a value in member TimeInForce + * @param _TimeInForce New value for member TimeInForce + */ + eProsima_user_DllExport void TimeInForce( + char _TimeInForce) + { + m_TimeInForce = _TimeInForce; + } + + /*! + * @brief This function returns the value of member TimeInForce + * @return Value of member TimeInForce + */ + eProsima_user_DllExport char TimeInForce() const + { + return m_TimeInForce; + } + + /*! + * @brief This function returns a reference to member TimeInForce + * @return Reference to member TimeInForce + */ + eProsima_user_DllExport char& TimeInForce() + { + return m_TimeInForce; + } + + + /*! + * @brief This function copies the value in member ExecInst + * @param _ExecInst New value to be copied in member ExecInst + */ + eProsima_user_DllExport void ExecInst( + const std::string& _ExecInst) + { + m_ExecInst = _ExecInst; + } + + /*! + * @brief This function moves the value in member ExecInst + * @param _ExecInst New value to be moved in member ExecInst + */ + eProsima_user_DllExport void ExecInst( + std::string&& _ExecInst) + { + m_ExecInst = std::move(_ExecInst); + } + + /*! + * @brief This function returns a constant reference to member ExecInst + * @return Constant reference to member ExecInst + */ + eProsima_user_DllExport const std::string& ExecInst() const + { + return m_ExecInst; + } + + /*! + * @brief This function returns a reference to member ExecInst + * @return Reference to member ExecInst + */ + eProsima_user_DllExport std::string& ExecInst() + { + return m_ExecInst; + } + + + /*! + * @brief This function sets a value in member LastQty + * @param _LastQty New value for member LastQty + */ + eProsima_user_DllExport void LastQty( + int32_t _LastQty) + { + m_LastQty = _LastQty; + } + + /*! + * @brief This function returns the value of member LastQty + * @return Value of member LastQty + */ + eProsima_user_DllExport int32_t LastQty() const + { + return m_LastQty; + } + + /*! + * @brief This function returns a reference to member LastQty + * @return Reference to member LastQty + */ + eProsima_user_DllExport int32_t& LastQty() + { + return m_LastQty; + } + + + /*! + * @brief This function sets a value in member LastPx + * @param _LastPx New value for member LastPx + */ + eProsima_user_DllExport void LastPx( + float _LastPx) + { + m_LastPx = _LastPx; + } + + /*! + * @brief This function returns the value of member LastPx + * @return Value of member LastPx + */ + eProsima_user_DllExport float LastPx() const + { + return m_LastPx; + } + + /*! + * @brief This function returns a reference to member LastPx + * @return Reference to member LastPx + */ + eProsima_user_DllExport float& LastPx() + { + return m_LastPx; + } + + + /*! + * @brief This function sets a value in member LeavesQty + * @param _LeavesQty New value for member LeavesQty + */ + eProsima_user_DllExport void LeavesQty( + int32_t _LeavesQty) + { + m_LeavesQty = _LeavesQty; + } + + /*! + * @brief This function returns the value of member LeavesQty + * @return Value of member LeavesQty + */ + eProsima_user_DllExport int32_t LeavesQty() const + { + return m_LeavesQty; + } + + /*! + * @brief This function returns a reference to member LeavesQty + * @return Reference to member LeavesQty + */ + eProsima_user_DllExport int32_t& LeavesQty() + { + return m_LeavesQty; + } + + + /*! + * @brief This function sets a value in member CumQty + * @param _CumQty New value for member CumQty + */ + eProsima_user_DllExport void CumQty( + int32_t _CumQty) + { + m_CumQty = _CumQty; + } + + /*! + * @brief This function returns the value of member CumQty + * @return Value of member CumQty + */ + eProsima_user_DllExport int32_t CumQty() const + { + return m_CumQty; + } + + /*! + * @brief This function returns a reference to member CumQty + * @return Reference to member CumQty + */ + eProsima_user_DllExport int32_t& CumQty() + { + return m_CumQty; + } + + + /*! + * @brief This function sets a value in member AvgPx + * @param _AvgPx New value for member AvgPx + */ + eProsima_user_DllExport void AvgPx( + float _AvgPx) + { + m_AvgPx = _AvgPx; + } + + /*! + * @brief This function returns the value of member AvgPx + * @return Value of member AvgPx + */ + eProsima_user_DllExport float AvgPx() const + { + return m_AvgPx; + } + + /*! + * @brief This function returns a reference to member AvgPx + * @return Reference to member AvgPx + */ + eProsima_user_DllExport float& AvgPx() + { + return m_AvgPx; + } + + + /*! + * @brief This function sets a value in member TransactTime + * @param _TransactTime New value for member TransactTime + */ + eProsima_user_DllExport void TransactTime( + uint64_t _TransactTime) + { + m_TransactTime = _TransactTime; + } + + /*! + * @brief This function returns the value of member TransactTime + * @return Value of member TransactTime + */ + eProsima_user_DllExport uint64_t TransactTime() const + { + return m_TransactTime; + } + + /*! + * @brief This function returns a reference to member TransactTime + * @return Reference to member TransactTime + */ + eProsima_user_DllExport uint64_t& TransactTime() + { + return m_TransactTime; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_OrderID; + std::string m_OrigClOrdID; + std::string m_ExecID; + char m_ExecType{0}; + char m_OrdStatus{0}; + int32_t m_OrdRejReason{0}; + std::string m_Symbol; + std::string m_SecurityExchange; + char m_Side{0}; + int32_t m_OrderQty{0}; + char m_OrdType{0}; + float m_Price{0.0}; + float m_StopPx{0.0}; + char m_TimeInForce{0}; + std::string m_ExecInst; + int32_t m_LastQty{0}; + float m_LastPx{0.0}; + int32_t m_LeavesQty{0}; + int32_t m_CumQty{0}; + float m_AvgPx{0.0}; + uint64_t m_TransactTime{0}; + std::string m_Text; + +}; + +} // namespace DistributedATS_ExecutionReport + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORT_HPP_ + + diff --git a/GenTools/idl/ExecutionReport.idl b/GenTools/idl/ExecutionReport.idl index 0b473e2..fec73f2 100644 --- a/GenTools/idl/ExecutionReport.idl +++ b/GenTools/idl/ExecutionReport.idl @@ -1,13 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_ExecutionReport { - @topic + struct ExecutionReport { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string OrderID; string OrigClOrdID; string ExecID; diff --git a/GenTools/idl/ExecutionReportAdapter.cpp b/GenTools/idl/ExecutionReportAdapter.cpp index e2240b1..e4e0314 100644 --- a/GenTools/idl/ExecutionReportAdapter.cpp +++ b/GenTools/idl/ExecutionReportAdapter.cpp @@ -1,97 +1,97 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "ExecutionReportAdapter.hpp" -#include "ConvertUtils.h" +#include void ExecutionReportAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_ExecutionReport::ExecutionReport& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::OrderID) ) - ddsMsg.OrderID = CORBA::string_dup(((FIX::OrderID)fixMsg.getField(FIX::FIELD::OrderID)).getString().c_str()); + ddsMsg.OrderID ( ((FIX::OrderID)fixMsg.getField(FIX::FIELD::OrderID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::OrigClOrdID) ) - ddsMsg.OrigClOrdID = CORBA::string_dup(((FIX::OrigClOrdID)fixMsg.getField(FIX::FIELD::OrigClOrdID)).getString().c_str()); + ddsMsg.OrigClOrdID ( ((FIX::OrigClOrdID)fixMsg.getField(FIX::FIELD::OrigClOrdID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::ExecID) ) - ddsMsg.ExecID = CORBA::string_dup(((FIX::ExecID)fixMsg.getField(FIX::FIELD::ExecID)).getString().c_str()); + ddsMsg.ExecID ( ((FIX::ExecID)fixMsg.getField(FIX::FIELD::ExecID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::ExecType) ) - ddsMsg.ExecType = FIELD_GET_REF( fixMsg,ExecType); + ddsMsg.ExecType ( FIELD_GET_REF( fixMsg,ExecType)); if (fixMsg.isSetField(FIX::FIELD::OrdStatus) ) - ddsMsg.OrdStatus = FIELD_GET_REF( fixMsg,OrdStatus); + ddsMsg.OrdStatus ( FIELD_GET_REF( fixMsg,OrdStatus)); if (fixMsg.isSetField(FIX::FIELD::OrdRejReason) ) - ddsMsg.OrdRejReason = FIELD_GET_REF( fixMsg,OrdRejReason); + ddsMsg.OrdRejReason ( FIELD_GET_REF( fixMsg,OrdRejReason)); else - ddsMsg.OrdRejReason = 0; + ddsMsg.OrdRejReason ( 0 ); if (fixMsg.isSetField(FIX::FIELD::Symbol) ) - ddsMsg.Symbol = CORBA::string_dup(((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); + ddsMsg.Symbol ( ((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SecurityExchange) ) - ddsMsg.SecurityExchange = CORBA::string_dup(((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); + ddsMsg.SecurityExchange ( ((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::Side) ) - ddsMsg.Side = FIELD_GET_REF( fixMsg,Side); + ddsMsg.Side ( FIELD_GET_REF( fixMsg,Side)); if (fixMsg.isSetField(FIX::FIELD::OrderQty) ) - ddsMsg.OrderQty = FIELD_GET_REF( fixMsg,OrderQty); + ddsMsg.OrderQty ( FIELD_GET_REF( fixMsg,OrderQty)); else - ddsMsg.OrderQty = 0; + ddsMsg.OrderQty ( 0 ); if (fixMsg.isSetField(FIX::FIELD::OrdType) ) - ddsMsg.OrdType = FIELD_GET_REF( fixMsg,OrdType); + ddsMsg.OrdType ( FIELD_GET_REF( fixMsg,OrdType)); if (fixMsg.isSetField(FIX::FIELD::Price) ) - ddsMsg.Price = FIELD_GET_REF( fixMsg,Price); + ddsMsg.Price ( FIELD_GET_REF( fixMsg,Price)); else - ddsMsg.Price = 0; + ddsMsg.Price ( 0 ); if (fixMsg.isSetField(FIX::FIELD::StopPx) ) - ddsMsg.StopPx = FIELD_GET_REF( fixMsg,StopPx); + ddsMsg.StopPx ( FIELD_GET_REF( fixMsg,StopPx)); else - ddsMsg.StopPx = 0; + ddsMsg.StopPx ( 0 ); if (fixMsg.isSetField(FIX::FIELD::TimeInForce) ) - ddsMsg.TimeInForce = FIELD_GET_REF( fixMsg,TimeInForce); + ddsMsg.TimeInForce ( FIELD_GET_REF( fixMsg,TimeInForce)); if (fixMsg.isSetField(FIX::FIELD::ExecInst) ) - ddsMsg.ExecInst = CORBA::string_dup(((FIX::ExecInst)fixMsg.getField(FIX::FIELD::ExecInst)).getString().c_str()); + ddsMsg.ExecInst ( ((FIX::ExecInst)fixMsg.getField(FIX::FIELD::ExecInst)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::LastQty) ) - ddsMsg.LastQty = FIELD_GET_REF( fixMsg,LastQty); + ddsMsg.LastQty ( FIELD_GET_REF( fixMsg,LastQty)); else - ddsMsg.LastQty = 0; + ddsMsg.LastQty ( 0 ); if (fixMsg.isSetField(FIX::FIELD::LastPx) ) - ddsMsg.LastPx = FIELD_GET_REF( fixMsg,LastPx); + ddsMsg.LastPx ( FIELD_GET_REF( fixMsg,LastPx)); else - ddsMsg.LastPx = 0; + ddsMsg.LastPx ( 0 ); if (fixMsg.isSetField(FIX::FIELD::LeavesQty) ) - ddsMsg.LeavesQty = FIELD_GET_REF( fixMsg,LeavesQty); + ddsMsg.LeavesQty ( FIELD_GET_REF( fixMsg,LeavesQty)); else - ddsMsg.LeavesQty = 0; + ddsMsg.LeavesQty ( 0 ); if (fixMsg.isSetField(FIX::FIELD::CumQty) ) - ddsMsg.CumQty = FIELD_GET_REF( fixMsg,CumQty); + ddsMsg.CumQty ( FIELD_GET_REF( fixMsg,CumQty)); else - ddsMsg.CumQty = 0; + ddsMsg.CumQty ( 0 ); if (fixMsg.isSetField(FIX::FIELD::AvgPx) ) - ddsMsg.AvgPx = FIELD_GET_REF( fixMsg,AvgPx); + ddsMsg.AvgPx ( FIELD_GET_REF( fixMsg,AvgPx)); else - ddsMsg.AvgPx = 0; + ddsMsg.AvgPx ( 0 ); if (fixMsg.isSetField(FIX::FIELD::TransactTime) ) - ddsMsg.TransactTime = ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate(); + ddsMsg.TransactTime ( ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate()); else - ddsMsg.TransactTime = 0; + ddsMsg.TransactTime ( 0 ); if (fixMsg.isSetField(FIX::FIELD::Text) ) - ddsMsg.Text = CORBA::string_dup(((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.Text ( ((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); }; @@ -100,65 +100,65 @@ void ExecutionReportAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_ void ExecutionReportAdapter::DDS2FIX(const DistributedATS_ExecutionReport::ExecutionReport& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.OrderID.in(), FIX::FIELD::OrderID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.OrderID(), FIX::FIELD::OrderID, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.OrigClOrdID.in(), FIX::FIELD::OrigClOrdID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.OrigClOrdID(), FIX::FIELD::OrigClOrdID, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.ExecID.in(), FIX::FIELD::ExecID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.ExecID(), FIX::FIELD::ExecID, fixMsg); - FIX::ExecType fixExecType(ddsMsg.ExecType); + FIX::ExecType fixExecType(ddsMsg.ExecType()); fixMsg.setField(fixExecType); - FIX::OrdStatus fixOrdStatus(ddsMsg.OrdStatus); + FIX::OrdStatus fixOrdStatus(ddsMsg.OrdStatus()); fixMsg.setField(fixOrdStatus); - FIX::OrdRejReason fixOrdRejReason(ddsMsg.OrdRejReason); + FIX::OrdRejReason fixOrdRejReason(ddsMsg.OrdRejReason()); fixMsg.setField(fixOrdRejReason); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol.in(), FIX::FIELD::Symbol, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol(), FIX::FIELD::Symbol, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange.in(), FIX::FIELD::SecurityExchange, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange(), FIX::FIELD::SecurityExchange, fixMsg); - FIX::Side fixSide(ddsMsg.Side); + FIX::Side fixSide(ddsMsg.Side()); fixMsg.setField(fixSide); - FIX::OrderQty fixOrderQty(ddsMsg.OrderQty); + FIX::OrderQty fixOrderQty(ddsMsg.OrderQty()); fixMsg.setField(fixOrderQty); - FIX::OrdType fixOrdType(ddsMsg.OrdType); + FIX::OrdType fixOrdType(ddsMsg.OrdType()); fixMsg.setField(fixOrdType); - FIX::Price fixPrice(ddsMsg.Price); + FIX::Price fixPrice(ddsMsg.Price()); fixMsg.setField(fixPrice); - FIX::StopPx fixStopPx(ddsMsg.StopPx); + FIX::StopPx fixStopPx(ddsMsg.StopPx()); fixMsg.setField(fixStopPx); - FIX::TimeInForce fixTimeInForce(ddsMsg.TimeInForce); + FIX::TimeInForce fixTimeInForce(ddsMsg.TimeInForce()); fixMsg.setField(fixTimeInForce); - DistributedATS::convert_dds_string_to_fix(ddsMsg.ExecInst.in(), FIX::FIELD::ExecInst, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.ExecInst(), FIX::FIELD::ExecInst, fixMsg); - FIX::LastQty fixLastQty(ddsMsg.LastQty); + FIX::LastQty fixLastQty(ddsMsg.LastQty()); fixMsg.setField(fixLastQty); - FIX::LastPx fixLastPx(ddsMsg.LastPx); + FIX::LastPx fixLastPx(ddsMsg.LastPx()); fixMsg.setField(fixLastPx); - FIX::LeavesQty fixLeavesQty(ddsMsg.LeavesQty); + FIX::LeavesQty fixLeavesQty(ddsMsg.LeavesQty()); fixMsg.setField(fixLeavesQty); - FIX::CumQty fixCumQty(ddsMsg.CumQty); + FIX::CumQty fixCumQty(ddsMsg.CumQty()); fixMsg.setField(fixCumQty); - FIX::AvgPx fixAvgPx(ddsMsg.AvgPx); + FIX::AvgPx fixAvgPx(ddsMsg.AvgPx()); fixMsg.setField(fixAvgPx); - DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime, FIX::FIELD::TransactTime, fixMsg); + DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime(), FIX::FIELD::TransactTime, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Text.in(), FIX::FIELD::Text, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Text(), FIX::FIELD::Text, fixMsg); }; diff --git a/GenTools/idl/ExecutionReportAdapter.hpp b/GenTools/idl/ExecutionReportAdapter.hpp index 1f49807..a1b566d 100644 --- a/GenTools/idl/ExecutionReportAdapter.hpp +++ b/GenTools/idl/ExecutionReportAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __ExecutionReport_h__ -#define __ExecutionReport_h__ - -#include "ExecutionReportTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "ExecutionReport.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class ExecutionReportAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_ExecutionReport::ExecutionReport& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_ExecutionReport::ExecutionReport& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/ExecutionReportCdrAux.hpp b/GenTools/idl/ExecutionReportCdrAux.hpp new file mode 100644 index 0000000..1e44c62 --- /dev/null +++ b/GenTools/idl/ExecutionReportCdrAux.hpp @@ -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 ExecutionReportCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORTCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORTCDRAUX_HPP + +#include "ExecutionReport.hpp" + +constexpr uint32_t DistributedATS_ExecutionReport_ExecutionReport_max_cdr_typesize {4508UL}; +constexpr uint32_t DistributedATS_ExecutionReport_ExecutionReport_max_key_cdr_typesize {0UL}; + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_ExecutionReport::ExecutionReport& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORTCDRAUX_HPP + diff --git a/GenTools/idl/ExecutionReportCdrAux.ipp b/GenTools/idl/ExecutionReportCdrAux.ipp new file mode 100644 index 0000000..ad8053c --- /dev/null +++ b/GenTools/idl/ExecutionReportCdrAux.ipp @@ -0,0 +1,418 @@ +// 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 ExecutionReportCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORTCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORTCDRAUX_IPP + +#include "ExecutionReportCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_ExecutionReport::ExecutionReport& data, + size_t& current_alignment) +{ + using namespace DistributedATS_ExecutionReport; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.OrderID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.OrigClOrdID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.ExecID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.ExecType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(9), + data.OrdStatus(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(10), + data.OrdRejReason(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(11), + data.Symbol(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(12), + data.SecurityExchange(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(13), + data.Side(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(14), + data.OrderQty(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(15), + data.OrdType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(16), + data.Price(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(17), + data.StopPx(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(18), + data.TimeInForce(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(19), + data.ExecInst(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(20), + data.LastQty(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(21), + data.LastPx(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(22), + data.LeavesQty(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(23), + data.CumQty(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(24), + data.AvgPx(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(25), + data.TransactTime(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(26), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_ExecutionReport::ExecutionReport& data) +{ + using namespace DistributedATS_ExecutionReport; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.OrderID() + << eprosima::fastcdr::MemberId(6) << data.OrigClOrdID() + << eprosima::fastcdr::MemberId(7) << data.ExecID() + << eprosima::fastcdr::MemberId(8) << data.ExecType() + << eprosima::fastcdr::MemberId(9) << data.OrdStatus() + << eprosima::fastcdr::MemberId(10) << data.OrdRejReason() + << eprosima::fastcdr::MemberId(11) << data.Symbol() + << eprosima::fastcdr::MemberId(12) << data.SecurityExchange() + << eprosima::fastcdr::MemberId(13) << data.Side() + << eprosima::fastcdr::MemberId(14) << data.OrderQty() + << eprosima::fastcdr::MemberId(15) << data.OrdType() + << eprosima::fastcdr::MemberId(16) << data.Price() + << eprosima::fastcdr::MemberId(17) << data.StopPx() + << eprosima::fastcdr::MemberId(18) << data.TimeInForce() + << eprosima::fastcdr::MemberId(19) << data.ExecInst() + << eprosima::fastcdr::MemberId(20) << data.LastQty() + << eprosima::fastcdr::MemberId(21) << data.LastPx() + << eprosima::fastcdr::MemberId(22) << data.LeavesQty() + << eprosima::fastcdr::MemberId(23) << data.CumQty() + << eprosima::fastcdr::MemberId(24) << data.AvgPx() + << eprosima::fastcdr::MemberId(25) << data.TransactTime() + << eprosima::fastcdr::MemberId(26) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_ExecutionReport::ExecutionReport& data) +{ + using namespace DistributedATS_ExecutionReport; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.OrderID(); + break; + + case 6: + dcdr >> data.OrigClOrdID(); + break; + + case 7: + dcdr >> data.ExecID(); + break; + + case 8: + dcdr >> data.ExecType(); + break; + + case 9: + dcdr >> data.OrdStatus(); + break; + + case 10: + dcdr >> data.OrdRejReason(); + break; + + case 11: + dcdr >> data.Symbol(); + break; + + case 12: + dcdr >> data.SecurityExchange(); + break; + + case 13: + dcdr >> data.Side(); + break; + + case 14: + dcdr >> data.OrderQty(); + break; + + case 15: + dcdr >> data.OrdType(); + break; + + case 16: + dcdr >> data.Price(); + break; + + case 17: + dcdr >> data.StopPx(); + break; + + case 18: + dcdr >> data.TimeInForce(); + break; + + case 19: + dcdr >> data.ExecInst(); + break; + + case 20: + dcdr >> data.LastQty(); + break; + + case 21: + dcdr >> data.LastPx(); + break; + + case 22: + dcdr >> data.LeavesQty(); + break; + + case 23: + dcdr >> data.CumQty(); + break; + + case 24: + dcdr >> data.AvgPx(); + break; + + case 25: + dcdr >> data.TransactTime(); + break; + + case 26: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_ExecutionReport::ExecutionReport& data) +{ + using namespace DistributedATS_ExecutionReport; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.OrderID(); + + scdr << data.OrigClOrdID(); + + scdr << data.ExecID(); + + scdr << data.ExecType(); + + scdr << data.OrdStatus(); + + scdr << data.OrdRejReason(); + + scdr << data.Symbol(); + + scdr << data.SecurityExchange(); + + scdr << data.Side(); + + scdr << data.OrderQty(); + + scdr << data.OrdType(); + + scdr << data.Price(); + + scdr << data.StopPx(); + + scdr << data.TimeInForce(); + + scdr << data.ExecInst(); + + scdr << data.LastQty(); + + scdr << data.LastPx(); + + scdr << data.LeavesQty(); + + scdr << data.CumQty(); + + scdr << data.AvgPx(); + + scdr << data.TransactTime(); + + scdr << data.Text(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORTCDRAUX_IPP + diff --git a/GenTools/idl/ExecutionReportLogger.hpp b/GenTools/idl/ExecutionReportLogger.hpp index f934550..7cad4dc 100644 --- a/GenTools/idl/ExecutionReportLogger.hpp +++ b/GenTools/idl/ExecutionReportLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __ExecutionReportLogger_h__ -#define __ExecutionReportLogger_h__ - -#include "ExecutionReportTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,36 +10,39 @@ class ExecutionReportLogger static void log(std::ostream & out, DistributedATS_ExecutionReport::ExecutionReport& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : ExecutionReport { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.OrderID : " << ddsMsg.OrderID << std::endl - << "ddsMsg.OrigClOrdID : " << ddsMsg.OrigClOrdID << std::endl - << "ddsMsg.ExecID : " << ddsMsg.ExecID << std::endl - << "ddsMsg.ExecType : " << ddsMsg.ExecType << std::endl - << "ddsMsg.OrdStatus : " << ddsMsg.OrdStatus << std::endl - << "ddsMsg.OrdRejReason : " << ddsMsg.OrdRejReason << std::endl - << "ddsMsg.Symbol : " << ddsMsg.Symbol << std::endl - << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange << std::endl - << "ddsMsg.Side : " << ddsMsg.Side << std::endl - << "ddsMsg.OrderQty : " << ddsMsg.OrderQty << std::endl - << "ddsMsg.OrdType : " << ddsMsg.OrdType << std::endl - << "ddsMsg.Price : " << ddsMsg.Price << std::endl - << "ddsMsg.StopPx : " << ddsMsg.StopPx << std::endl - << "ddsMsg.TimeInForce : " << ddsMsg.TimeInForce << std::endl - << "ddsMsg.ExecInst : " << ddsMsg.ExecInst << std::endl - << "ddsMsg.LastQty : " << ddsMsg.LastQty << std::endl - << "ddsMsg.LastPx : " << ddsMsg.LastPx << std::endl - << "ddsMsg.LeavesQty : " << ddsMsg.LeavesQty << std::endl - << "ddsMsg.CumQty : " << ddsMsg.CumQty << std::endl - << "ddsMsg.AvgPx : " << ddsMsg.AvgPx << std::endl - << "ddsMsg.TransactTime : " << ddsMsg.TransactTime << std::endl - << "ddsMsg.Text : " << ddsMsg.Text << std::endl + << "ddsMsg.OrderID : " << ddsMsg.OrderID() << std::endl + << "ddsMsg.OrigClOrdID : " << ddsMsg.OrigClOrdID() << std::endl + << "ddsMsg.ExecID : " << ddsMsg.ExecID() << std::endl + << "ddsMsg.ExecType : " << ddsMsg.ExecType() << std::endl + << "ddsMsg.OrdStatus : " << ddsMsg.OrdStatus() << std::endl + << "ddsMsg.OrdRejReason : " << ddsMsg.OrdRejReason() << std::endl + << "ddsMsg.Symbol : " << ddsMsg.Symbol() << std::endl + << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange() << std::endl + << "ddsMsg.Side : " << ddsMsg.Side() << std::endl + << "ddsMsg.OrderQty : " << ddsMsg.OrderQty() << std::endl + << "ddsMsg.OrdType : " << ddsMsg.OrdType() << std::endl + << "ddsMsg.Price : " << ddsMsg.Price() << std::endl + << "ddsMsg.StopPx : " << ddsMsg.StopPx() << std::endl + << "ddsMsg.TimeInForce : " << ddsMsg.TimeInForce() << std::endl + << "ddsMsg.ExecInst : " << ddsMsg.ExecInst() << std::endl + << "ddsMsg.LastQty : " << ddsMsg.LastQty() << std::endl + << "ddsMsg.LastPx : " << ddsMsg.LastPx() << std::endl + << "ddsMsg.LeavesQty : " << ddsMsg.LeavesQty() << std::endl + << "ddsMsg.CumQty : " << ddsMsg.CumQty() << std::endl + << "ddsMsg.AvgPx : " << ddsMsg.AvgPx() << std::endl + << "ddsMsg.TransactTime : " << ddsMsg.TransactTime() << std::endl + << "ddsMsg.Text : " << ddsMsg.Text() << std::endl ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/ExecutionReportPubSubTypes.cxx b/GenTools/idl/ExecutionReportPubSubTypes.cxx new file mode 100644 index 0000000..8c9b92e --- /dev/null +++ b/GenTools/idl/ExecutionReportPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 ExecutionReportPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "ExecutionReportPubSubTypes.hpp" + +#include +#include + +#include "ExecutionReportCdrAux.hpp" +#include "ExecutionReportTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_ExecutionReport { + ExecutionReportPubSubType::ExecutionReportPubSubType() + { + set_name("DistributedATS_ExecutionReport::ExecutionReport"); + uint32_t type_size = DistributedATS_ExecutionReport_ExecutionReport_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_ExecutionReport_ExecutionReport_max_key_cdr_typesize > 16 ? DistributedATS_ExecutionReport_ExecutionReport_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + ExecutionReportPubSubType::~ExecutionReportPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool ExecutionReportPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const ExecutionReport* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool ExecutionReportPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + ExecutionReport* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t ExecutionReportPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* ExecutionReportPubSubType::create_data() + { + return reinterpret_cast(new ExecutionReport()); + } + + void ExecutionReportPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool ExecutionReportPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + ExecutionReport data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool ExecutionReportPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const ExecutionReport* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_ExecutionReport_ExecutionReport_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_ExecutionReport_ExecutionReport_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void ExecutionReportPubSubType::register_type_object_representation() + { + register_ExecutionReport_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_ExecutionReport + + +// Include auxiliary functions like for serializing/deserializing. +#include "ExecutionReportCdrAux.ipp" diff --git a/GenTools/idl/ExecutionReportPubSubTypes.hpp b/GenTools/idl/ExecutionReportPubSubTypes.hpp new file mode 100644 index 0000000..3786eca --- /dev/null +++ b/GenTools/idl/ExecutionReportPubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 ExecutionReportPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORT_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORT_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "ExecutionReport.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated ExecutionReport is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_ExecutionReport +{ + + /*! + * @brief This class represents the TopicDataType of the type ExecutionReport defined by the user in the IDL file. + * @ingroup ExecutionReport + */ + class ExecutionReportPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef ExecutionReport type; + + eProsima_user_DllExport ExecutionReportPubSubType(); + + eProsima_user_DllExport ~ExecutionReportPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_ExecutionReport + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORT_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/ExecutionReportTypeObjectSupport.cxx b/GenTools/idl/ExecutionReportTypeObjectSupport.cxx new file mode 100644 index 0000000..827fbe3 --- /dev/null +++ b/GenTools/idl/ExecutionReportTypeObjectSupport.cxx @@ -0,0 +1,970 @@ +// 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 ExecutionReportTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "ExecutionReportTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ExecutionReport.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_ExecutionReport { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_ExecutionReport_type_identifier( + TypeIdentifierPair& type_ids_ExecutionReport) +{ + + ReturnCode_t return_code_ExecutionReport {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ExecutionReport = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_ExecutionReport::ExecutionReport", type_ids_ExecutionReport); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ExecutionReport) + { + StructTypeFlag struct_flags_ExecutionReport = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_ExecutionReport = "DistributedATS_ExecutionReport::ExecutionReport"; + eprosima::fastcdr::optional type_ann_builtin_ExecutionReport; + eprosima::fastcdr::optional ann_custom_ExecutionReport; + CompleteTypeDetail detail_ExecutionReport = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_ExecutionReport, ann_custom_ExecutionReport, type_name_ExecutionReport.to_string()); + CompleteStructHeader header_ExecutionReport; + header_ExecutionReport = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_ExecutionReport); + CompleteStructMemberSeq member_seq_ExecutionReport; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_ExecutionReport); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_ExecutionReport); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_ExecutionReport); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_ExecutionReport); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_ExecutionReport); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_OrderID; + ReturnCode_t return_code_OrderID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_OrderID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_OrderID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_OrderID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrderID = 0x00000005; + bool common_OrderID_ec {false}; + CommonStructMember common_OrderID {TypeObjectUtils::build_common_struct_member(member_id_OrderID, member_flags_OrderID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrderID, common_OrderID_ec))}; + if (!common_OrderID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrderID member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrderID = "OrderID"; + eprosima::fastcdr::optional member_ann_builtin_OrderID; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_OrderID = TypeObjectUtils::build_complete_member_detail(name_OrderID, member_ann_builtin_OrderID, ann_custom_ExecutionReport); + CompleteStructMember member_OrderID = TypeObjectUtils::build_complete_struct_member(common_OrderID, detail_OrderID); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_OrderID); + } + { + TypeIdentifierPair type_ids_OrigClOrdID; + ReturnCode_t return_code_OrigClOrdID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrigClOrdID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_OrigClOrdID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrigClOrdID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_OrigClOrdID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_OrigClOrdID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrigClOrdID = 0x00000006; + bool common_OrigClOrdID_ec {false}; + CommonStructMember common_OrigClOrdID {TypeObjectUtils::build_common_struct_member(member_id_OrigClOrdID, member_flags_OrigClOrdID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrigClOrdID, common_OrigClOrdID_ec))}; + if (!common_OrigClOrdID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrigClOrdID member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrigClOrdID = "OrigClOrdID"; + eprosima::fastcdr::optional member_ann_builtin_OrigClOrdID; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_OrigClOrdID = TypeObjectUtils::build_complete_member_detail(name_OrigClOrdID, member_ann_builtin_OrigClOrdID, ann_custom_ExecutionReport); + CompleteStructMember member_OrigClOrdID = TypeObjectUtils::build_complete_struct_member(common_OrigClOrdID, detail_OrigClOrdID); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_OrigClOrdID); + } + { + TypeIdentifierPair type_ids_ExecID; + ReturnCode_t return_code_ExecID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ExecID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_ExecID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ExecID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_ExecID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_ExecID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_ExecID = 0x00000007; + bool common_ExecID_ec {false}; + CommonStructMember common_ExecID {TypeObjectUtils::build_common_struct_member(member_id_ExecID, member_flags_ExecID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_ExecID, common_ExecID_ec))}; + if (!common_ExecID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure ExecID member TypeIdentifier inconsistent."); + return; + } + MemberName name_ExecID = "ExecID"; + eprosima::fastcdr::optional member_ann_builtin_ExecID; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_ExecID = TypeObjectUtils::build_complete_member_detail(name_ExecID, member_ann_builtin_ExecID, ann_custom_ExecutionReport); + CompleteStructMember member_ExecID = TypeObjectUtils::build_complete_struct_member(common_ExecID, detail_ExecID); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_ExecID); + } + { + TypeIdentifierPair type_ids_ExecType; + ReturnCode_t return_code_ExecType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ExecType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_ExecType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ExecType) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "ExecType Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_ExecType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_ExecType = 0x00000008; + bool common_ExecType_ec {false}; + CommonStructMember common_ExecType {TypeObjectUtils::build_common_struct_member(member_id_ExecType, member_flags_ExecType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_ExecType, common_ExecType_ec))}; + if (!common_ExecType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure ExecType member TypeIdentifier inconsistent."); + return; + } + MemberName name_ExecType = "ExecType"; + eprosima::fastcdr::optional member_ann_builtin_ExecType; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_ExecType = TypeObjectUtils::build_complete_member_detail(name_ExecType, member_ann_builtin_ExecType, ann_custom_ExecutionReport); + CompleteStructMember member_ExecType = TypeObjectUtils::build_complete_struct_member(common_ExecType, detail_ExecType); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_ExecType); + } + { + TypeIdentifierPair type_ids_OrdStatus; + ReturnCode_t return_code_OrdStatus {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrdStatus = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_OrdStatus); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrdStatus) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "OrdStatus Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_OrdStatus = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrdStatus = 0x00000009; + bool common_OrdStatus_ec {false}; + CommonStructMember common_OrdStatus {TypeObjectUtils::build_common_struct_member(member_id_OrdStatus, member_flags_OrdStatus, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrdStatus, common_OrdStatus_ec))}; + if (!common_OrdStatus_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrdStatus member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrdStatus = "OrdStatus"; + eprosima::fastcdr::optional member_ann_builtin_OrdStatus; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_OrdStatus = TypeObjectUtils::build_complete_member_detail(name_OrdStatus, member_ann_builtin_OrdStatus, ann_custom_ExecutionReport); + CompleteStructMember member_OrdStatus = TypeObjectUtils::build_complete_struct_member(common_OrdStatus, detail_OrdStatus); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_OrdStatus); + } + { + TypeIdentifierPair type_ids_OrdRejReason; + ReturnCode_t return_code_OrdRejReason {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrdRejReason = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_OrdRejReason); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrdRejReason) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "OrdRejReason Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_OrdRejReason = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrdRejReason = 0x0000000a; + bool common_OrdRejReason_ec {false}; + CommonStructMember common_OrdRejReason {TypeObjectUtils::build_common_struct_member(member_id_OrdRejReason, member_flags_OrdRejReason, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrdRejReason, common_OrdRejReason_ec))}; + if (!common_OrdRejReason_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrdRejReason member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrdRejReason = "OrdRejReason"; + eprosima::fastcdr::optional member_ann_builtin_OrdRejReason; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_OrdRejReason = TypeObjectUtils::build_complete_member_detail(name_OrdRejReason, member_ann_builtin_OrdRejReason, ann_custom_ExecutionReport); + CompleteStructMember member_OrdRejReason = TypeObjectUtils::build_complete_struct_member(common_OrdRejReason, detail_OrdRejReason); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_OrdRejReason); + } + { + TypeIdentifierPair type_ids_Symbol; + ReturnCode_t return_code_Symbol {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Symbol = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Symbol); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Symbol) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Symbol)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Symbol = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Symbol = 0x0000000b; + bool common_Symbol_ec {false}; + CommonStructMember common_Symbol {TypeObjectUtils::build_common_struct_member(member_id_Symbol, member_flags_Symbol, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Symbol, common_Symbol_ec))}; + if (!common_Symbol_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Symbol member TypeIdentifier inconsistent."); + return; + } + MemberName name_Symbol = "Symbol"; + eprosima::fastcdr::optional member_ann_builtin_Symbol; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_Symbol = TypeObjectUtils::build_complete_member_detail(name_Symbol, member_ann_builtin_Symbol, ann_custom_ExecutionReport); + CompleteStructMember member_Symbol = TypeObjectUtils::build_complete_struct_member(common_Symbol, detail_Symbol); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_Symbol); + } + { + TypeIdentifierPair type_ids_SecurityExchange; + ReturnCode_t return_code_SecurityExchange {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityExchange = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityExchange); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityExchange) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityExchange)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityExchange = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityExchange = 0x0000000c; + bool common_SecurityExchange_ec {false}; + CommonStructMember common_SecurityExchange {TypeObjectUtils::build_common_struct_member(member_id_SecurityExchange, member_flags_SecurityExchange, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityExchange, common_SecurityExchange_ec))}; + if (!common_SecurityExchange_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityExchange member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityExchange = "SecurityExchange"; + eprosima::fastcdr::optional member_ann_builtin_SecurityExchange; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_SecurityExchange = TypeObjectUtils::build_complete_member_detail(name_SecurityExchange, member_ann_builtin_SecurityExchange, ann_custom_ExecutionReport); + CompleteStructMember member_SecurityExchange = TypeObjectUtils::build_complete_struct_member(common_SecurityExchange, detail_SecurityExchange); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_SecurityExchange); + } + { + TypeIdentifierPair type_ids_Side; + ReturnCode_t return_code_Side {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Side = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_Side); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Side) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "Side Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_Side = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Side = 0x0000000d; + bool common_Side_ec {false}; + CommonStructMember common_Side {TypeObjectUtils::build_common_struct_member(member_id_Side, member_flags_Side, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Side, common_Side_ec))}; + if (!common_Side_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Side member TypeIdentifier inconsistent."); + return; + } + MemberName name_Side = "Side"; + eprosima::fastcdr::optional member_ann_builtin_Side; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_Side = TypeObjectUtils::build_complete_member_detail(name_Side, member_ann_builtin_Side, ann_custom_ExecutionReport); + CompleteStructMember member_Side = TypeObjectUtils::build_complete_struct_member(common_Side, detail_Side); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_Side); + } + { + TypeIdentifierPair type_ids_OrderQty; + ReturnCode_t return_code_OrderQty {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderQty = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_OrderQty); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderQty) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "OrderQty Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_OrderQty = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrderQty = 0x0000000e; + bool common_OrderQty_ec {false}; + CommonStructMember common_OrderQty {TypeObjectUtils::build_common_struct_member(member_id_OrderQty, member_flags_OrderQty, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrderQty, common_OrderQty_ec))}; + if (!common_OrderQty_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrderQty member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrderQty = "OrderQty"; + eprosima::fastcdr::optional member_ann_builtin_OrderQty; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_OrderQty = TypeObjectUtils::build_complete_member_detail(name_OrderQty, member_ann_builtin_OrderQty, ann_custom_ExecutionReport); + CompleteStructMember member_OrderQty = TypeObjectUtils::build_complete_struct_member(common_OrderQty, detail_OrderQty); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_OrderQty); + } + { + TypeIdentifierPair type_ids_OrdType; + ReturnCode_t return_code_OrdType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrdType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_OrdType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrdType) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "OrdType Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_OrdType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrdType = 0x0000000f; + bool common_OrdType_ec {false}; + CommonStructMember common_OrdType {TypeObjectUtils::build_common_struct_member(member_id_OrdType, member_flags_OrdType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrdType, common_OrdType_ec))}; + if (!common_OrdType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrdType member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrdType = "OrdType"; + eprosima::fastcdr::optional member_ann_builtin_OrdType; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_OrdType = TypeObjectUtils::build_complete_member_detail(name_OrdType, member_ann_builtin_OrdType, ann_custom_ExecutionReport); + CompleteStructMember member_OrdType = TypeObjectUtils::build_complete_struct_member(common_OrdType, detail_OrdType); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_OrdType); + } + { + TypeIdentifierPair type_ids_Price; + ReturnCode_t return_code_Price {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Price = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_float", type_ids_Price); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Price) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "Price Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_Price = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Price = 0x00000010; + bool common_Price_ec {false}; + CommonStructMember common_Price {TypeObjectUtils::build_common_struct_member(member_id_Price, member_flags_Price, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Price, common_Price_ec))}; + if (!common_Price_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Price member TypeIdentifier inconsistent."); + return; + } + MemberName name_Price = "Price"; + eprosima::fastcdr::optional member_ann_builtin_Price; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_Price = TypeObjectUtils::build_complete_member_detail(name_Price, member_ann_builtin_Price, ann_custom_ExecutionReport); + CompleteStructMember member_Price = TypeObjectUtils::build_complete_struct_member(common_Price, detail_Price); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_Price); + } + { + TypeIdentifierPair type_ids_StopPx; + ReturnCode_t return_code_StopPx {eprosima::fastdds::dds::RETCODE_OK}; + return_code_StopPx = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_float", type_ids_StopPx); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_StopPx) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "StopPx Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_StopPx = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_StopPx = 0x00000011; + bool common_StopPx_ec {false}; + CommonStructMember common_StopPx {TypeObjectUtils::build_common_struct_member(member_id_StopPx, member_flags_StopPx, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_StopPx, common_StopPx_ec))}; + if (!common_StopPx_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure StopPx member TypeIdentifier inconsistent."); + return; + } + MemberName name_StopPx = "StopPx"; + eprosima::fastcdr::optional member_ann_builtin_StopPx; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_StopPx = TypeObjectUtils::build_complete_member_detail(name_StopPx, member_ann_builtin_StopPx, ann_custom_ExecutionReport); + CompleteStructMember member_StopPx = TypeObjectUtils::build_complete_struct_member(common_StopPx, detail_StopPx); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_StopPx); + } + { + TypeIdentifierPair type_ids_TimeInForce; + ReturnCode_t return_code_TimeInForce {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TimeInForce = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_TimeInForce); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TimeInForce) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "TimeInForce Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_TimeInForce = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TimeInForce = 0x00000012; + bool common_TimeInForce_ec {false}; + CommonStructMember common_TimeInForce {TypeObjectUtils::build_common_struct_member(member_id_TimeInForce, member_flags_TimeInForce, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TimeInForce, common_TimeInForce_ec))}; + if (!common_TimeInForce_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TimeInForce member TypeIdentifier inconsistent."); + return; + } + MemberName name_TimeInForce = "TimeInForce"; + eprosima::fastcdr::optional member_ann_builtin_TimeInForce; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_TimeInForce = TypeObjectUtils::build_complete_member_detail(name_TimeInForce, member_ann_builtin_TimeInForce, ann_custom_ExecutionReport); + CompleteStructMember member_TimeInForce = TypeObjectUtils::build_complete_struct_member(common_TimeInForce, detail_TimeInForce); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_TimeInForce); + } + { + TypeIdentifierPair type_ids_ExecInst; + ReturnCode_t return_code_ExecInst {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ExecInst = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_ExecInst); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ExecInst) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_ExecInst)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_ExecInst = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_ExecInst = 0x00000013; + bool common_ExecInst_ec {false}; + CommonStructMember common_ExecInst {TypeObjectUtils::build_common_struct_member(member_id_ExecInst, member_flags_ExecInst, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_ExecInst, common_ExecInst_ec))}; + if (!common_ExecInst_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure ExecInst member TypeIdentifier inconsistent."); + return; + } + MemberName name_ExecInst = "ExecInst"; + eprosima::fastcdr::optional member_ann_builtin_ExecInst; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_ExecInst = TypeObjectUtils::build_complete_member_detail(name_ExecInst, member_ann_builtin_ExecInst, ann_custom_ExecutionReport); + CompleteStructMember member_ExecInst = TypeObjectUtils::build_complete_struct_member(common_ExecInst, detail_ExecInst); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_ExecInst); + } + { + TypeIdentifierPair type_ids_LastQty; + ReturnCode_t return_code_LastQty {eprosima::fastdds::dds::RETCODE_OK}; + return_code_LastQty = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_LastQty); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_LastQty) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "LastQty Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_LastQty = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_LastQty = 0x00000014; + bool common_LastQty_ec {false}; + CommonStructMember common_LastQty {TypeObjectUtils::build_common_struct_member(member_id_LastQty, member_flags_LastQty, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_LastQty, common_LastQty_ec))}; + if (!common_LastQty_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure LastQty member TypeIdentifier inconsistent."); + return; + } + MemberName name_LastQty = "LastQty"; + eprosima::fastcdr::optional member_ann_builtin_LastQty; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_LastQty = TypeObjectUtils::build_complete_member_detail(name_LastQty, member_ann_builtin_LastQty, ann_custom_ExecutionReport); + CompleteStructMember member_LastQty = TypeObjectUtils::build_complete_struct_member(common_LastQty, detail_LastQty); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_LastQty); + } + { + TypeIdentifierPair type_ids_LastPx; + ReturnCode_t return_code_LastPx {eprosima::fastdds::dds::RETCODE_OK}; + return_code_LastPx = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_float", type_ids_LastPx); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_LastPx) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "LastPx Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_LastPx = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_LastPx = 0x00000015; + bool common_LastPx_ec {false}; + CommonStructMember common_LastPx {TypeObjectUtils::build_common_struct_member(member_id_LastPx, member_flags_LastPx, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_LastPx, common_LastPx_ec))}; + if (!common_LastPx_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure LastPx member TypeIdentifier inconsistent."); + return; + } + MemberName name_LastPx = "LastPx"; + eprosima::fastcdr::optional member_ann_builtin_LastPx; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_LastPx = TypeObjectUtils::build_complete_member_detail(name_LastPx, member_ann_builtin_LastPx, ann_custom_ExecutionReport); + CompleteStructMember member_LastPx = TypeObjectUtils::build_complete_struct_member(common_LastPx, detail_LastPx); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_LastPx); + } + { + TypeIdentifierPair type_ids_LeavesQty; + ReturnCode_t return_code_LeavesQty {eprosima::fastdds::dds::RETCODE_OK}; + return_code_LeavesQty = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_LeavesQty); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_LeavesQty) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "LeavesQty Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_LeavesQty = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_LeavesQty = 0x00000016; + bool common_LeavesQty_ec {false}; + CommonStructMember common_LeavesQty {TypeObjectUtils::build_common_struct_member(member_id_LeavesQty, member_flags_LeavesQty, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_LeavesQty, common_LeavesQty_ec))}; + if (!common_LeavesQty_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure LeavesQty member TypeIdentifier inconsistent."); + return; + } + MemberName name_LeavesQty = "LeavesQty"; + eprosima::fastcdr::optional member_ann_builtin_LeavesQty; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_LeavesQty = TypeObjectUtils::build_complete_member_detail(name_LeavesQty, member_ann_builtin_LeavesQty, ann_custom_ExecutionReport); + CompleteStructMember member_LeavesQty = TypeObjectUtils::build_complete_struct_member(common_LeavesQty, detail_LeavesQty); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_LeavesQty); + } + { + TypeIdentifierPair type_ids_CumQty; + ReturnCode_t return_code_CumQty {eprosima::fastdds::dds::RETCODE_OK}; + return_code_CumQty = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_CumQty); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_CumQty) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "CumQty Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_CumQty = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_CumQty = 0x00000017; + bool common_CumQty_ec {false}; + CommonStructMember common_CumQty {TypeObjectUtils::build_common_struct_member(member_id_CumQty, member_flags_CumQty, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_CumQty, common_CumQty_ec))}; + if (!common_CumQty_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure CumQty member TypeIdentifier inconsistent."); + return; + } + MemberName name_CumQty = "CumQty"; + eprosima::fastcdr::optional member_ann_builtin_CumQty; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_CumQty = TypeObjectUtils::build_complete_member_detail(name_CumQty, member_ann_builtin_CumQty, ann_custom_ExecutionReport); + CompleteStructMember member_CumQty = TypeObjectUtils::build_complete_struct_member(common_CumQty, detail_CumQty); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_CumQty); + } + { + TypeIdentifierPair type_ids_AvgPx; + ReturnCode_t return_code_AvgPx {eprosima::fastdds::dds::RETCODE_OK}; + return_code_AvgPx = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_float", type_ids_AvgPx); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_AvgPx) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "AvgPx Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_AvgPx = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_AvgPx = 0x00000018; + bool common_AvgPx_ec {false}; + CommonStructMember common_AvgPx {TypeObjectUtils::build_common_struct_member(member_id_AvgPx, member_flags_AvgPx, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_AvgPx, common_AvgPx_ec))}; + if (!common_AvgPx_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure AvgPx member TypeIdentifier inconsistent."); + return; + } + MemberName name_AvgPx = "AvgPx"; + eprosima::fastcdr::optional member_ann_builtin_AvgPx; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_AvgPx = TypeObjectUtils::build_complete_member_detail(name_AvgPx, member_ann_builtin_AvgPx, ann_custom_ExecutionReport); + CompleteStructMember member_AvgPx = TypeObjectUtils::build_complete_struct_member(common_AvgPx, detail_AvgPx); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_AvgPx); + } + { + TypeIdentifierPair type_ids_TransactTime; + ReturnCode_t return_code_TransactTime {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TransactTime = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_uint64_t", type_ids_TransactTime); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TransactTime) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "TransactTime Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_TransactTime = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TransactTime = 0x00000019; + bool common_TransactTime_ec {false}; + CommonStructMember common_TransactTime {TypeObjectUtils::build_common_struct_member(member_id_TransactTime, member_flags_TransactTime, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TransactTime, common_TransactTime_ec))}; + if (!common_TransactTime_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TransactTime member TypeIdentifier inconsistent."); + return; + } + MemberName name_TransactTime = "TransactTime"; + eprosima::fastcdr::optional member_ann_builtin_TransactTime; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_TransactTime = TypeObjectUtils::build_complete_member_detail(name_TransactTime, member_ann_builtin_TransactTime, ann_custom_ExecutionReport); + CompleteStructMember member_TransactTime = TypeObjectUtils::build_complete_struct_member(common_TransactTime, detail_TransactTime); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_TransactTime); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x0000001a; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_ExecutionReport.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_ExecutionReport); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_ExecutionReport, member_Text); + } + CompleteStructType struct_type_ExecutionReport = TypeObjectUtils::build_complete_struct_type(struct_flags_ExecutionReport, header_ExecutionReport, member_seq_ExecutionReport); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_ExecutionReport, type_name_ExecutionReport.to_string(), type_ids_ExecutionReport)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_ExecutionReport::ExecutionReport already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_ExecutionReport + diff --git a/GenTools/idl/ExecutionReportTypeObjectSupport.hpp b/GenTools/idl/ExecutionReportTypeObjectSupport.hpp new file mode 100644 index 0000000..3d56680 --- /dev/null +++ b/GenTools/idl/ExecutionReportTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 ExecutionReportTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORT_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORT_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_ExecutionReport { +/** + * @brief Register ExecutionReport related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_ExecutionReport_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_ExecutionReport + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_EXECUTIONREPORT_EXECUTIONREPORT_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/Header.hpp b/GenTools/idl/Header.hpp new file mode 100644 index 0000000..f2d040e --- /dev/null +++ b/GenTools/idl/Header.hpp @@ -0,0 +1,540 @@ +// 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 Header.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADER_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADER_HPP + +#include +#include +#include +#include + +#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(HEADER_SOURCE) +#define HEADER_DllAPI __declspec( dllexport ) +#else +#define HEADER_DllAPI __declspec( dllimport ) +#endif // HEADER_SOURCE +#else +#define HEADER_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define HEADER_DllAPI +#endif // _WIN32 + +namespace DistributedATS { + +/*! + * @brief This class represents the structure Header defined by the user in the IDL file. + * @ingroup Header + */ +class Header +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport Header() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~Header() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object Header that will be copied. + */ + eProsima_user_DllExport Header( + const Header& x) + { + m_BeginString = x.m_BeginString; + + m_BodyLength = x.m_BodyLength; + + m_MsgType = x.m_MsgType; + + m_SenderCompID = x.m_SenderCompID; + + m_TargetCompID = x.m_TargetCompID; + + m_MsgSeqNum = x.m_MsgSeqNum; + + m_SenderSubID = x.m_SenderSubID; + + m_TargetSubID = x.m_TargetSubID; + + m_SendingTime = x.m_SendingTime; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object Header that will be copied. + */ + eProsima_user_DllExport Header( + Header&& x) noexcept + { + m_BeginString = std::move(x.m_BeginString); + m_BodyLength = x.m_BodyLength; + m_MsgType = std::move(x.m_MsgType); + m_SenderCompID = std::move(x.m_SenderCompID); + m_TargetCompID = std::move(x.m_TargetCompID); + m_MsgSeqNum = x.m_MsgSeqNum; + m_SenderSubID = std::move(x.m_SenderSubID); + m_TargetSubID = std::move(x.m_TargetSubID); + m_SendingTime = x.m_SendingTime; + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object Header that will be copied. + */ + eProsima_user_DllExport Header& operator =( + const Header& x) + { + + m_BeginString = x.m_BeginString; + + m_BodyLength = x.m_BodyLength; + + m_MsgType = x.m_MsgType; + + m_SenderCompID = x.m_SenderCompID; + + m_TargetCompID = x.m_TargetCompID; + + m_MsgSeqNum = x.m_MsgSeqNum; + + m_SenderSubID = x.m_SenderSubID; + + m_TargetSubID = x.m_TargetSubID; + + m_SendingTime = x.m_SendingTime; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object Header that will be copied. + */ + eProsima_user_DllExport Header& operator =( + Header&& x) noexcept + { + + m_BeginString = std::move(x.m_BeginString); + m_BodyLength = x.m_BodyLength; + m_MsgType = std::move(x.m_MsgType); + m_SenderCompID = std::move(x.m_SenderCompID); + m_TargetCompID = std::move(x.m_TargetCompID); + m_MsgSeqNum = x.m_MsgSeqNum; + m_SenderSubID = std::move(x.m_SenderSubID); + m_TargetSubID = std::move(x.m_TargetSubID); + m_SendingTime = x.m_SendingTime; + return *this; + } + + /*! + * @brief Comparison operator. + * @param x Header object to compare. + */ + eProsima_user_DllExport bool operator ==( + const Header& x) const + { + return (m_BeginString == x.m_BeginString && + m_BodyLength == x.m_BodyLength && + m_MsgType == x.m_MsgType && + m_SenderCompID == x.m_SenderCompID && + m_TargetCompID == x.m_TargetCompID && + m_MsgSeqNum == x.m_MsgSeqNum && + m_SenderSubID == x.m_SenderSubID && + m_TargetSubID == x.m_TargetSubID && + m_SendingTime == x.m_SendingTime); + } + + /*! + * @brief Comparison operator. + * @param x Header object to compare. + */ + eProsima_user_DllExport bool operator !=( + const Header& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member BeginString + * @param _BeginString New value to be copied in member BeginString + */ + eProsima_user_DllExport void BeginString( + const std::string& _BeginString) + { + m_BeginString = _BeginString; + } + + /*! + * @brief This function moves the value in member BeginString + * @param _BeginString New value to be moved in member BeginString + */ + eProsima_user_DllExport void BeginString( + std::string&& _BeginString) + { + m_BeginString = std::move(_BeginString); + } + + /*! + * @brief This function returns a constant reference to member BeginString + * @return Constant reference to member BeginString + */ + eProsima_user_DllExport const std::string& BeginString() const + { + return m_BeginString; + } + + /*! + * @brief This function returns a reference to member BeginString + * @return Reference to member BeginString + */ + eProsima_user_DllExport std::string& BeginString() + { + return m_BeginString; + } + + + /*! + * @brief This function sets a value in member BodyLength + * @param _BodyLength New value for member BodyLength + */ + eProsima_user_DllExport void BodyLength( + int32_t _BodyLength) + { + m_BodyLength = _BodyLength; + } + + /*! + * @brief This function returns the value of member BodyLength + * @return Value of member BodyLength + */ + eProsima_user_DllExport int32_t BodyLength() const + { + return m_BodyLength; + } + + /*! + * @brief This function returns a reference to member BodyLength + * @return Reference to member BodyLength + */ + eProsima_user_DllExport int32_t& BodyLength() + { + return m_BodyLength; + } + + + /*! + * @brief This function copies the value in member MsgType + * @param _MsgType New value to be copied in member MsgType + */ + eProsima_user_DllExport void MsgType( + const std::string& _MsgType) + { + m_MsgType = _MsgType; + } + + /*! + * @brief This function moves the value in member MsgType + * @param _MsgType New value to be moved in member MsgType + */ + eProsima_user_DllExport void MsgType( + std::string&& _MsgType) + { + m_MsgType = std::move(_MsgType); + } + + /*! + * @brief This function returns a constant reference to member MsgType + * @return Constant reference to member MsgType + */ + eProsima_user_DllExport const std::string& MsgType() const + { + return m_MsgType; + } + + /*! + * @brief This function returns a reference to member MsgType + * @return Reference to member MsgType + */ + eProsima_user_DllExport std::string& MsgType() + { + return m_MsgType; + } + + + /*! + * @brief This function copies the value in member SenderCompID + * @param _SenderCompID New value to be copied in member SenderCompID + */ + eProsima_user_DllExport void SenderCompID( + const std::string& _SenderCompID) + { + m_SenderCompID = _SenderCompID; + } + + /*! + * @brief This function moves the value in member SenderCompID + * @param _SenderCompID New value to be moved in member SenderCompID + */ + eProsima_user_DllExport void SenderCompID( + std::string&& _SenderCompID) + { + m_SenderCompID = std::move(_SenderCompID); + } + + /*! + * @brief This function returns a constant reference to member SenderCompID + * @return Constant reference to member SenderCompID + */ + eProsima_user_DllExport const std::string& SenderCompID() const + { + return m_SenderCompID; + } + + /*! + * @brief This function returns a reference to member SenderCompID + * @return Reference to member SenderCompID + */ + eProsima_user_DllExport std::string& SenderCompID() + { + return m_SenderCompID; + } + + + /*! + * @brief This function copies the value in member TargetCompID + * @param _TargetCompID New value to be copied in member TargetCompID + */ + eProsima_user_DllExport void TargetCompID( + const std::string& _TargetCompID) + { + m_TargetCompID = _TargetCompID; + } + + /*! + * @brief This function moves the value in member TargetCompID + * @param _TargetCompID New value to be moved in member TargetCompID + */ + eProsima_user_DllExport void TargetCompID( + std::string&& _TargetCompID) + { + m_TargetCompID = std::move(_TargetCompID); + } + + /*! + * @brief This function returns a constant reference to member TargetCompID + * @return Constant reference to member TargetCompID + */ + eProsima_user_DllExport const std::string& TargetCompID() const + { + return m_TargetCompID; + } + + /*! + * @brief This function returns a reference to member TargetCompID + * @return Reference to member TargetCompID + */ + eProsima_user_DllExport std::string& TargetCompID() + { + return m_TargetCompID; + } + + + /*! + * @brief This function sets a value in member MsgSeqNum + * @param _MsgSeqNum New value for member MsgSeqNum + */ + eProsima_user_DllExport void MsgSeqNum( + int32_t _MsgSeqNum) + { + m_MsgSeqNum = _MsgSeqNum; + } + + /*! + * @brief This function returns the value of member MsgSeqNum + * @return Value of member MsgSeqNum + */ + eProsima_user_DllExport int32_t MsgSeqNum() const + { + return m_MsgSeqNum; + } + + /*! + * @brief This function returns a reference to member MsgSeqNum + * @return Reference to member MsgSeqNum + */ + eProsima_user_DllExport int32_t& MsgSeqNum() + { + return m_MsgSeqNum; + } + + + /*! + * @brief This function copies the value in member SenderSubID + * @param _SenderSubID New value to be copied in member SenderSubID + */ + eProsima_user_DllExport void SenderSubID( + const std::string& _SenderSubID) + { + m_SenderSubID = _SenderSubID; + } + + /*! + * @brief This function moves the value in member SenderSubID + * @param _SenderSubID New value to be moved in member SenderSubID + */ + eProsima_user_DllExport void SenderSubID( + std::string&& _SenderSubID) + { + m_SenderSubID = std::move(_SenderSubID); + } + + /*! + * @brief This function returns a constant reference to member SenderSubID + * @return Constant reference to member SenderSubID + */ + eProsima_user_DllExport const std::string& SenderSubID() const + { + return m_SenderSubID; + } + + /*! + * @brief This function returns a reference to member SenderSubID + * @return Reference to member SenderSubID + */ + eProsima_user_DllExport std::string& SenderSubID() + { + return m_SenderSubID; + } + + + /*! + * @brief This function copies the value in member TargetSubID + * @param _TargetSubID New value to be copied in member TargetSubID + */ + eProsima_user_DllExport void TargetSubID( + const std::string& _TargetSubID) + { + m_TargetSubID = _TargetSubID; + } + + /*! + * @brief This function moves the value in member TargetSubID + * @param _TargetSubID New value to be moved in member TargetSubID + */ + eProsima_user_DllExport void TargetSubID( + std::string&& _TargetSubID) + { + m_TargetSubID = std::move(_TargetSubID); + } + + /*! + * @brief This function returns a constant reference to member TargetSubID + * @return Constant reference to member TargetSubID + */ + eProsima_user_DllExport const std::string& TargetSubID() const + { + return m_TargetSubID; + } + + /*! + * @brief This function returns a reference to member TargetSubID + * @return Reference to member TargetSubID + */ + eProsima_user_DllExport std::string& TargetSubID() + { + return m_TargetSubID; + } + + + /*! + * @brief This function sets a value in member SendingTime + * @param _SendingTime New value for member SendingTime + */ + eProsima_user_DllExport void SendingTime( + uint64_t _SendingTime) + { + m_SendingTime = _SendingTime; + } + + /*! + * @brief This function returns the value of member SendingTime + * @return Value of member SendingTime + */ + eProsima_user_DllExport uint64_t SendingTime() const + { + return m_SendingTime; + } + + /*! + * @brief This function returns a reference to member SendingTime + * @return Reference to member SendingTime + */ + eProsima_user_DllExport uint64_t& SendingTime() + { + return m_SendingTime; + } + + + +private: + + std::string m_BeginString; + int32_t m_BodyLength{0}; + std::string m_MsgType; + std::string m_SenderCompID; + std::string m_TargetCompID; + int32_t m_MsgSeqNum{0}; + std::string m_SenderSubID; + std::string m_TargetSubID; + uint64_t m_SendingTime{0}; + +}; + +} // namespace DistributedATS + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_HEADER_HPP_ + + diff --git a/GenTools/idl/Header.idl b/GenTools/idl/Header.idl index c5503fb..84b3e17 100644 --- a/GenTools/idl/Header.idl +++ b/GenTools/idl/Header.idl @@ -1,4 +1,4 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ module DistributedATS { diff --git a/GenTools/idl/HeaderAdapter.cpp b/GenTools/idl/HeaderAdapter.cpp index 7b5cf47..cff3f0c 100644 --- a/GenTools/idl/HeaderAdapter.cpp +++ b/GenTools/idl/HeaderAdapter.cpp @@ -1,61 +1,71 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "HeaderAdapter.hpp" -#include "ConvertUtils.h" +#include void HeaderAdapter::FIX2DDS(const FIX::FieldMap& fixMsg, DistributedATS::Header& ddsMsg ) { if (fixMsg.isSetField(FIX::FIELD::BeginString) ) - ddsMsg.BeginString = CORBA::string_dup(((FIX::BeginString)fixMsg.getField(FIX::FIELD::BeginString)).getString().c_str()); + ddsMsg.BeginString ( ((FIX::BeginString)fixMsg.getField(FIX::FIELD::BeginString)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::BodyLength) ) - ddsMsg.BodyLength = FIELD_GET_REF( fixMsg,BodyLength); + ddsMsg.BodyLength ( FIELD_GET_REF( fixMsg,BodyLength)); else - ddsMsg.BodyLength = 0; + ddsMsg.BodyLength ( 0 ); if (fixMsg.isSetField(FIX::FIELD::MsgType) ) - ddsMsg.MsgType = CORBA::string_dup(((FIX::MsgType)fixMsg.getField(FIX::FIELD::MsgType)).getString().c_str()); + ddsMsg.MsgType ( ((FIX::MsgType)fixMsg.getField(FIX::FIELD::MsgType)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SenderCompID) ) - ddsMsg.SenderCompID = CORBA::string_dup(((FIX::SenderCompID)fixMsg.getField(FIX::FIELD::SenderCompID)).getString().c_str()); + ddsMsg.SenderCompID ( ((FIX::SenderCompID)fixMsg.getField(FIX::FIELD::SenderCompID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::TargetCompID) ) - ddsMsg.TargetCompID = CORBA::string_dup(((FIX::TargetCompID)fixMsg.getField(FIX::FIELD::TargetCompID)).getString().c_str()); + ddsMsg.TargetCompID ( ((FIX::TargetCompID)fixMsg.getField(FIX::FIELD::TargetCompID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::MsgSeqNum) ) - ddsMsg.MsgSeqNum = FIELD_GET_REF( fixMsg,MsgSeqNum); + ddsMsg.MsgSeqNum ( FIELD_GET_REF( fixMsg,MsgSeqNum)); else - ddsMsg.MsgSeqNum = 0; + ddsMsg.MsgSeqNum ( 0 ); + + if (fixMsg.isSetField(FIX::FIELD::SenderSubID) ) + ddsMsg.SenderSubID ( ((FIX::SenderSubID)fixMsg.getField(FIX::FIELD::SenderSubID)).getString().c_str()); + + if (fixMsg.isSetField(FIX::FIELD::TargetSubID) ) + ddsMsg.TargetSubID ( ((FIX::TargetSubID)fixMsg.getField(FIX::FIELD::TargetSubID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SendingTime) ) - ddsMsg.SendingTime = ((FIX::SendingTime)FIELD_GET_REF( fixMsg,SendingTime)).getValue().getJulianDate(); + ddsMsg.SendingTime ( ((FIX::SendingTime)FIELD_GET_REF( fixMsg,SendingTime)).getValue().getJulianDate()); else - ddsMsg.SendingTime = 0; + ddsMsg.SendingTime ( 0 ); }; -void HeaderAdapter::DDS2FIX( const Header& ddsMsg, FIX::FieldMap& fixMsg) +void HeaderAdapter::DDS2FIX( const DistributedATS::Header& ddsMsg, FIX::FieldMap& fixMsg) { - DistributedATS::convert_dds_string_to_fix(ddsMsg.BeginString.in(), FIX::FIELD::BeginString, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.BeginString(), FIX::FIELD::BeginString, fixMsg); - FIX::BodyLength fixBodyLength(ddsMsg.BodyLength); + FIX::BodyLength fixBodyLength(ddsMsg.BodyLength()); fixMsg.setField(fixBodyLength); - DistributedATS::convert_dds_string_to_fix(ddsMsg.MsgType.in(), FIX::FIELD::MsgType, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.MsgType(), FIX::FIELD::MsgType, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SenderCompID.in(), FIX::FIELD::SenderCompID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SenderCompID(), FIX::FIELD::SenderCompID, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.TargetCompID.in(), FIX::FIELD::TargetCompID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.TargetCompID(), FIX::FIELD::TargetCompID, fixMsg); - FIX::MsgSeqNum fixMsgSeqNum(ddsMsg.MsgSeqNum); + FIX::MsgSeqNum fixMsgSeqNum(ddsMsg.MsgSeqNum()); fixMsg.setField(fixMsgSeqNum); - DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.SendingTime, FIX::FIELD::SendingTime, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SenderSubID(), FIX::FIELD::SenderSubID, fixMsg); + + DistributedATS::convert_dds_string_to_fix(ddsMsg.TargetSubID(), FIX::FIELD::TargetSubID, fixMsg); + + DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.SendingTime(), FIX::FIELD::SendingTime, fixMsg); }; diff --git a/GenTools/idl/HeaderAdapter.hpp b/GenTools/idl/HeaderAdapter.hpp index 31e05ed..a5b07f7 100644 --- a/GenTools/idl/HeaderAdapter.hpp +++ b/GenTools/idl/HeaderAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __Header_h__ -#define __Header_h__ - -#include "HeaderTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "Header.hpp" #include -using namespace DistributedATS; - class HeaderAdapter @@ -15,5 +11,4 @@ class HeaderAdapter static void FIX2DDS(const FIX::FieldMap&, DistributedATS::Header& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS::Header& ddsMsg, FIX::FieldMap&) __attribute__ ((visibility ("default"))); -}; -#endif \ No newline at end of file +}; \ No newline at end of file diff --git a/GenTools/idl/HeaderCdrAux.hpp b/GenTools/idl/HeaderCdrAux.hpp new file mode 100644 index 0000000..e3302e6 --- /dev/null +++ b/GenTools/idl/HeaderCdrAux.hpp @@ -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 HeaderCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADERCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADERCDRAUX_HPP + +#include "Header.hpp" + +constexpr uint32_t DistributedATS_Header_max_cdr_typesize {1584UL}; +constexpr uint32_t DistributedATS_Header_max_key_cdr_typesize {0UL}; + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS::Header& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADERCDRAUX_HPP + diff --git a/GenTools/idl/HeaderCdrAux.ipp b/GenTools/idl/HeaderCdrAux.ipp new file mode 100644 index 0000000..3b8f509 --- /dev/null +++ b/GenTools/idl/HeaderCdrAux.ipp @@ -0,0 +1,208 @@ +// 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 HeaderCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADERCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADERCDRAUX_IPP + +#include "HeaderCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS::Header& data, + size_t& current_alignment) +{ + using namespace DistributedATS; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.BeginString(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.BodyLength(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.MsgType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.SenderCompID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.TargetCompID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.MsgSeqNum(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.SenderSubID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.TargetSubID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.SendingTime(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS::Header& data) +{ + using namespace DistributedATS; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.BeginString() + << eprosima::fastcdr::MemberId(1) << data.BodyLength() + << eprosima::fastcdr::MemberId(2) << data.MsgType() + << eprosima::fastcdr::MemberId(3) << data.SenderCompID() + << eprosima::fastcdr::MemberId(4) << data.TargetCompID() + << eprosima::fastcdr::MemberId(5) << data.MsgSeqNum() + << eprosima::fastcdr::MemberId(6) << data.SenderSubID() + << eprosima::fastcdr::MemberId(7) << data.TargetSubID() + << eprosima::fastcdr::MemberId(8) << data.SendingTime() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS::Header& data) +{ + using namespace DistributedATS; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.BeginString(); + break; + + case 1: + dcdr >> data.BodyLength(); + break; + + case 2: + dcdr >> data.MsgType(); + break; + + case 3: + dcdr >> data.SenderCompID(); + break; + + case 4: + dcdr >> data.TargetCompID(); + break; + + case 5: + dcdr >> data.MsgSeqNum(); + break; + + case 6: + dcdr >> data.SenderSubID(); + break; + + case 7: + dcdr >> data.TargetSubID(); + break; + + case 8: + dcdr >> data.SendingTime(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS::Header& data) +{ + using namespace DistributedATS; + + static_cast(scdr); + static_cast(data); + scdr << data.BeginString(); + + scdr << data.BodyLength(); + + scdr << data.MsgType(); + + scdr << data.SenderCompID(); + + scdr << data.TargetCompID(); + + scdr << data.MsgSeqNum(); + + scdr << data.SenderSubID(); + + scdr << data.TargetSubID(); + + scdr << data.SendingTime(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADERCDRAUX_IPP + diff --git a/GenTools/idl/HeaderLogger.hpp b/GenTools/idl/HeaderLogger.hpp index cb70229..08942e2 100644 --- a/GenTools/idl/HeaderLogger.hpp +++ b/GenTools/idl/HeaderLogger.hpp @@ -1,7 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __Header_logger_h__ -#define __Header_logger_h__ - +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once class HeaderLogger @@ -13,17 +11,16 @@ class HeaderLogger ;out<< "Header { " << std::endl ;out - << "ddsMsg.BeginString : " << ddsMsg.BeginString << std::endl - << "ddsMsg.BodyLength : " << ddsMsg.BodyLength << std::endl - << "ddsMsg.MsgType : " << ddsMsg.MsgType << std::endl - << "ddsMsg.SenderCompID : " << ddsMsg.SenderCompID << std::endl - << "ddsMsg.TargetCompID : " << ddsMsg.TargetCompID << std::endl - << "ddsMsg.MsgSeqNum : " << ddsMsg.MsgSeqNum << std::endl - << "ddsMsg.SenderSubID : " << ddsMsg.SenderSubID << std::endl - << "ddsMsg.TargetSubID : " << ddsMsg.TargetSubID << std::endl - << "ddsMsg.SendingTime : " << ddsMsg.SendingTime << std::endl + << "ddsMsg.BeginString : " << ddsMsg.BeginString() << std::endl + << "ddsMsg.BodyLength : " << ddsMsg.BodyLength() << std::endl + << "ddsMsg.MsgType : " << ddsMsg.MsgType() << std::endl + << "ddsMsg.SenderCompID : " << ddsMsg.SenderCompID() << std::endl + << "ddsMsg.TargetCompID : " << ddsMsg.TargetCompID() << std::endl + << "ddsMsg.MsgSeqNum : " << ddsMsg.MsgSeqNum() << std::endl + << "ddsMsg.SenderSubID : " << ddsMsg.SenderSubID() << std::endl + << "ddsMsg.TargetSubID : " << ddsMsg.TargetSubID() << std::endl + << "ddsMsg.SendingTime : " << ddsMsg.SendingTime() << std::endl ; out << "}"; out << std::endl;}; }; -#endif \ No newline at end of file diff --git a/GenTools/idl/HeaderPubSubTypes.cxx b/GenTools/idl/HeaderPubSubTypes.cxx new file mode 100644 index 0000000..f5ddac7 --- /dev/null +++ b/GenTools/idl/HeaderPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 HeaderPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "HeaderPubSubTypes.hpp" + +#include +#include + +#include "HeaderCdrAux.hpp" +#include "HeaderTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS { + HeaderPubSubType::HeaderPubSubType() + { + set_name("DistributedATS::Header"); + uint32_t type_size = DistributedATS_Header_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_Header_max_key_cdr_typesize > 16 ? DistributedATS_Header_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + HeaderPubSubType::~HeaderPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool HeaderPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const Header* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool HeaderPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + Header* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t HeaderPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* HeaderPubSubType::create_data() + { + return reinterpret_cast(new Header()); + } + + void HeaderPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool HeaderPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + Header data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool HeaderPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const Header* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_Header_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_Header_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void HeaderPubSubType::register_type_object_representation() + { + register_Header_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS + + +// Include auxiliary functions like for serializing/deserializing. +#include "HeaderCdrAux.ipp" diff --git a/GenTools/idl/HeaderPubSubTypes.hpp b/GenTools/idl/HeaderPubSubTypes.hpp new file mode 100644 index 0000000..a141bd9 --- /dev/null +++ b/GenTools/idl/HeaderPubSubTypes.hpp @@ -0,0 +1,126 @@ +// 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 HeaderPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADER_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADER_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "Header.hpp" + + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated Header is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS +{ + + /*! + * @brief This class represents the TopicDataType of the type Header defined by the user in the IDL file. + * @ingroup Header + */ + class HeaderPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef Header type; + + eProsima_user_DllExport HeaderPubSubType(); + + eProsima_user_DllExport ~HeaderPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADER_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/HeaderTypeObjectSupport.cxx b/GenTools/idl/HeaderTypeObjectSupport.cxx new file mode 100644 index 0000000..4d79e2f --- /dev/null +++ b/GenTools/idl/HeaderTypeObjectSupport.cxx @@ -0,0 +1,391 @@ +// 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 HeaderTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "HeaderTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Header.hpp" + + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_Header_type_identifier( + TypeIdentifierPair& type_ids_Header) +{ + + ReturnCode_t return_code_Header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_Header); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Header) + { + StructTypeFlag struct_flags_Header = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_Header = "DistributedATS::Header"; + eprosima::fastcdr::optional type_ann_builtin_Header; + eprosima::fastcdr::optional ann_custom_Header; + CompleteTypeDetail detail_Header = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_Header, ann_custom_Header, type_name_Header.to_string()); + CompleteStructHeader header_Header; + header_Header = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_Header); + CompleteStructMemberSeq member_seq_Header; + { + TypeIdentifierPair type_ids_BeginString; + ReturnCode_t return_code_BeginString {eprosima::fastdds::dds::RETCODE_OK}; + return_code_BeginString = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_BeginString); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_BeginString) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_BeginString)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_BeginString = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_BeginString = 0x00000000; + bool common_BeginString_ec {false}; + CommonStructMember common_BeginString {TypeObjectUtils::build_common_struct_member(member_id_BeginString, member_flags_BeginString, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_BeginString, common_BeginString_ec))}; + if (!common_BeginString_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure BeginString member TypeIdentifier inconsistent."); + return; + } + MemberName name_BeginString = "BeginString"; + eprosima::fastcdr::optional member_ann_builtin_BeginString; + ann_custom_Header.reset(); + CompleteMemberDetail detail_BeginString = TypeObjectUtils::build_complete_member_detail(name_BeginString, member_ann_builtin_BeginString, ann_custom_Header); + CompleteStructMember member_BeginString = TypeObjectUtils::build_complete_struct_member(common_BeginString, detail_BeginString); + TypeObjectUtils::add_complete_struct_member(member_seq_Header, member_BeginString); + } + { + TypeIdentifierPair type_ids_BodyLength; + ReturnCode_t return_code_BodyLength {eprosima::fastdds::dds::RETCODE_OK}; + return_code_BodyLength = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_BodyLength); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_BodyLength) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "BodyLength Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_BodyLength = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_BodyLength = 0x00000001; + bool common_BodyLength_ec {false}; + CommonStructMember common_BodyLength {TypeObjectUtils::build_common_struct_member(member_id_BodyLength, member_flags_BodyLength, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_BodyLength, common_BodyLength_ec))}; + if (!common_BodyLength_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure BodyLength member TypeIdentifier inconsistent."); + return; + } + MemberName name_BodyLength = "BodyLength"; + eprosima::fastcdr::optional member_ann_builtin_BodyLength; + ann_custom_Header.reset(); + CompleteMemberDetail detail_BodyLength = TypeObjectUtils::build_complete_member_detail(name_BodyLength, member_ann_builtin_BodyLength, ann_custom_Header); + CompleteStructMember member_BodyLength = TypeObjectUtils::build_complete_struct_member(common_BodyLength, detail_BodyLength); + TypeObjectUtils::add_complete_struct_member(member_seq_Header, member_BodyLength); + } + { + TypeIdentifierPair type_ids_MsgType; + ReturnCode_t return_code_MsgType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MsgType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_MsgType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MsgType) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_MsgType)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_MsgType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MsgType = 0x00000002; + bool common_MsgType_ec {false}; + CommonStructMember common_MsgType {TypeObjectUtils::build_common_struct_member(member_id_MsgType, member_flags_MsgType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MsgType, common_MsgType_ec))}; + if (!common_MsgType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MsgType member TypeIdentifier inconsistent."); + return; + } + MemberName name_MsgType = "MsgType"; + eprosima::fastcdr::optional member_ann_builtin_MsgType; + ann_custom_Header.reset(); + CompleteMemberDetail detail_MsgType = TypeObjectUtils::build_complete_member_detail(name_MsgType, member_ann_builtin_MsgType, ann_custom_Header); + CompleteStructMember member_MsgType = TypeObjectUtils::build_complete_struct_member(common_MsgType, detail_MsgType); + TypeObjectUtils::add_complete_struct_member(member_seq_Header, member_MsgType); + } + { + TypeIdentifierPair type_ids_SenderCompID; + ReturnCode_t return_code_SenderCompID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SenderCompID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SenderCompID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SenderCompID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SenderCompID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SenderCompID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SenderCompID = 0x00000003; + bool common_SenderCompID_ec {false}; + CommonStructMember common_SenderCompID {TypeObjectUtils::build_common_struct_member(member_id_SenderCompID, member_flags_SenderCompID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SenderCompID, common_SenderCompID_ec))}; + if (!common_SenderCompID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SenderCompID member TypeIdentifier inconsistent."); + return; + } + MemberName name_SenderCompID = "SenderCompID"; + eprosima::fastcdr::optional member_ann_builtin_SenderCompID; + ann_custom_Header.reset(); + CompleteMemberDetail detail_SenderCompID = TypeObjectUtils::build_complete_member_detail(name_SenderCompID, member_ann_builtin_SenderCompID, ann_custom_Header); + CompleteStructMember member_SenderCompID = TypeObjectUtils::build_complete_struct_member(common_SenderCompID, detail_SenderCompID); + TypeObjectUtils::add_complete_struct_member(member_seq_Header, member_SenderCompID); + } + { + TypeIdentifierPair type_ids_TargetCompID; + ReturnCode_t return_code_TargetCompID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TargetCompID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_TargetCompID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TargetCompID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_TargetCompID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_TargetCompID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TargetCompID = 0x00000004; + bool common_TargetCompID_ec {false}; + CommonStructMember common_TargetCompID {TypeObjectUtils::build_common_struct_member(member_id_TargetCompID, member_flags_TargetCompID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TargetCompID, common_TargetCompID_ec))}; + if (!common_TargetCompID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TargetCompID member TypeIdentifier inconsistent."); + return; + } + MemberName name_TargetCompID = "TargetCompID"; + eprosima::fastcdr::optional member_ann_builtin_TargetCompID; + ann_custom_Header.reset(); + CompleteMemberDetail detail_TargetCompID = TypeObjectUtils::build_complete_member_detail(name_TargetCompID, member_ann_builtin_TargetCompID, ann_custom_Header); + CompleteStructMember member_TargetCompID = TypeObjectUtils::build_complete_struct_member(common_TargetCompID, detail_TargetCompID); + TypeObjectUtils::add_complete_struct_member(member_seq_Header, member_TargetCompID); + } + { + TypeIdentifierPair type_ids_MsgSeqNum; + ReturnCode_t return_code_MsgSeqNum {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MsgSeqNum = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_MsgSeqNum); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MsgSeqNum) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MsgSeqNum Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MsgSeqNum = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MsgSeqNum = 0x00000005; + bool common_MsgSeqNum_ec {false}; + CommonStructMember common_MsgSeqNum {TypeObjectUtils::build_common_struct_member(member_id_MsgSeqNum, member_flags_MsgSeqNum, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MsgSeqNum, common_MsgSeqNum_ec))}; + if (!common_MsgSeqNum_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MsgSeqNum member TypeIdentifier inconsistent."); + return; + } + MemberName name_MsgSeqNum = "MsgSeqNum"; + eprosima::fastcdr::optional member_ann_builtin_MsgSeqNum; + ann_custom_Header.reset(); + CompleteMemberDetail detail_MsgSeqNum = TypeObjectUtils::build_complete_member_detail(name_MsgSeqNum, member_ann_builtin_MsgSeqNum, ann_custom_Header); + CompleteStructMember member_MsgSeqNum = TypeObjectUtils::build_complete_struct_member(common_MsgSeqNum, detail_MsgSeqNum); + TypeObjectUtils::add_complete_struct_member(member_seq_Header, member_MsgSeqNum); + } + { + TypeIdentifierPair type_ids_SenderSubID; + ReturnCode_t return_code_SenderSubID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SenderSubID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SenderSubID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SenderSubID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SenderSubID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SenderSubID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SenderSubID = 0x00000006; + bool common_SenderSubID_ec {false}; + CommonStructMember common_SenderSubID {TypeObjectUtils::build_common_struct_member(member_id_SenderSubID, member_flags_SenderSubID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SenderSubID, common_SenderSubID_ec))}; + if (!common_SenderSubID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SenderSubID member TypeIdentifier inconsistent."); + return; + } + MemberName name_SenderSubID = "SenderSubID"; + eprosima::fastcdr::optional member_ann_builtin_SenderSubID; + ann_custom_Header.reset(); + CompleteMemberDetail detail_SenderSubID = TypeObjectUtils::build_complete_member_detail(name_SenderSubID, member_ann_builtin_SenderSubID, ann_custom_Header); + CompleteStructMember member_SenderSubID = TypeObjectUtils::build_complete_struct_member(common_SenderSubID, detail_SenderSubID); + TypeObjectUtils::add_complete_struct_member(member_seq_Header, member_SenderSubID); + } + { + TypeIdentifierPair type_ids_TargetSubID; + ReturnCode_t return_code_TargetSubID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TargetSubID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_TargetSubID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TargetSubID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_TargetSubID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_TargetSubID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TargetSubID = 0x00000007; + bool common_TargetSubID_ec {false}; + CommonStructMember common_TargetSubID {TypeObjectUtils::build_common_struct_member(member_id_TargetSubID, member_flags_TargetSubID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TargetSubID, common_TargetSubID_ec))}; + if (!common_TargetSubID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TargetSubID member TypeIdentifier inconsistent."); + return; + } + MemberName name_TargetSubID = "TargetSubID"; + eprosima::fastcdr::optional member_ann_builtin_TargetSubID; + ann_custom_Header.reset(); + CompleteMemberDetail detail_TargetSubID = TypeObjectUtils::build_complete_member_detail(name_TargetSubID, member_ann_builtin_TargetSubID, ann_custom_Header); + CompleteStructMember member_TargetSubID = TypeObjectUtils::build_complete_struct_member(common_TargetSubID, detail_TargetSubID); + TypeObjectUtils::add_complete_struct_member(member_seq_Header, member_TargetSubID); + } + { + TypeIdentifierPair type_ids_SendingTime; + ReturnCode_t return_code_SendingTime {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SendingTime = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_uint64_t", type_ids_SendingTime); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SendingTime) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "SendingTime Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_SendingTime = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SendingTime = 0x00000008; + bool common_SendingTime_ec {false}; + CommonStructMember common_SendingTime {TypeObjectUtils::build_common_struct_member(member_id_SendingTime, member_flags_SendingTime, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SendingTime, common_SendingTime_ec))}; + if (!common_SendingTime_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SendingTime member TypeIdentifier inconsistent."); + return; + } + MemberName name_SendingTime = "SendingTime"; + eprosima::fastcdr::optional member_ann_builtin_SendingTime; + ann_custom_Header.reset(); + CompleteMemberDetail detail_SendingTime = TypeObjectUtils::build_complete_member_detail(name_SendingTime, member_ann_builtin_SendingTime, ann_custom_Header); + CompleteStructMember member_SendingTime = TypeObjectUtils::build_complete_struct_member(common_SendingTime, detail_SendingTime); + TypeObjectUtils::add_complete_struct_member(member_seq_Header, member_SendingTime); + } + CompleteStructType struct_type_Header = TypeObjectUtils::build_complete_struct_type(struct_flags_Header, header_Header, member_seq_Header); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_Header, type_name_Header.to_string(), type_ids_Header)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS::Header already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS + diff --git a/GenTools/idl/HeaderTypeObjectSupport.hpp b/GenTools/idl/HeaderTypeObjectSupport.hpp new file mode 100644 index 0000000..f341307 --- /dev/null +++ b/GenTools/idl/HeaderTypeObjectSupport.hpp @@ -0,0 +1,59 @@ +// 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 HeaderTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADER_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADER_TYPE_OBJECT_SUPPORT_HPP + +#include + + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS { +/** + * @brief Register Header related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_Header_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_HEADER_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/Heartbeat.hpp b/GenTools/idl/Heartbeat.hpp new file mode 100644 index 0000000..2ac77d7 --- /dev/null +++ b/GenTools/idl/Heartbeat.hpp @@ -0,0 +1,383 @@ +// 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 Heartbeat.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEAT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEAT_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(HEARTBEAT_SOURCE) +#define HEARTBEAT_DllAPI __declspec( dllexport ) +#else +#define HEARTBEAT_DllAPI __declspec( dllimport ) +#endif // HEARTBEAT_SOURCE +#else +#define HEARTBEAT_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define HEARTBEAT_DllAPI +#endif // _WIN32 + +namespace DistributedATS_Heartbeat { + +/*! + * @brief This class represents the structure Heartbeat defined by the user in the IDL file. + * @ingroup Heartbeat + */ +class Heartbeat +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport Heartbeat() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~Heartbeat() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object Heartbeat that will be copied. + */ + eProsima_user_DllExport Heartbeat( + const Heartbeat& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object Heartbeat that will be copied. + */ + eProsima_user_DllExport Heartbeat( + Heartbeat&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object Heartbeat that will be copied. + */ + eProsima_user_DllExport Heartbeat& operator =( + const Heartbeat& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object Heartbeat that will be copied. + */ + eProsima_user_DllExport Heartbeat& operator =( + Heartbeat&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x Heartbeat object to compare. + */ + eProsima_user_DllExport bool operator ==( + const Heartbeat& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser); + } + + /*! + * @brief Comparison operator. + * @param x Heartbeat object to compare. + */ + eProsima_user_DllExport bool operator !=( + const Heartbeat& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + +}; + +} // namespace DistributedATS_Heartbeat + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_HEARTBEAT_HEARTBEAT_HPP_ + + diff --git a/GenTools/idl/Heartbeat.idl b/GenTools/idl/Heartbeat.idl index 97b74a5..bd845cb 100644 --- a/GenTools/idl/Heartbeat.idl +++ b/GenTools/idl/Heartbeat.idl @@ -1,12 +1,19 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_Heartbeat { - @topic + struct Heartbeat { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + }; }; diff --git a/GenTools/idl/HeartbeatAdapter.cpp b/GenTools/idl/HeartbeatAdapter.cpp index 7c67f7a..15165ac 100644 --- a/GenTools/idl/HeartbeatAdapter.cpp +++ b/GenTools/idl/HeartbeatAdapter.cpp @@ -1,11 +1,11 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "HeartbeatAdapter.hpp" -#include "ConvertUtils.h" +#include void HeartbeatAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_Heartbeat::Heartbeat& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); }; @@ -14,7 +14,7 @@ void HeartbeatAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_Heartb void HeartbeatAdapter::DDS2FIX(const DistributedATS_Heartbeat::Heartbeat& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); }; diff --git a/GenTools/idl/HeartbeatAdapter.hpp b/GenTools/idl/HeartbeatAdapter.hpp index c8bbfce..e23a4f4 100644 --- a/GenTools/idl/HeartbeatAdapter.hpp +++ b/GenTools/idl/HeartbeatAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __Heartbeat_h__ -#define __Heartbeat_h__ - -#include "HeartbeatTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "Heartbeat.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class HeartbeatAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_Heartbeat::Heartbeat& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_Heartbeat::Heartbeat& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/HeartbeatCdrAux.hpp b/GenTools/idl/HeartbeatCdrAux.hpp new file mode 100644 index 0000000..caf3a2c --- /dev/null +++ b/GenTools/idl/HeartbeatCdrAux.hpp @@ -0,0 +1,47 @@ +// 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 HeartbeatCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEATCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEATCDRAUX_HPP + +#include "Heartbeat.hpp" + +constexpr uint32_t DistributedATS_Heartbeat_Heartbeat_max_cdr_typesize {2624UL}; +constexpr uint32_t DistributedATS_Heartbeat_Heartbeat_max_key_cdr_typesize {0UL}; + + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_Heartbeat::Heartbeat& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEATCDRAUX_HPP + diff --git a/GenTools/idl/HeartbeatCdrAux.ipp b/GenTools/idl/HeartbeatCdrAux.ipp new file mode 100644 index 0000000..ee9112f --- /dev/null +++ b/GenTools/idl/HeartbeatCdrAux.ipp @@ -0,0 +1,176 @@ +// 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 HeartbeatCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEATCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEATCDRAUX_IPP + +#include "HeartbeatCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_Heartbeat::Heartbeat& data, + size_t& current_alignment) +{ + using namespace DistributedATS_Heartbeat; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_Heartbeat::Heartbeat& data) +{ + using namespace DistributedATS_Heartbeat; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_Heartbeat::Heartbeat& data) +{ + using namespace DistributedATS_Heartbeat; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_Heartbeat::Heartbeat& data) +{ + using namespace DistributedATS_Heartbeat; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEATCDRAUX_IPP + diff --git a/GenTools/idl/HeartbeatLogger.hpp b/GenTools/idl/HeartbeatLogger.hpp index 2dcc285..1e2d694 100644 --- a/GenTools/idl/HeartbeatLogger.hpp +++ b/GenTools/idl/HeartbeatLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __HeartbeatLogger_h__ -#define __HeartbeatLogger_h__ - -#include "HeartbeatTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,14 +10,17 @@ class HeartbeatLogger static void log(std::ostream & out, DistributedATS_Heartbeat::Heartbeat& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : Heartbeat { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/HeartbeatPubSubTypes.cxx b/GenTools/idl/HeartbeatPubSubTypes.cxx new file mode 100644 index 0000000..ccbc01c --- /dev/null +++ b/GenTools/idl/HeartbeatPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 HeartbeatPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "HeartbeatPubSubTypes.hpp" + +#include +#include + +#include "HeartbeatCdrAux.hpp" +#include "HeartbeatTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_Heartbeat { + HeartbeatPubSubType::HeartbeatPubSubType() + { + set_name("DistributedATS_Heartbeat::Heartbeat"); + uint32_t type_size = DistributedATS_Heartbeat_Heartbeat_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_Heartbeat_Heartbeat_max_key_cdr_typesize > 16 ? DistributedATS_Heartbeat_Heartbeat_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + HeartbeatPubSubType::~HeartbeatPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool HeartbeatPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const Heartbeat* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool HeartbeatPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + Heartbeat* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t HeartbeatPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* HeartbeatPubSubType::create_data() + { + return reinterpret_cast(new Heartbeat()); + } + + void HeartbeatPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool HeartbeatPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + Heartbeat data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool HeartbeatPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const Heartbeat* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_Heartbeat_Heartbeat_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_Heartbeat_Heartbeat_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void HeartbeatPubSubType::register_type_object_representation() + { + register_Heartbeat_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_Heartbeat + + +// Include auxiliary functions like for serializing/deserializing. +#include "HeartbeatCdrAux.ipp" diff --git a/GenTools/idl/HeartbeatPubSubTypes.hpp b/GenTools/idl/HeartbeatPubSubTypes.hpp new file mode 100644 index 0000000..046c0b4 --- /dev/null +++ b/GenTools/idl/HeartbeatPubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 HeartbeatPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEAT_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEAT_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "Heartbeat.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated Heartbeat is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_Heartbeat +{ + + /*! + * @brief This class represents the TopicDataType of the type Heartbeat defined by the user in the IDL file. + * @ingroup Heartbeat + */ + class HeartbeatPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef Heartbeat type; + + eProsima_user_DllExport HeartbeatPubSubType(); + + eProsima_user_DllExport ~HeartbeatPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_Heartbeat + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEAT_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/HeartbeatTypeObjectSupport.cxx b/GenTools/idl/HeartbeatTypeObjectSupport.cxx new file mode 100644 index 0000000..fe97828 --- /dev/null +++ b/GenTools/idl/HeartbeatTypeObjectSupport.cxx @@ -0,0 +1,254 @@ +// 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 HeartbeatTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "HeartbeatTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Heartbeat.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_Heartbeat { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_Heartbeat_type_identifier( + TypeIdentifierPair& type_ids_Heartbeat) +{ + + ReturnCode_t return_code_Heartbeat {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Heartbeat = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_Heartbeat::Heartbeat", type_ids_Heartbeat); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Heartbeat) + { + StructTypeFlag struct_flags_Heartbeat = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_Heartbeat = "DistributedATS_Heartbeat::Heartbeat"; + eprosima::fastcdr::optional type_ann_builtin_Heartbeat; + eprosima::fastcdr::optional ann_custom_Heartbeat; + CompleteTypeDetail detail_Heartbeat = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_Heartbeat, ann_custom_Heartbeat, type_name_Heartbeat.to_string()); + CompleteStructHeader header_Heartbeat; + header_Heartbeat = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_Heartbeat); + CompleteStructMemberSeq member_seq_Heartbeat; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_Heartbeat.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_Heartbeat); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_Heartbeat, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_Heartbeat.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_Heartbeat); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_Heartbeat, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_Heartbeat.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_Heartbeat); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_Heartbeat, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_Heartbeat.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_Heartbeat); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_Heartbeat, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_Heartbeat.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_Heartbeat); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_Heartbeat, member_DATS_DestinationUser); + } + CompleteStructType struct_type_Heartbeat = TypeObjectUtils::build_complete_struct_type(struct_flags_Heartbeat, header_Heartbeat, member_seq_Heartbeat); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_Heartbeat, type_name_Heartbeat.to_string(), type_ids_Heartbeat)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_Heartbeat::Heartbeat already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_Heartbeat + diff --git a/GenTools/idl/HeartbeatTypeObjectSupport.hpp b/GenTools/idl/HeartbeatTypeObjectSupport.hpp new file mode 100644 index 0000000..54e6266 --- /dev/null +++ b/GenTools/idl/HeartbeatTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 HeartbeatTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEAT_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEAT_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_Heartbeat { +/** + * @brief Register Heartbeat related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_Heartbeat_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_Heartbeat + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_HEARTBEAT_HEARTBEAT_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/Logon.hpp b/GenTools/idl/Logon.hpp new file mode 100644 index 0000000..de30d01 --- /dev/null +++ b/GenTools/idl/Logon.hpp @@ -0,0 +1,598 @@ +// 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 Logon.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGON_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGON_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(LOGON_SOURCE) +#define LOGON_DllAPI __declspec( dllexport ) +#else +#define LOGON_DllAPI __declspec( dllimport ) +#endif // LOGON_SOURCE +#else +#define LOGON_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define LOGON_DllAPI +#endif // _WIN32 + +namespace DistributedATS_Logon { + +/*! + * @brief This class represents the structure Logon defined by the user in the IDL file. + * @ingroup Logon + */ +class Logon +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport Logon() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~Logon() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object Logon that will be copied. + */ + eProsima_user_DllExport Logon( + const Logon& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_EncryptMethod = x.m_EncryptMethod; + + m_HeartBtInt = x.m_HeartBtInt; + + m_RawData = x.m_RawData; + + m_Username = x.m_Username; + + m_Password = x.m_Password; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object Logon that will be copied. + */ + eProsima_user_DllExport Logon( + Logon&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_EncryptMethod = x.m_EncryptMethod; + m_HeartBtInt = x.m_HeartBtInt; + m_RawData = std::move(x.m_RawData); + m_Username = std::move(x.m_Username); + m_Password = std::move(x.m_Password); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object Logon that will be copied. + */ + eProsima_user_DllExport Logon& operator =( + const Logon& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_EncryptMethod = x.m_EncryptMethod; + + m_HeartBtInt = x.m_HeartBtInt; + + m_RawData = x.m_RawData; + + m_Username = x.m_Username; + + m_Password = x.m_Password; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object Logon that will be copied. + */ + eProsima_user_DllExport Logon& operator =( + Logon&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_EncryptMethod = x.m_EncryptMethod; + m_HeartBtInt = x.m_HeartBtInt; + m_RawData = std::move(x.m_RawData); + m_Username = std::move(x.m_Username); + m_Password = std::move(x.m_Password); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x Logon object to compare. + */ + eProsima_user_DllExport bool operator ==( + const Logon& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_EncryptMethod == x.m_EncryptMethod && + m_HeartBtInt == x.m_HeartBtInt && + m_RawData == x.m_RawData && + m_Username == x.m_Username && + m_Password == x.m_Password); + } + + /*! + * @brief Comparison operator. + * @param x Logon object to compare. + */ + eProsima_user_DllExport bool operator !=( + const Logon& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function sets a value in member EncryptMethod + * @param _EncryptMethod New value for member EncryptMethod + */ + eProsima_user_DllExport void EncryptMethod( + int32_t _EncryptMethod) + { + m_EncryptMethod = _EncryptMethod; + } + + /*! + * @brief This function returns the value of member EncryptMethod + * @return Value of member EncryptMethod + */ + eProsima_user_DllExport int32_t EncryptMethod() const + { + return m_EncryptMethod; + } + + /*! + * @brief This function returns a reference to member EncryptMethod + * @return Reference to member EncryptMethod + */ + eProsima_user_DllExport int32_t& EncryptMethod() + { + return m_EncryptMethod; + } + + + /*! + * @brief This function sets a value in member HeartBtInt + * @param _HeartBtInt New value for member HeartBtInt + */ + eProsima_user_DllExport void HeartBtInt( + int32_t _HeartBtInt) + { + m_HeartBtInt = _HeartBtInt; + } + + /*! + * @brief This function returns the value of member HeartBtInt + * @return Value of member HeartBtInt + */ + eProsima_user_DllExport int32_t HeartBtInt() const + { + return m_HeartBtInt; + } + + /*! + * @brief This function returns a reference to member HeartBtInt + * @return Reference to member HeartBtInt + */ + eProsima_user_DllExport int32_t& HeartBtInt() + { + return m_HeartBtInt; + } + + + /*! + * @brief This function copies the value in member RawData + * @param _RawData New value to be copied in member RawData + */ + eProsima_user_DllExport void RawData( + const std::string& _RawData) + { + m_RawData = _RawData; + } + + /*! + * @brief This function moves the value in member RawData + * @param _RawData New value to be moved in member RawData + */ + eProsima_user_DllExport void RawData( + std::string&& _RawData) + { + m_RawData = std::move(_RawData); + } + + /*! + * @brief This function returns a constant reference to member RawData + * @return Constant reference to member RawData + */ + eProsima_user_DllExport const std::string& RawData() const + { + return m_RawData; + } + + /*! + * @brief This function returns a reference to member RawData + * @return Reference to member RawData + */ + eProsima_user_DllExport std::string& RawData() + { + return m_RawData; + } + + + /*! + * @brief This function copies the value in member Username + * @param _Username New value to be copied in member Username + */ + eProsima_user_DllExport void Username( + const std::string& _Username) + { + m_Username = _Username; + } + + /*! + * @brief This function moves the value in member Username + * @param _Username New value to be moved in member Username + */ + eProsima_user_DllExport void Username( + std::string&& _Username) + { + m_Username = std::move(_Username); + } + + /*! + * @brief This function returns a constant reference to member Username + * @return Constant reference to member Username + */ + eProsima_user_DllExport const std::string& Username() const + { + return m_Username; + } + + /*! + * @brief This function returns a reference to member Username + * @return Reference to member Username + */ + eProsima_user_DllExport std::string& Username() + { + return m_Username; + } + + + /*! + * @brief This function copies the value in member Password + * @param _Password New value to be copied in member Password + */ + eProsima_user_DllExport void Password( + const std::string& _Password) + { + m_Password = _Password; + } + + /*! + * @brief This function moves the value in member Password + * @param _Password New value to be moved in member Password + */ + eProsima_user_DllExport void Password( + std::string&& _Password) + { + m_Password = std::move(_Password); + } + + /*! + * @brief This function returns a constant reference to member Password + * @return Constant reference to member Password + */ + eProsima_user_DllExport const std::string& Password() const + { + return m_Password; + } + + /*! + * @brief This function returns a reference to member Password + * @return Reference to member Password + */ + eProsima_user_DllExport std::string& Password() + { + return m_Password; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + int32_t m_EncryptMethod{0}; + int32_t m_HeartBtInt{0}; + std::string m_RawData; + std::string m_Username; + std::string m_Password; + +}; + +} // namespace DistributedATS_Logon + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_LOGON_LOGON_HPP_ + + diff --git a/GenTools/idl/Logon.idl b/GenTools/idl/Logon.idl index 443bf0e..8090c01 100644 --- a/GenTools/idl/Logon.idl +++ b/GenTools/idl/Logon.idl @@ -1,13 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_Logon { - @topic + struct Logon { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + long EncryptMethod; long HeartBtInt; string RawData; diff --git a/GenTools/idl/LogonAdapter.cpp b/GenTools/idl/LogonAdapter.cpp index 9f421cc..55b6336 100644 --- a/GenTools/idl/LogonAdapter.cpp +++ b/GenTools/idl/LogonAdapter.cpp @@ -1,30 +1,30 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "LogonAdapter.hpp" -#include "ConvertUtils.h" +#include void LogonAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_Logon::Logon& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::EncryptMethod) ) - ddsMsg.EncryptMethod = FIELD_GET_REF( fixMsg,EncryptMethod); + ddsMsg.EncryptMethod ( FIELD_GET_REF( fixMsg,EncryptMethod)); else - ddsMsg.EncryptMethod = 0; + ddsMsg.EncryptMethod ( 0 ); if (fixMsg.isSetField(FIX::FIELD::HeartBtInt) ) - ddsMsg.HeartBtInt = FIELD_GET_REF( fixMsg,HeartBtInt); + ddsMsg.HeartBtInt ( FIELD_GET_REF( fixMsg,HeartBtInt)); else - ddsMsg.HeartBtInt = 0; + ddsMsg.HeartBtInt ( 0 ); if (fixMsg.isSetField(FIX::FIELD::RawData) ) - ddsMsg.RawData = CORBA::string_dup(((FIX::RawData)fixMsg.getField(FIX::FIELD::RawData)).getString().c_str()); + ddsMsg.RawData ( ((FIX::RawData)fixMsg.getField(FIX::FIELD::RawData)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::Username) ) - ddsMsg.Username = CORBA::string_dup(((FIX::Username)fixMsg.getField(FIX::FIELD::Username)).getString().c_str()); + ddsMsg.Username ( ((FIX::Username)fixMsg.getField(FIX::FIELD::Username)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::Password) ) - ddsMsg.Password = CORBA::string_dup(((FIX::Password)fixMsg.getField(FIX::FIELD::Password)).getString().c_str()); + ddsMsg.Password ( ((FIX::Password)fixMsg.getField(FIX::FIELD::Password)).getString().c_str()); }; @@ -33,19 +33,19 @@ void LogonAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_Logon::Log void LogonAdapter::DDS2FIX(const DistributedATS_Logon::Logon& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - FIX::EncryptMethod fixEncryptMethod(ddsMsg.EncryptMethod); + FIX::EncryptMethod fixEncryptMethod(ddsMsg.EncryptMethod()); fixMsg.setField(fixEncryptMethod); - FIX::HeartBtInt fixHeartBtInt(ddsMsg.HeartBtInt); + FIX::HeartBtInt fixHeartBtInt(ddsMsg.HeartBtInt()); fixMsg.setField(fixHeartBtInt); - DistributedATS::convert_dds_string_to_fix(ddsMsg.RawData.in(), FIX::FIELD::RawData, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.RawData(), FIX::FIELD::RawData, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Username.in(), FIX::FIELD::Username, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Username(), FIX::FIELD::Username, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Password.in(), FIX::FIELD::Password, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Password(), FIX::FIELD::Password, fixMsg); }; diff --git a/GenTools/idl/LogonAdapter.hpp b/GenTools/idl/LogonAdapter.hpp index 0902ca5..8c3e671 100644 --- a/GenTools/idl/LogonAdapter.hpp +++ b/GenTools/idl/LogonAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __Logon_h__ -#define __Logon_h__ - -#include "LogonTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "Logon.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class LogonAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_Logon::Logon& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_Logon::Logon& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/LogonCdrAux.hpp b/GenTools/idl/LogonCdrAux.hpp new file mode 100644 index 0000000..c37cb51 --- /dev/null +++ b/GenTools/idl/LogonCdrAux.hpp @@ -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 LogonCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGONCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGONCDRAUX_HPP + +#include "Logon.hpp" + +constexpr uint32_t DistributedATS_Logon_Logon_max_cdr_typesize {3412UL}; +constexpr uint32_t DistributedATS_Logon_Logon_max_key_cdr_typesize {0UL}; + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_Logon::Logon& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGONCDRAUX_HPP + diff --git a/GenTools/idl/LogonCdrAux.ipp b/GenTools/idl/LogonCdrAux.ipp new file mode 100644 index 0000000..5b499bb --- /dev/null +++ b/GenTools/idl/LogonCdrAux.ipp @@ -0,0 +1,231 @@ +// 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 LogonCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGONCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGONCDRAUX_IPP + +#include "LogonCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_Logon::Logon& data, + size_t& current_alignment) +{ + using namespace DistributedATS_Logon; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.EncryptMethod(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.HeartBtInt(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.RawData(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.Username(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(9), + data.Password(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_Logon::Logon& data) +{ + using namespace DistributedATS_Logon; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.EncryptMethod() + << eprosima::fastcdr::MemberId(6) << data.HeartBtInt() + << eprosima::fastcdr::MemberId(7) << data.RawData() + << eprosima::fastcdr::MemberId(8) << data.Username() + << eprosima::fastcdr::MemberId(9) << data.Password() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_Logon::Logon& data) +{ + using namespace DistributedATS_Logon; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.EncryptMethod(); + break; + + case 6: + dcdr >> data.HeartBtInt(); + break; + + case 7: + dcdr >> data.RawData(); + break; + + case 8: + dcdr >> data.Username(); + break; + + case 9: + dcdr >> data.Password(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_Logon::Logon& data) +{ + using namespace DistributedATS_Logon; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.EncryptMethod(); + + scdr << data.HeartBtInt(); + + scdr << data.RawData(); + + scdr << data.Username(); + + scdr << data.Password(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGONCDRAUX_IPP + diff --git a/GenTools/idl/LogonLogger.hpp b/GenTools/idl/LogonLogger.hpp index 436a9f0..7c91270 100644 --- a/GenTools/idl/LogonLogger.hpp +++ b/GenTools/idl/LogonLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __LogonLogger_h__ -#define __LogonLogger_h__ - -#include "LogonTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,19 +10,22 @@ class LogonLogger static void log(std::ostream & out, DistributedATS_Logon::Logon& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : Logon { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.EncryptMethod : " << ddsMsg.EncryptMethod << std::endl - << "ddsMsg.HeartBtInt : " << ddsMsg.HeartBtInt << std::endl - << "ddsMsg.RawData : " << ddsMsg.RawData << std::endl - << "ddsMsg.Username : " << ddsMsg.Username << std::endl - << "ddsMsg.Password : " << ddsMsg.Password << std::endl + << "ddsMsg.EncryptMethod : " << ddsMsg.EncryptMethod() << std::endl + << "ddsMsg.HeartBtInt : " << ddsMsg.HeartBtInt() << std::endl + << "ddsMsg.RawData : " << ddsMsg.RawData() << std::endl + << "ddsMsg.Username : " << ddsMsg.Username() << std::endl + << "ddsMsg.Password : " << ddsMsg.Password() << std::endl ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/LogonPubSubTypes.cxx b/GenTools/idl/LogonPubSubTypes.cxx new file mode 100644 index 0000000..e145332 --- /dev/null +++ b/GenTools/idl/LogonPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 LogonPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "LogonPubSubTypes.hpp" + +#include +#include + +#include "LogonCdrAux.hpp" +#include "LogonTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_Logon { + LogonPubSubType::LogonPubSubType() + { + set_name("DistributedATS_Logon::Logon"); + uint32_t type_size = DistributedATS_Logon_Logon_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_Logon_Logon_max_key_cdr_typesize > 16 ? DistributedATS_Logon_Logon_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + LogonPubSubType::~LogonPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool LogonPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const Logon* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool LogonPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + Logon* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t LogonPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* LogonPubSubType::create_data() + { + return reinterpret_cast(new Logon()); + } + + void LogonPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool LogonPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + Logon data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool LogonPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const Logon* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_Logon_Logon_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_Logon_Logon_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void LogonPubSubType::register_type_object_representation() + { + register_Logon_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_Logon + + +// Include auxiliary functions like for serializing/deserializing. +#include "LogonCdrAux.ipp" diff --git a/GenTools/idl/LogonPubSubTypes.hpp b/GenTools/idl/LogonPubSubTypes.hpp new file mode 100644 index 0000000..4998801 --- /dev/null +++ b/GenTools/idl/LogonPubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 LogonPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGON_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGON_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "Logon.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated Logon is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_Logon +{ + + /*! + * @brief This class represents the TopicDataType of the type Logon defined by the user in the IDL file. + * @ingroup Logon + */ + class LogonPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef Logon type; + + eProsima_user_DllExport LogonPubSubType(); + + eProsima_user_DllExport ~LogonPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_Logon + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGON_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/LogonTypeObjectSupport.cxx b/GenTools/idl/LogonTypeObjectSupport.cxx new file mode 100644 index 0000000..fe3e4a5 --- /dev/null +++ b/GenTools/idl/LogonTypeObjectSupport.cxx @@ -0,0 +1,428 @@ +// 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 LogonTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "LogonTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Logon.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_Logon { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_Logon_type_identifier( + TypeIdentifierPair& type_ids_Logon) +{ + + ReturnCode_t return_code_Logon {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Logon = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_Logon::Logon", type_ids_Logon); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Logon) + { + StructTypeFlag struct_flags_Logon = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_Logon = "DistributedATS_Logon::Logon"; + eprosima::fastcdr::optional type_ann_builtin_Logon; + eprosima::fastcdr::optional ann_custom_Logon; + CompleteTypeDetail detail_Logon = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_Logon, ann_custom_Logon, type_name_Logon.to_string()); + CompleteStructHeader header_Logon; + header_Logon = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_Logon); + CompleteStructMemberSeq member_seq_Logon; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_Logon.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_Logon); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_Logon, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_Logon.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_Logon); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_Logon, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_Logon.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_Logon); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_Logon, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_Logon.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_Logon); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_Logon, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_Logon.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_Logon); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_Logon, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_EncryptMethod; + ReturnCode_t return_code_EncryptMethod {eprosima::fastdds::dds::RETCODE_OK}; + return_code_EncryptMethod = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_EncryptMethod); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_EncryptMethod) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "EncryptMethod Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_EncryptMethod = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_EncryptMethod = 0x00000005; + bool common_EncryptMethod_ec {false}; + CommonStructMember common_EncryptMethod {TypeObjectUtils::build_common_struct_member(member_id_EncryptMethod, member_flags_EncryptMethod, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_EncryptMethod, common_EncryptMethod_ec))}; + if (!common_EncryptMethod_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure EncryptMethod member TypeIdentifier inconsistent."); + return; + } + MemberName name_EncryptMethod = "EncryptMethod"; + eprosima::fastcdr::optional member_ann_builtin_EncryptMethod; + ann_custom_Logon.reset(); + CompleteMemberDetail detail_EncryptMethod = TypeObjectUtils::build_complete_member_detail(name_EncryptMethod, member_ann_builtin_EncryptMethod, ann_custom_Logon); + CompleteStructMember member_EncryptMethod = TypeObjectUtils::build_complete_struct_member(common_EncryptMethod, detail_EncryptMethod); + TypeObjectUtils::add_complete_struct_member(member_seq_Logon, member_EncryptMethod); + } + { + TypeIdentifierPair type_ids_HeartBtInt; + ReturnCode_t return_code_HeartBtInt {eprosima::fastdds::dds::RETCODE_OK}; + return_code_HeartBtInt = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_HeartBtInt); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_HeartBtInt) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "HeartBtInt Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_HeartBtInt = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_HeartBtInt = 0x00000006; + bool common_HeartBtInt_ec {false}; + CommonStructMember common_HeartBtInt {TypeObjectUtils::build_common_struct_member(member_id_HeartBtInt, member_flags_HeartBtInt, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_HeartBtInt, common_HeartBtInt_ec))}; + if (!common_HeartBtInt_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure HeartBtInt member TypeIdentifier inconsistent."); + return; + } + MemberName name_HeartBtInt = "HeartBtInt"; + eprosima::fastcdr::optional member_ann_builtin_HeartBtInt; + ann_custom_Logon.reset(); + CompleteMemberDetail detail_HeartBtInt = TypeObjectUtils::build_complete_member_detail(name_HeartBtInt, member_ann_builtin_HeartBtInt, ann_custom_Logon); + CompleteStructMember member_HeartBtInt = TypeObjectUtils::build_complete_struct_member(common_HeartBtInt, detail_HeartBtInt); + TypeObjectUtils::add_complete_struct_member(member_seq_Logon, member_HeartBtInt); + } + { + TypeIdentifierPair type_ids_RawData; + ReturnCode_t return_code_RawData {eprosima::fastdds::dds::RETCODE_OK}; + return_code_RawData = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_RawData); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_RawData) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_RawData)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_RawData = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_RawData = 0x00000007; + bool common_RawData_ec {false}; + CommonStructMember common_RawData {TypeObjectUtils::build_common_struct_member(member_id_RawData, member_flags_RawData, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_RawData, common_RawData_ec))}; + if (!common_RawData_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure RawData member TypeIdentifier inconsistent."); + return; + } + MemberName name_RawData = "RawData"; + eprosima::fastcdr::optional member_ann_builtin_RawData; + ann_custom_Logon.reset(); + CompleteMemberDetail detail_RawData = TypeObjectUtils::build_complete_member_detail(name_RawData, member_ann_builtin_RawData, ann_custom_Logon); + CompleteStructMember member_RawData = TypeObjectUtils::build_complete_struct_member(common_RawData, detail_RawData); + TypeObjectUtils::add_complete_struct_member(member_seq_Logon, member_RawData); + } + { + TypeIdentifierPair type_ids_Username; + ReturnCode_t return_code_Username {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Username = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Username); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Username) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Username)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Username = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Username = 0x00000008; + bool common_Username_ec {false}; + CommonStructMember common_Username {TypeObjectUtils::build_common_struct_member(member_id_Username, member_flags_Username, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Username, common_Username_ec))}; + if (!common_Username_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Username member TypeIdentifier inconsistent."); + return; + } + MemberName name_Username = "Username"; + eprosima::fastcdr::optional member_ann_builtin_Username; + ann_custom_Logon.reset(); + CompleteMemberDetail detail_Username = TypeObjectUtils::build_complete_member_detail(name_Username, member_ann_builtin_Username, ann_custom_Logon); + CompleteStructMember member_Username = TypeObjectUtils::build_complete_struct_member(common_Username, detail_Username); + TypeObjectUtils::add_complete_struct_member(member_seq_Logon, member_Username); + } + { + TypeIdentifierPair type_ids_Password; + ReturnCode_t return_code_Password {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Password = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Password); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Password) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Password)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Password = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Password = 0x00000009; + bool common_Password_ec {false}; + CommonStructMember common_Password {TypeObjectUtils::build_common_struct_member(member_id_Password, member_flags_Password, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Password, common_Password_ec))}; + if (!common_Password_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Password member TypeIdentifier inconsistent."); + return; + } + MemberName name_Password = "Password"; + eprosima::fastcdr::optional member_ann_builtin_Password; + ann_custom_Logon.reset(); + CompleteMemberDetail detail_Password = TypeObjectUtils::build_complete_member_detail(name_Password, member_ann_builtin_Password, ann_custom_Logon); + CompleteStructMember member_Password = TypeObjectUtils::build_complete_struct_member(common_Password, detail_Password); + TypeObjectUtils::add_complete_struct_member(member_seq_Logon, member_Password); + } + CompleteStructType struct_type_Logon = TypeObjectUtils::build_complete_struct_type(struct_flags_Logon, header_Logon, member_seq_Logon); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_Logon, type_name_Logon.to_string(), type_ids_Logon)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_Logon::Logon already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_Logon + diff --git a/GenTools/idl/LogonTypeObjectSupport.hpp b/GenTools/idl/LogonTypeObjectSupport.hpp new file mode 100644 index 0000000..c4f3828 --- /dev/null +++ b/GenTools/idl/LogonTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 LogonTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGON_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGON_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_Logon { +/** + * @brief Register Logon related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_Logon_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_Logon + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGON_LOGON_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/Logout.hpp b/GenTools/idl/Logout.hpp new file mode 100644 index 0000000..6c06502 --- /dev/null +++ b/GenTools/idl/Logout.hpp @@ -0,0 +1,430 @@ +// 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 Logout.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUT_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(LOGOUT_SOURCE) +#define LOGOUT_DllAPI __declspec( dllexport ) +#else +#define LOGOUT_DllAPI __declspec( dllimport ) +#endif // LOGOUT_SOURCE +#else +#define LOGOUT_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define LOGOUT_DllAPI +#endif // _WIN32 + +namespace DistributedATS_Logout { + +/*! + * @brief This class represents the structure Logout defined by the user in the IDL file. + * @ingroup Logout + */ +class Logout +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport Logout() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~Logout() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object Logout that will be copied. + */ + eProsima_user_DllExport Logout( + const Logout& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object Logout that will be copied. + */ + eProsima_user_DllExport Logout( + Logout&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object Logout that will be copied. + */ + eProsima_user_DllExport Logout& operator =( + const Logout& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object Logout that will be copied. + */ + eProsima_user_DllExport Logout& operator =( + Logout&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x Logout object to compare. + */ + eProsima_user_DllExport bool operator ==( + const Logout& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x Logout object to compare. + */ + eProsima_user_DllExport bool operator !=( + const Logout& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_Text; + +}; + +} // namespace DistributedATS_Logout + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_LOGOUT_LOGOUT_HPP_ + + diff --git a/GenTools/idl/Logout.idl b/GenTools/idl/Logout.idl index 0222f2f..2fdd2eb 100644 --- a/GenTools/idl/Logout.idl +++ b/GenTools/idl/Logout.idl @@ -1,13 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_Logout { - @topic + struct Logout { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string Text; }; }; diff --git a/GenTools/idl/LogoutAdapter.cpp b/GenTools/idl/LogoutAdapter.cpp index e0c20d5..bc58760 100644 --- a/GenTools/idl/LogoutAdapter.cpp +++ b/GenTools/idl/LogoutAdapter.cpp @@ -1,14 +1,14 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "LogoutAdapter.hpp" -#include "ConvertUtils.h" +#include void LogoutAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_Logout::Logout& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::Text) ) - ddsMsg.Text = CORBA::string_dup(((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.Text ( ((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); }; @@ -17,9 +17,9 @@ void LogoutAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_Logout::L void LogoutAdapter::DDS2FIX(const DistributedATS_Logout::Logout& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Text.in(), FIX::FIELD::Text, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Text(), FIX::FIELD::Text, fixMsg); }; diff --git a/GenTools/idl/LogoutAdapter.hpp b/GenTools/idl/LogoutAdapter.hpp index ff5f5c4..a873e27 100644 --- a/GenTools/idl/LogoutAdapter.hpp +++ b/GenTools/idl/LogoutAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __Logout_h__ -#define __Logout_h__ - -#include "LogoutTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "Logout.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class LogoutAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_Logout::Logout& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_Logout::Logout& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/LogoutCdrAux.hpp b/GenTools/idl/LogoutCdrAux.hpp new file mode 100644 index 0000000..9bbb932 --- /dev/null +++ b/GenTools/idl/LogoutCdrAux.hpp @@ -0,0 +1,47 @@ +// 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 LogoutCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUTCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUTCDRAUX_HPP + +#include "Logout.hpp" + +constexpr uint32_t DistributedATS_Logout_Logout_max_cdr_typesize {2884UL}; +constexpr uint32_t DistributedATS_Logout_Logout_max_key_cdr_typesize {0UL}; + + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_Logout::Logout& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUTCDRAUX_HPP + diff --git a/GenTools/idl/LogoutCdrAux.ipp b/GenTools/idl/LogoutCdrAux.ipp new file mode 100644 index 0000000..0da4607 --- /dev/null +++ b/GenTools/idl/LogoutCdrAux.ipp @@ -0,0 +1,187 @@ +// 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 LogoutCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUTCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUTCDRAUX_IPP + +#include "LogoutCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_Logout::Logout& data, + size_t& current_alignment) +{ + using namespace DistributedATS_Logout; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_Logout::Logout& data) +{ + using namespace DistributedATS_Logout; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_Logout::Logout& data) +{ + using namespace DistributedATS_Logout; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_Logout::Logout& data) +{ + using namespace DistributedATS_Logout; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.Text(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUTCDRAUX_IPP + diff --git a/GenTools/idl/LogoutLogger.hpp b/GenTools/idl/LogoutLogger.hpp index d981a24..fc7c1ec 100644 --- a/GenTools/idl/LogoutLogger.hpp +++ b/GenTools/idl/LogoutLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __LogoutLogger_h__ -#define __LogoutLogger_h__ - -#include "LogoutTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,15 +10,18 @@ class LogoutLogger static void log(std::ostream & out, DistributedATS_Logout::Logout& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : Logout { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.Text : " << ddsMsg.Text << std::endl + << "ddsMsg.Text : " << ddsMsg.Text() << std::endl ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/LogoutPubSubTypes.cxx b/GenTools/idl/LogoutPubSubTypes.cxx new file mode 100644 index 0000000..9b3ef75 --- /dev/null +++ b/GenTools/idl/LogoutPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 LogoutPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "LogoutPubSubTypes.hpp" + +#include +#include + +#include "LogoutCdrAux.hpp" +#include "LogoutTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_Logout { + LogoutPubSubType::LogoutPubSubType() + { + set_name("DistributedATS_Logout::Logout"); + uint32_t type_size = DistributedATS_Logout_Logout_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_Logout_Logout_max_key_cdr_typesize > 16 ? DistributedATS_Logout_Logout_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + LogoutPubSubType::~LogoutPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool LogoutPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const Logout* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool LogoutPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + Logout* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t LogoutPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* LogoutPubSubType::create_data() + { + return reinterpret_cast(new Logout()); + } + + void LogoutPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool LogoutPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + Logout data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool LogoutPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const Logout* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_Logout_Logout_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_Logout_Logout_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void LogoutPubSubType::register_type_object_representation() + { + register_Logout_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_Logout + + +// Include auxiliary functions like for serializing/deserializing. +#include "LogoutCdrAux.ipp" diff --git a/GenTools/idl/LogoutPubSubTypes.hpp b/GenTools/idl/LogoutPubSubTypes.hpp new file mode 100644 index 0000000..dda69fb --- /dev/null +++ b/GenTools/idl/LogoutPubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 LogoutPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUT_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUT_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "Logout.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated Logout is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_Logout +{ + + /*! + * @brief This class represents the TopicDataType of the type Logout defined by the user in the IDL file. + * @ingroup Logout + */ + class LogoutPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef Logout type; + + eProsima_user_DllExport LogoutPubSubType(); + + eProsima_user_DllExport ~LogoutPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_Logout + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUT_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/LogoutTypeObjectSupport.cxx b/GenTools/idl/LogoutTypeObjectSupport.cxx new file mode 100644 index 0000000..2051a1c --- /dev/null +++ b/GenTools/idl/LogoutTypeObjectSupport.cxx @@ -0,0 +1,292 @@ +// 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 LogoutTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "LogoutTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Logout.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_Logout { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_Logout_type_identifier( + TypeIdentifierPair& type_ids_Logout) +{ + + ReturnCode_t return_code_Logout {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Logout = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_Logout::Logout", type_ids_Logout); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Logout) + { + StructTypeFlag struct_flags_Logout = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_Logout = "DistributedATS_Logout::Logout"; + eprosima::fastcdr::optional type_ann_builtin_Logout; + eprosima::fastcdr::optional ann_custom_Logout; + CompleteTypeDetail detail_Logout = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_Logout, ann_custom_Logout, type_name_Logout.to_string()); + CompleteStructHeader header_Logout; + header_Logout = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_Logout); + CompleteStructMemberSeq member_seq_Logout; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_Logout.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_Logout); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_Logout, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_Logout.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_Logout); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_Logout, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_Logout.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_Logout); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_Logout, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_Logout.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_Logout); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_Logout, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_Logout.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_Logout); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_Logout, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x00000005; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_Logout.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_Logout); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_Logout, member_Text); + } + CompleteStructType struct_type_Logout = TypeObjectUtils::build_complete_struct_type(struct_flags_Logout, header_Logout, member_seq_Logout); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_Logout, type_name_Logout.to_string(), type_ids_Logout)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_Logout::Logout already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_Logout + diff --git a/GenTools/idl/LogoutTypeObjectSupport.hpp b/GenTools/idl/LogoutTypeObjectSupport.hpp new file mode 100644 index 0000000..8932509 --- /dev/null +++ b/GenTools/idl/LogoutTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 LogoutTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUT_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUT_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_Logout { +/** + * @brief Register Logout related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_Logout_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_Logout + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_LOGOUT_LOGOUT_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/MarketDataIncrementalRefresh.hpp b/GenTools/idl/MarketDataIncrementalRefresh.hpp new file mode 100644 index 0000000..28f7aa4 --- /dev/null +++ b/GenTools/idl/MarketDataIncrementalRefresh.hpp @@ -0,0 +1,940 @@ +// 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 MarketDataIncrementalRefresh.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESH_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESH_HPP + +#include +#include +#include +#include + +#include +#include "Header.hpp" + +#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(MARKETDATAINCREMENTALREFRESH_SOURCE) +#define MARKETDATAINCREMENTALREFRESH_DllAPI __declspec( dllexport ) +#else +#define MARKETDATAINCREMENTALREFRESH_DllAPI __declspec( dllimport ) +#endif // MARKETDATAINCREMENTALREFRESH_SOURCE +#else +#define MARKETDATAINCREMENTALREFRESH_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define MARKETDATAINCREMENTALREFRESH_DllAPI +#endif // _WIN32 + +namespace DistributedATS_MarketDataIncrementalRefresh { + +/*! + * @brief This class represents the structure NoMDEntries defined by the user in the IDL file. + * @ingroup MarketDataIncrementalRefresh + */ +class NoMDEntries +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport NoMDEntries() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~NoMDEntries() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object NoMDEntries that will be copied. + */ + eProsima_user_DllExport NoMDEntries( + const NoMDEntries& x) + { + m_MDUpdateAction = x.m_MDUpdateAction; + + m_MDEntryType = x.m_MDEntryType; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_MDEntryPx = x.m_MDEntryPx; + + m_MDEntrySize = x.m_MDEntrySize; + + m_TimeInForce = x.m_TimeInForce; + + m_ExecInst = x.m_ExecInst; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object NoMDEntries that will be copied. + */ + eProsima_user_DllExport NoMDEntries( + NoMDEntries&& x) noexcept + { + m_MDUpdateAction = x.m_MDUpdateAction; + m_MDEntryType = x.m_MDEntryType; + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_MDEntryPx = x.m_MDEntryPx; + m_MDEntrySize = x.m_MDEntrySize; + m_TimeInForce = x.m_TimeInForce; + m_ExecInst = std::move(x.m_ExecInst); + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object NoMDEntries that will be copied. + */ + eProsima_user_DllExport NoMDEntries& operator =( + const NoMDEntries& x) + { + + m_MDUpdateAction = x.m_MDUpdateAction; + + m_MDEntryType = x.m_MDEntryType; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_MDEntryPx = x.m_MDEntryPx; + + m_MDEntrySize = x.m_MDEntrySize; + + m_TimeInForce = x.m_TimeInForce; + + m_ExecInst = x.m_ExecInst; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object NoMDEntries that will be copied. + */ + eProsima_user_DllExport NoMDEntries& operator =( + NoMDEntries&& x) noexcept + { + + m_MDUpdateAction = x.m_MDUpdateAction; + m_MDEntryType = x.m_MDEntryType; + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_MDEntryPx = x.m_MDEntryPx; + m_MDEntrySize = x.m_MDEntrySize; + m_TimeInForce = x.m_TimeInForce; + m_ExecInst = std::move(x.m_ExecInst); + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x NoMDEntries object to compare. + */ + eProsima_user_DllExport bool operator ==( + const NoMDEntries& x) const + { + return (m_MDUpdateAction == x.m_MDUpdateAction && + m_MDEntryType == x.m_MDEntryType && + m_Symbol == x.m_Symbol && + m_SecurityExchange == x.m_SecurityExchange && + m_MDEntryPx == x.m_MDEntryPx && + m_MDEntrySize == x.m_MDEntrySize && + m_TimeInForce == x.m_TimeInForce && + m_ExecInst == x.m_ExecInst && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x NoMDEntries object to compare. + */ + eProsima_user_DllExport bool operator !=( + const NoMDEntries& x) const + { + return !(*this == x); + } + + /*! + * @brief This function sets a value in member MDUpdateAction + * @param _MDUpdateAction New value for member MDUpdateAction + */ + eProsima_user_DllExport void MDUpdateAction( + char _MDUpdateAction) + { + m_MDUpdateAction = _MDUpdateAction; + } + + /*! + * @brief This function returns the value of member MDUpdateAction + * @return Value of member MDUpdateAction + */ + eProsima_user_DllExport char MDUpdateAction() const + { + return m_MDUpdateAction; + } + + /*! + * @brief This function returns a reference to member MDUpdateAction + * @return Reference to member MDUpdateAction + */ + eProsima_user_DllExport char& MDUpdateAction() + { + return m_MDUpdateAction; + } + + + /*! + * @brief This function sets a value in member MDEntryType + * @param _MDEntryType New value for member MDEntryType + */ + eProsima_user_DllExport void MDEntryType( + char _MDEntryType) + { + m_MDEntryType = _MDEntryType; + } + + /*! + * @brief This function returns the value of member MDEntryType + * @return Value of member MDEntryType + */ + eProsima_user_DllExport char MDEntryType() const + { + return m_MDEntryType; + } + + /*! + * @brief This function returns a reference to member MDEntryType + * @return Reference to member MDEntryType + */ + eProsima_user_DllExport char& MDEntryType() + { + return m_MDEntryType; + } + + + /*! + * @brief This function copies the value in member Symbol + * @param _Symbol New value to be copied in member Symbol + */ + eProsima_user_DllExport void Symbol( + const std::string& _Symbol) + { + m_Symbol = _Symbol; + } + + /*! + * @brief This function moves the value in member Symbol + * @param _Symbol New value to be moved in member Symbol + */ + eProsima_user_DllExport void Symbol( + std::string&& _Symbol) + { + m_Symbol = std::move(_Symbol); + } + + /*! + * @brief This function returns a constant reference to member Symbol + * @return Constant reference to member Symbol + */ + eProsima_user_DllExport const std::string& Symbol() const + { + return m_Symbol; + } + + /*! + * @brief This function returns a reference to member Symbol + * @return Reference to member Symbol + */ + eProsima_user_DllExport std::string& Symbol() + { + return m_Symbol; + } + + + /*! + * @brief This function copies the value in member SecurityExchange + * @param _SecurityExchange New value to be copied in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + const std::string& _SecurityExchange) + { + m_SecurityExchange = _SecurityExchange; + } + + /*! + * @brief This function moves the value in member SecurityExchange + * @param _SecurityExchange New value to be moved in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + std::string&& _SecurityExchange) + { + m_SecurityExchange = std::move(_SecurityExchange); + } + + /*! + * @brief This function returns a constant reference to member SecurityExchange + * @return Constant reference to member SecurityExchange + */ + eProsima_user_DllExport const std::string& SecurityExchange() const + { + return m_SecurityExchange; + } + + /*! + * @brief This function returns a reference to member SecurityExchange + * @return Reference to member SecurityExchange + */ + eProsima_user_DllExport std::string& SecurityExchange() + { + return m_SecurityExchange; + } + + + /*! + * @brief This function sets a value in member MDEntryPx + * @param _MDEntryPx New value for member MDEntryPx + */ + eProsima_user_DllExport void MDEntryPx( + float _MDEntryPx) + { + m_MDEntryPx = _MDEntryPx; + } + + /*! + * @brief This function returns the value of member MDEntryPx + * @return Value of member MDEntryPx + */ + eProsima_user_DllExport float MDEntryPx() const + { + return m_MDEntryPx; + } + + /*! + * @brief This function returns a reference to member MDEntryPx + * @return Reference to member MDEntryPx + */ + eProsima_user_DllExport float& MDEntryPx() + { + return m_MDEntryPx; + } + + + /*! + * @brief This function sets a value in member MDEntrySize + * @param _MDEntrySize New value for member MDEntrySize + */ + eProsima_user_DllExport void MDEntrySize( + int32_t _MDEntrySize) + { + m_MDEntrySize = _MDEntrySize; + } + + /*! + * @brief This function returns the value of member MDEntrySize + * @return Value of member MDEntrySize + */ + eProsima_user_DllExport int32_t MDEntrySize() const + { + return m_MDEntrySize; + } + + /*! + * @brief This function returns a reference to member MDEntrySize + * @return Reference to member MDEntrySize + */ + eProsima_user_DllExport int32_t& MDEntrySize() + { + return m_MDEntrySize; + } + + + /*! + * @brief This function sets a value in member TimeInForce + * @param _TimeInForce New value for member TimeInForce + */ + eProsima_user_DllExport void TimeInForce( + char _TimeInForce) + { + m_TimeInForce = _TimeInForce; + } + + /*! + * @brief This function returns the value of member TimeInForce + * @return Value of member TimeInForce + */ + eProsima_user_DllExport char TimeInForce() const + { + return m_TimeInForce; + } + + /*! + * @brief This function returns a reference to member TimeInForce + * @return Reference to member TimeInForce + */ + eProsima_user_DllExport char& TimeInForce() + { + return m_TimeInForce; + } + + + /*! + * @brief This function copies the value in member ExecInst + * @param _ExecInst New value to be copied in member ExecInst + */ + eProsima_user_DllExport void ExecInst( + const std::string& _ExecInst) + { + m_ExecInst = _ExecInst; + } + + /*! + * @brief This function moves the value in member ExecInst + * @param _ExecInst New value to be moved in member ExecInst + */ + eProsima_user_DllExport void ExecInst( + std::string&& _ExecInst) + { + m_ExecInst = std::move(_ExecInst); + } + + /*! + * @brief This function returns a constant reference to member ExecInst + * @return Constant reference to member ExecInst + */ + eProsima_user_DllExport const std::string& ExecInst() const + { + return m_ExecInst; + } + + /*! + * @brief This function returns a reference to member ExecInst + * @return Reference to member ExecInst + */ + eProsima_user_DllExport std::string& ExecInst() + { + return m_ExecInst; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + char m_MDUpdateAction{0}; + char m_MDEntryType{0}; + std::string m_Symbol; + std::string m_SecurityExchange; + float m_MDEntryPx{0.0}; + int32_t m_MDEntrySize{0}; + char m_TimeInForce{0}; + std::string m_ExecInst; + std::string m_Text; + +}; +typedef std::vector NoMDEntriesSeq; + +/*! + * @brief This class represents the structure MarketDataIncrementalRefresh defined by the user in the IDL file. + * @ingroup MarketDataIncrementalRefresh + */ +class MarketDataIncrementalRefresh +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport MarketDataIncrementalRefresh() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~MarketDataIncrementalRefresh() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object MarketDataIncrementalRefresh that will be copied. + */ + eProsima_user_DllExport MarketDataIncrementalRefresh( + const MarketDataIncrementalRefresh& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_MDReqID = x.m_MDReqID; + + m_c_NoMDEntries = x.m_c_NoMDEntries; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object MarketDataIncrementalRefresh that will be copied. + */ + eProsima_user_DllExport MarketDataIncrementalRefresh( + MarketDataIncrementalRefresh&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_MDReqID = std::move(x.m_MDReqID); + m_c_NoMDEntries = std::move(x.m_c_NoMDEntries); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object MarketDataIncrementalRefresh that will be copied. + */ + eProsima_user_DllExport MarketDataIncrementalRefresh& operator =( + const MarketDataIncrementalRefresh& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_MDReqID = x.m_MDReqID; + + m_c_NoMDEntries = x.m_c_NoMDEntries; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object MarketDataIncrementalRefresh that will be copied. + */ + eProsima_user_DllExport MarketDataIncrementalRefresh& operator =( + MarketDataIncrementalRefresh&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_MDReqID = std::move(x.m_MDReqID); + m_c_NoMDEntries = std::move(x.m_c_NoMDEntries); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x MarketDataIncrementalRefresh object to compare. + */ + eProsima_user_DllExport bool operator ==( + const MarketDataIncrementalRefresh& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_MDReqID == x.m_MDReqID && + m_c_NoMDEntries == x.m_c_NoMDEntries); + } + + /*! + * @brief Comparison operator. + * @param x MarketDataIncrementalRefresh object to compare. + */ + eProsima_user_DllExport bool operator !=( + const MarketDataIncrementalRefresh& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member MDReqID + * @param _MDReqID New value to be copied in member MDReqID + */ + eProsima_user_DllExport void MDReqID( + const std::string& _MDReqID) + { + m_MDReqID = _MDReqID; + } + + /*! + * @brief This function moves the value in member MDReqID + * @param _MDReqID New value to be moved in member MDReqID + */ + eProsima_user_DllExport void MDReqID( + std::string&& _MDReqID) + { + m_MDReqID = std::move(_MDReqID); + } + + /*! + * @brief This function returns a constant reference to member MDReqID + * @return Constant reference to member MDReqID + */ + eProsima_user_DllExport const std::string& MDReqID() const + { + return m_MDReqID; + } + + /*! + * @brief This function returns a reference to member MDReqID + * @return Reference to member MDReqID + */ + eProsima_user_DllExport std::string& MDReqID() + { + return m_MDReqID; + } + + + /*! + * @brief This function copies the value in member c_NoMDEntries + * @param _c_NoMDEntries New value to be copied in member c_NoMDEntries + */ + eProsima_user_DllExport void c_NoMDEntries( + const NoMDEntriesSeq& _c_NoMDEntries) + { + m_c_NoMDEntries = _c_NoMDEntries; + } + + /*! + * @brief This function moves the value in member c_NoMDEntries + * @param _c_NoMDEntries New value to be moved in member c_NoMDEntries + */ + eProsima_user_DllExport void c_NoMDEntries( + NoMDEntriesSeq&& _c_NoMDEntries) + { + m_c_NoMDEntries = std::move(_c_NoMDEntries); + } + + /*! + * @brief This function returns a constant reference to member c_NoMDEntries + * @return Constant reference to member c_NoMDEntries + */ + eProsima_user_DllExport const NoMDEntriesSeq& c_NoMDEntries() const + { + return m_c_NoMDEntries; + } + + /*! + * @brief This function returns a reference to member c_NoMDEntries + * @return Reference to member c_NoMDEntries + */ + eProsima_user_DllExport NoMDEntriesSeq& c_NoMDEntries() + { + return m_c_NoMDEntries; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_MDReqID; + NoMDEntriesSeq m_c_NoMDEntries; + +}; + +} // namespace DistributedATS_MarketDataIncrementalRefresh + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESH_HPP_ + + diff --git a/GenTools/idl/MarketDataIncrementalRefresh.idl b/GenTools/idl/MarketDataIncrementalRefresh.idl index 0c2cbc2..e063db6 100644 --- a/GenTools/idl/MarketDataIncrementalRefresh.idl +++ b/GenTools/idl/MarketDataIncrementalRefresh.idl @@ -1,4 +1,4 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_MarketDataIncrementalRefresh @@ -18,10 +18,17 @@ module DistributedATS_MarketDataIncrementalRefresh }; typedef sequence NoMDEntriesSeq; - @topic + struct MarketDataIncrementalRefresh { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string MDReqID; NoMDEntriesSeq c_NoMDEntries; }; diff --git a/GenTools/idl/MarketDataIncrementalRefreshAdapter.cpp b/GenTools/idl/MarketDataIncrementalRefreshAdapter.cpp index 1b35b57..effa0bf 100644 --- a/GenTools/idl/MarketDataIncrementalRefreshAdapter.cpp +++ b/GenTools/idl/MarketDataIncrementalRefreshAdapter.cpp @@ -1,20 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "MarketDataIncrementalRefreshAdapter.hpp" -#include "ConvertUtils.h" +#include void MarketDataIncrementalRefreshAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::MDReqID) ) - ddsMsg.MDReqID = CORBA::string_dup(((FIX::MDReqID)fixMsg.getField(FIX::FIELD::MDReqID)).getString().c_str()); + ddsMsg.MDReqID ( ((FIX::MDReqID)fixMsg.getField(FIX::FIELD::MDReqID)).getString().c_str()); // There is a group FIX::NoMDEntries NoMDEntries_group_cnt = FIELD_GET_REF( fixMsg,NoMDEntries); - ddsMsg.c_NoMDEntries.length(NoMDEntries_group_cnt.getValue()); + ddsMsg.c_NoMDEntries().resize(NoMDEntries_group_cnt.getValue()); int NoMDEntries_group_cnt_index = 0; while ( NoMDEntries_group_cnt_index < NoMDEntries_group_cnt.getValue()) @@ -23,35 +23,35 @@ void MarketDataIncrementalRefreshAdapter::FIX2DDS(const FIX::Message& fixMsg, Di ; fixMsg.getGroup(NoMDEntries_group_cnt_index+1, grp); if (grp.isSetField(FIX::FIELD::MDUpdateAction) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].MDUpdateAction = FIELD_GET_REF( grp,MDUpdateAction); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].MDUpdateAction ( FIELD_GET_REF( grp,MDUpdateAction)); if (grp.isSetField(FIX::FIELD::MDEntryType) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].MDEntryType = FIELD_GET_REF( grp,MDEntryType); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].MDEntryType ( FIELD_GET_REF( grp,MDEntryType)); if (grp.isSetField(FIX::FIELD::Symbol) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].Symbol = CORBA::string_dup(((FIX::Symbol)grp.getField(FIX::FIELD::Symbol)).getString().c_str()); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].Symbol ( ((FIX::Symbol)grp.getField(FIX::FIELD::Symbol)).getString().c_str()); if (grp.isSetField(FIX::FIELD::SecurityExchange) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].SecurityExchange = CORBA::string_dup(((FIX::SecurityExchange)grp.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].SecurityExchange ( ((FIX::SecurityExchange)grp.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); if (grp.isSetField(FIX::FIELD::MDEntryPx) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].MDEntryPx = FIELD_GET_REF( grp,MDEntryPx); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].MDEntryPx ( FIELD_GET_REF( grp,MDEntryPx)); else - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].MDEntryPx = 0; + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].MDEntryPx ( 0 ); if (grp.isSetField(FIX::FIELD::MDEntrySize) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].MDEntrySize = FIELD_GET_REF( grp,MDEntrySize); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].MDEntrySize ( FIELD_GET_REF( grp,MDEntrySize)); else - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].MDEntrySize = 0; + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].MDEntrySize ( 0 ); if (grp.isSetField(FIX::FIELD::TimeInForce) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].TimeInForce = FIELD_GET_REF( grp,TimeInForce); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].TimeInForce ( FIELD_GET_REF( grp,TimeInForce)); if (grp.isSetField(FIX::FIELD::ExecInst) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].ExecInst = CORBA::string_dup(((FIX::ExecInst)grp.getField(FIX::FIELD::ExecInst)).getString().c_str()); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].ExecInst ( ((FIX::ExecInst)grp.getField(FIX::FIELD::ExecInst)).getString().c_str()); if (grp.isSetField(FIX::FIELD::Text) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].Text = CORBA::string_dup(((FIX::Text)grp.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].Text ( ((FIX::Text)grp.getField(FIX::FIELD::Text)).getString().c_str()); NoMDEntries_group_cnt_index++; }; @@ -62,36 +62,36 @@ void MarketDataIncrementalRefreshAdapter::FIX2DDS(const FIX::Message& fixMsg, Di void MarketDataIncrementalRefreshAdapter::DDS2FIX(const DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.MDReqID.in(), FIX::FIELD::MDReqID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.MDReqID(), FIX::FIELD::MDReqID, fixMsg); - for ( long NoMDEntries_group_cnt_index = 0; NoMDEntries_group_cnt_index - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class MarketDataIncrementalRefreshAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/MarketDataIncrementalRefreshCdrAux.hpp b/GenTools/idl/MarketDataIncrementalRefreshCdrAux.hpp new file mode 100644 index 0000000..076d9cd --- /dev/null +++ b/GenTools/idl/MarketDataIncrementalRefreshCdrAux.hpp @@ -0,0 +1,55 @@ +// 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 MarketDataIncrementalRefreshCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESHCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESHCDRAUX_HPP + +#include "MarketDataIncrementalRefresh.hpp" + +constexpr uint32_t DistributedATS_MarketDataIncrementalRefresh_MarketDataIncrementalRefresh_max_cdr_typesize {2892UL}; +constexpr uint32_t DistributedATS_MarketDataIncrementalRefresh_MarketDataIncrementalRefresh_max_key_cdr_typesize {0UL}; + + +constexpr uint32_t DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_max_cdr_typesize {1060UL}; +constexpr uint32_t DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_max_key_cdr_typesize {0UL}; + + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataIncrementalRefresh::NoMDEntries& data); + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESHCDRAUX_HPP + diff --git a/GenTools/idl/MarketDataIncrementalRefreshCdrAux.ipp b/GenTools/idl/MarketDataIncrementalRefreshCdrAux.ipp new file mode 100644 index 0000000..bac16fd --- /dev/null +++ b/GenTools/idl/MarketDataIncrementalRefreshCdrAux.ipp @@ -0,0 +1,364 @@ +// 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 MarketDataIncrementalRefreshCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESHCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESHCDRAUX_IPP + +#include "MarketDataIncrementalRefreshCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_MarketDataIncrementalRefresh::NoMDEntries& data, + size_t& current_alignment) +{ + using namespace DistributedATS_MarketDataIncrementalRefresh; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.MDUpdateAction(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.MDEntryType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.Symbol(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.SecurityExchange(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.MDEntryPx(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.MDEntrySize(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.TimeInForce(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.ExecInst(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataIncrementalRefresh::NoMDEntries& data) +{ + using namespace DistributedATS_MarketDataIncrementalRefresh; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.MDUpdateAction() + << eprosima::fastcdr::MemberId(1) << data.MDEntryType() + << eprosima::fastcdr::MemberId(2) << data.Symbol() + << eprosima::fastcdr::MemberId(3) << data.SecurityExchange() + << eprosima::fastcdr::MemberId(4) << data.MDEntryPx() + << eprosima::fastcdr::MemberId(5) << data.MDEntrySize() + << eprosima::fastcdr::MemberId(6) << data.TimeInForce() + << eprosima::fastcdr::MemberId(7) << data.ExecInst() + << eprosima::fastcdr::MemberId(8) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_MarketDataIncrementalRefresh::NoMDEntries& data) +{ + using namespace DistributedATS_MarketDataIncrementalRefresh; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.MDUpdateAction(); + break; + + case 1: + dcdr >> data.MDEntryType(); + break; + + case 2: + dcdr >> data.Symbol(); + break; + + case 3: + dcdr >> data.SecurityExchange(); + break; + + case 4: + dcdr >> data.MDEntryPx(); + break; + + case 5: + dcdr >> data.MDEntrySize(); + break; + + case 6: + dcdr >> data.TimeInForce(); + break; + + case 7: + dcdr >> data.ExecInst(); + break; + + case 8: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataIncrementalRefresh::NoMDEntries& data) +{ + using namespace DistributedATS_MarketDataIncrementalRefresh; + + static_cast(scdr); + static_cast(data); + scdr << data.MDUpdateAction(); + + scdr << data.MDEntryType(); + + scdr << data.Symbol(); + + scdr << data.SecurityExchange(); + + scdr << data.MDEntryPx(); + + scdr << data.MDEntrySize(); + + scdr << data.TimeInForce(); + + scdr << data.ExecInst(); + + scdr << data.Text(); + +} + + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& data, + size_t& current_alignment) +{ + using namespace DistributedATS_MarketDataIncrementalRefresh; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.MDReqID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.c_NoMDEntries(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& data) +{ + using namespace DistributedATS_MarketDataIncrementalRefresh; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.MDReqID() + << eprosima::fastcdr::MemberId(6) << data.c_NoMDEntries() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& data) +{ + using namespace DistributedATS_MarketDataIncrementalRefresh; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.MDReqID(); + break; + + case 6: + dcdr >> data.c_NoMDEntries(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& data) +{ + using namespace DistributedATS_MarketDataIncrementalRefresh; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.MDReqID(); + + scdr << data.c_NoMDEntries(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESHCDRAUX_IPP + diff --git a/GenTools/idl/MarketDataIncrementalRefreshLogger.hpp b/GenTools/idl/MarketDataIncrementalRefreshLogger.hpp index e73df8b..de7c59a 100644 --- a/GenTools/idl/MarketDataIncrementalRefreshLogger.hpp +++ b/GenTools/idl/MarketDataIncrementalRefreshLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __MarketDataIncrementalRefreshLogger_h__ -#define __MarketDataIncrementalRefreshLogger_h__ - -#include "MarketDataIncrementalRefreshTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,27 +10,33 @@ class MarketDataIncrementalRefreshLogger static void log(std::ostream & out, DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : MarketDataIncrementalRefresh { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.MDReqID : " << ddsMsg.MDReqID << std::endl + << "ddsMsg.MDReqID : " << ddsMsg.MDReqID() << std::endl ;out << "ddsMsg.c_NoMDEntries" << std::endl; out << "{" << std::endl; - for ( int tt = 0; tt < ddsMsg.c_NoMDEntries.length(); tt++) + for ( int tt = 0; tt < ddsMsg.c_NoMDEntries().size(); tt++) { - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].MDUpdateAction : " << ddsMsg.c_NoMDEntries[tt].MDUpdateAction << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].MDEntryType : " << ddsMsg.c_NoMDEntries[tt].MDEntryType << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].Symbol : " << ddsMsg.c_NoMDEntries[tt].Symbol << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].SecurityExchange : " << ddsMsg.c_NoMDEntries[tt].SecurityExchange << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].MDEntryPx : " << ddsMsg.c_NoMDEntries[tt].MDEntryPx << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].MDEntrySize : " << ddsMsg.c_NoMDEntries[tt].MDEntrySize << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].TimeInForce : " << ddsMsg.c_NoMDEntries[tt].TimeInForce << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].ExecInst : " << ddsMsg.c_NoMDEntries[tt].ExecInst << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].Text : " << ddsMsg.c_NoMDEntries[tt].Text << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].MDUpdateAction : " << ddsMsg.c_NoMDEntries()[tt].MDUpdateAction() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].MDEntryType : " << ddsMsg.c_NoMDEntries()[tt].MDEntryType() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].Symbol : " << ddsMsg.c_NoMDEntries()[tt].Symbol() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].SecurityExchange : " << ddsMsg.c_NoMDEntries()[tt].SecurityExchange() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].MDEntryPx : " << ddsMsg.c_NoMDEntries()[tt].MDEntryPx() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].MDEntrySize : " << ddsMsg.c_NoMDEntries()[tt].MDEntrySize() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].TimeInForce : " << ddsMsg.c_NoMDEntries()[tt].TimeInForce() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].ExecInst : " << ddsMsg.c_NoMDEntries()[tt].ExecInst() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].Text : " << ddsMsg.c_NoMDEntries()[tt].Text() << std::endl; }; ;out << "}" << std::endl; @@ -41,6 +44,3 @@ class MarketDataIncrementalRefreshLogger out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/MarketDataIncrementalRefreshPubSubTypes.cxx b/GenTools/idl/MarketDataIncrementalRefreshPubSubTypes.cxx new file mode 100644 index 0000000..81a5c4d --- /dev/null +++ b/GenTools/idl/MarketDataIncrementalRefreshPubSubTypes.cxx @@ -0,0 +1,403 @@ +// 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 MarketDataIncrementalRefreshPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "MarketDataIncrementalRefreshPubSubTypes.hpp" + +#include +#include + +#include "MarketDataIncrementalRefreshCdrAux.hpp" +#include "MarketDataIncrementalRefreshTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_MarketDataIncrementalRefresh { + NoMDEntriesPubSubType::NoMDEntriesPubSubType() + { + set_name("DistributedATS_MarketDataIncrementalRefresh::NoMDEntries"); + uint32_t type_size = DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_max_key_cdr_typesize > 16 ? DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + NoMDEntriesPubSubType::~NoMDEntriesPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool NoMDEntriesPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const NoMDEntries* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool NoMDEntriesPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + NoMDEntries* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t NoMDEntriesPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* NoMDEntriesPubSubType::create_data() + { + return reinterpret_cast(new NoMDEntries()); + } + + void NoMDEntriesPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool NoMDEntriesPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + NoMDEntries data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool NoMDEntriesPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const NoMDEntries* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void NoMDEntriesPubSubType::register_type_object_representation() + { + register_NoMDEntries_type_identifier(type_identifiers_); + } + + MarketDataIncrementalRefreshPubSubType::MarketDataIncrementalRefreshPubSubType() + { + set_name("DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh"); + uint32_t type_size = DistributedATS_MarketDataIncrementalRefresh_MarketDataIncrementalRefresh_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_MarketDataIncrementalRefresh_MarketDataIncrementalRefresh_max_key_cdr_typesize > 16 ? DistributedATS_MarketDataIncrementalRefresh_MarketDataIncrementalRefresh_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + MarketDataIncrementalRefreshPubSubType::~MarketDataIncrementalRefreshPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool MarketDataIncrementalRefreshPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const MarketDataIncrementalRefresh* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool MarketDataIncrementalRefreshPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + MarketDataIncrementalRefresh* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t MarketDataIncrementalRefreshPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* MarketDataIncrementalRefreshPubSubType::create_data() + { + return reinterpret_cast(new MarketDataIncrementalRefresh()); + } + + void MarketDataIncrementalRefreshPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool MarketDataIncrementalRefreshPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + MarketDataIncrementalRefresh data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool MarketDataIncrementalRefreshPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const MarketDataIncrementalRefresh* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_MarketDataIncrementalRefresh_MarketDataIncrementalRefresh_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_MarketDataIncrementalRefresh_MarketDataIncrementalRefresh_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void MarketDataIncrementalRefreshPubSubType::register_type_object_representation() + { + register_MarketDataIncrementalRefresh_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_MarketDataIncrementalRefresh + + +// Include auxiliary functions like for serializing/deserializing. +#include "MarketDataIncrementalRefreshCdrAux.ipp" diff --git a/GenTools/idl/MarketDataIncrementalRefreshPubSubTypes.hpp b/GenTools/idl/MarketDataIncrementalRefreshPubSubTypes.hpp new file mode 100644 index 0000000..aa99403 --- /dev/null +++ b/GenTools/idl/MarketDataIncrementalRefreshPubSubTypes.hpp @@ -0,0 +1,209 @@ +// 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 MarketDataIncrementalRefreshPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESH_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESH_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "MarketDataIncrementalRefresh.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated MarketDataIncrementalRefresh is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_MarketDataIncrementalRefresh +{ + + /*! + * @brief This class represents the TopicDataType of the type NoMDEntries defined by the user in the IDL file. + * @ingroup MarketDataIncrementalRefresh + */ + class NoMDEntriesPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef NoMDEntries type; + + eProsima_user_DllExport NoMDEntriesPubSubType(); + + eProsima_user_DllExport ~NoMDEntriesPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; + typedef std::vector NoMDEntriesSeq; + + /*! + * @brief This class represents the TopicDataType of the type MarketDataIncrementalRefresh defined by the user in the IDL file. + * @ingroup MarketDataIncrementalRefresh + */ + class MarketDataIncrementalRefreshPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef MarketDataIncrementalRefresh type; + + eProsima_user_DllExport MarketDataIncrementalRefreshPubSubType(); + + eProsima_user_DllExport ~MarketDataIncrementalRefreshPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_MarketDataIncrementalRefresh + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESH_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/MarketDataIncrementalRefreshTypeObjectSupport.cxx b/GenTools/idl/MarketDataIncrementalRefreshTypeObjectSupport.cxx new file mode 100644 index 0000000..d48db04 --- /dev/null +++ b/GenTools/idl/MarketDataIncrementalRefreshTypeObjectSupport.cxx @@ -0,0 +1,731 @@ +// 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 MarketDataIncrementalRefreshTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "MarketDataIncrementalRefreshTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "MarketDataIncrementalRefresh.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_MarketDataIncrementalRefresh { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_NoMDEntries_type_identifier( + TypeIdentifierPair& type_ids_NoMDEntries) +{ + + ReturnCode_t return_code_NoMDEntries {eprosima::fastdds::dds::RETCODE_OK}; + return_code_NoMDEntries = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataIncrementalRefresh::NoMDEntries", type_ids_NoMDEntries); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoMDEntries) + { + StructTypeFlag struct_flags_NoMDEntries = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_NoMDEntries = "DistributedATS_MarketDataIncrementalRefresh::NoMDEntries"; + eprosima::fastcdr::optional type_ann_builtin_NoMDEntries; + eprosima::fastcdr::optional ann_custom_NoMDEntries; + CompleteTypeDetail detail_NoMDEntries = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_NoMDEntries, ann_custom_NoMDEntries, type_name_NoMDEntries.to_string()); + CompleteStructHeader header_NoMDEntries; + header_NoMDEntries = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_NoMDEntries); + CompleteStructMemberSeq member_seq_NoMDEntries; + { + TypeIdentifierPair type_ids_MDUpdateAction; + ReturnCode_t return_code_MDUpdateAction {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MDUpdateAction = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_MDUpdateAction); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MDUpdateAction) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MDUpdateAction Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MDUpdateAction = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MDUpdateAction = 0x00000000; + bool common_MDUpdateAction_ec {false}; + CommonStructMember common_MDUpdateAction {TypeObjectUtils::build_common_struct_member(member_id_MDUpdateAction, member_flags_MDUpdateAction, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MDUpdateAction, common_MDUpdateAction_ec))}; + if (!common_MDUpdateAction_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MDUpdateAction member TypeIdentifier inconsistent."); + return; + } + MemberName name_MDUpdateAction = "MDUpdateAction"; + eprosima::fastcdr::optional member_ann_builtin_MDUpdateAction; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_MDUpdateAction = TypeObjectUtils::build_complete_member_detail(name_MDUpdateAction, member_ann_builtin_MDUpdateAction, ann_custom_NoMDEntries); + CompleteStructMember member_MDUpdateAction = TypeObjectUtils::build_complete_struct_member(common_MDUpdateAction, detail_MDUpdateAction); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_MDUpdateAction); + } + { + TypeIdentifierPair type_ids_MDEntryType; + ReturnCode_t return_code_MDEntryType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MDEntryType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_MDEntryType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MDEntryType) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MDEntryType Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MDEntryType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MDEntryType = 0x00000001; + bool common_MDEntryType_ec {false}; + CommonStructMember common_MDEntryType {TypeObjectUtils::build_common_struct_member(member_id_MDEntryType, member_flags_MDEntryType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MDEntryType, common_MDEntryType_ec))}; + if (!common_MDEntryType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MDEntryType member TypeIdentifier inconsistent."); + return; + } + MemberName name_MDEntryType = "MDEntryType"; + eprosima::fastcdr::optional member_ann_builtin_MDEntryType; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_MDEntryType = TypeObjectUtils::build_complete_member_detail(name_MDEntryType, member_ann_builtin_MDEntryType, ann_custom_NoMDEntries); + CompleteStructMember member_MDEntryType = TypeObjectUtils::build_complete_struct_member(common_MDEntryType, detail_MDEntryType); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_MDEntryType); + } + { + TypeIdentifierPair type_ids_Symbol; + ReturnCode_t return_code_Symbol {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Symbol = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Symbol); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Symbol) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Symbol)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Symbol = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Symbol = 0x00000002; + bool common_Symbol_ec {false}; + CommonStructMember common_Symbol {TypeObjectUtils::build_common_struct_member(member_id_Symbol, member_flags_Symbol, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Symbol, common_Symbol_ec))}; + if (!common_Symbol_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Symbol member TypeIdentifier inconsistent."); + return; + } + MemberName name_Symbol = "Symbol"; + eprosima::fastcdr::optional member_ann_builtin_Symbol; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_Symbol = TypeObjectUtils::build_complete_member_detail(name_Symbol, member_ann_builtin_Symbol, ann_custom_NoMDEntries); + CompleteStructMember member_Symbol = TypeObjectUtils::build_complete_struct_member(common_Symbol, detail_Symbol); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_Symbol); + } + { + TypeIdentifierPair type_ids_SecurityExchange; + ReturnCode_t return_code_SecurityExchange {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityExchange = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityExchange); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityExchange) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityExchange)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityExchange = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityExchange = 0x00000003; + bool common_SecurityExchange_ec {false}; + CommonStructMember common_SecurityExchange {TypeObjectUtils::build_common_struct_member(member_id_SecurityExchange, member_flags_SecurityExchange, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityExchange, common_SecurityExchange_ec))}; + if (!common_SecurityExchange_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityExchange member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityExchange = "SecurityExchange"; + eprosima::fastcdr::optional member_ann_builtin_SecurityExchange; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_SecurityExchange = TypeObjectUtils::build_complete_member_detail(name_SecurityExchange, member_ann_builtin_SecurityExchange, ann_custom_NoMDEntries); + CompleteStructMember member_SecurityExchange = TypeObjectUtils::build_complete_struct_member(common_SecurityExchange, detail_SecurityExchange); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_SecurityExchange); + } + { + TypeIdentifierPair type_ids_MDEntryPx; + ReturnCode_t return_code_MDEntryPx {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MDEntryPx = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_float", type_ids_MDEntryPx); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MDEntryPx) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MDEntryPx Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MDEntryPx = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MDEntryPx = 0x00000004; + bool common_MDEntryPx_ec {false}; + CommonStructMember common_MDEntryPx {TypeObjectUtils::build_common_struct_member(member_id_MDEntryPx, member_flags_MDEntryPx, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MDEntryPx, common_MDEntryPx_ec))}; + if (!common_MDEntryPx_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MDEntryPx member TypeIdentifier inconsistent."); + return; + } + MemberName name_MDEntryPx = "MDEntryPx"; + eprosima::fastcdr::optional member_ann_builtin_MDEntryPx; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_MDEntryPx = TypeObjectUtils::build_complete_member_detail(name_MDEntryPx, member_ann_builtin_MDEntryPx, ann_custom_NoMDEntries); + CompleteStructMember member_MDEntryPx = TypeObjectUtils::build_complete_struct_member(common_MDEntryPx, detail_MDEntryPx); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_MDEntryPx); + } + { + TypeIdentifierPair type_ids_MDEntrySize; + ReturnCode_t return_code_MDEntrySize {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MDEntrySize = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_MDEntrySize); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MDEntrySize) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MDEntrySize Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MDEntrySize = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MDEntrySize = 0x00000005; + bool common_MDEntrySize_ec {false}; + CommonStructMember common_MDEntrySize {TypeObjectUtils::build_common_struct_member(member_id_MDEntrySize, member_flags_MDEntrySize, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MDEntrySize, common_MDEntrySize_ec))}; + if (!common_MDEntrySize_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MDEntrySize member TypeIdentifier inconsistent."); + return; + } + MemberName name_MDEntrySize = "MDEntrySize"; + eprosima::fastcdr::optional member_ann_builtin_MDEntrySize; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_MDEntrySize = TypeObjectUtils::build_complete_member_detail(name_MDEntrySize, member_ann_builtin_MDEntrySize, ann_custom_NoMDEntries); + CompleteStructMember member_MDEntrySize = TypeObjectUtils::build_complete_struct_member(common_MDEntrySize, detail_MDEntrySize); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_MDEntrySize); + } + { + TypeIdentifierPair type_ids_TimeInForce; + ReturnCode_t return_code_TimeInForce {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TimeInForce = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_TimeInForce); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TimeInForce) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "TimeInForce Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_TimeInForce = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TimeInForce = 0x00000006; + bool common_TimeInForce_ec {false}; + CommonStructMember common_TimeInForce {TypeObjectUtils::build_common_struct_member(member_id_TimeInForce, member_flags_TimeInForce, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TimeInForce, common_TimeInForce_ec))}; + if (!common_TimeInForce_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TimeInForce member TypeIdentifier inconsistent."); + return; + } + MemberName name_TimeInForce = "TimeInForce"; + eprosima::fastcdr::optional member_ann_builtin_TimeInForce; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_TimeInForce = TypeObjectUtils::build_complete_member_detail(name_TimeInForce, member_ann_builtin_TimeInForce, ann_custom_NoMDEntries); + CompleteStructMember member_TimeInForce = TypeObjectUtils::build_complete_struct_member(common_TimeInForce, detail_TimeInForce); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_TimeInForce); + } + { + TypeIdentifierPair type_ids_ExecInst; + ReturnCode_t return_code_ExecInst {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ExecInst = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_ExecInst); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ExecInst) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_ExecInst)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_ExecInst = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_ExecInst = 0x00000007; + bool common_ExecInst_ec {false}; + CommonStructMember common_ExecInst {TypeObjectUtils::build_common_struct_member(member_id_ExecInst, member_flags_ExecInst, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_ExecInst, common_ExecInst_ec))}; + if (!common_ExecInst_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure ExecInst member TypeIdentifier inconsistent."); + return; + } + MemberName name_ExecInst = "ExecInst"; + eprosima::fastcdr::optional member_ann_builtin_ExecInst; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_ExecInst = TypeObjectUtils::build_complete_member_detail(name_ExecInst, member_ann_builtin_ExecInst, ann_custom_NoMDEntries); + CompleteStructMember member_ExecInst = TypeObjectUtils::build_complete_struct_member(common_ExecInst, detail_ExecInst); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_ExecInst); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x00000008; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_NoMDEntries); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_Text); + } + CompleteStructType struct_type_NoMDEntries = TypeObjectUtils::build_complete_struct_type(struct_flags_NoMDEntries, header_NoMDEntries, member_seq_NoMDEntries); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_NoMDEntries, type_name_NoMDEntries.to_string(), type_ids_NoMDEntries)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_MarketDataIncrementalRefresh::NoMDEntries already registered in TypeObjectRegistry for a different type."); + } + } +} +void register_NoMDEntriesSeq_type_identifier( + TypeIdentifierPair& type_ids_NoMDEntriesSeq) +{ + ReturnCode_t return_code_NoMDEntriesSeq {eprosima::fastdds::dds::RETCODE_OK}; + return_code_NoMDEntriesSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataIncrementalRefresh::NoMDEntriesSeq", type_ids_NoMDEntriesSeq); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoMDEntriesSeq) + { + AliasTypeFlag alias_flags_NoMDEntriesSeq = 0; + QualifiedTypeName type_name_NoMDEntriesSeq = "DistributedATS_MarketDataIncrementalRefresh::NoMDEntriesSeq"; + eprosima::fastcdr::optional type_ann_builtin_NoMDEntriesSeq; + eprosima::fastcdr::optional ann_custom_NoMDEntriesSeq; + CompleteTypeDetail detail_NoMDEntriesSeq = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_NoMDEntriesSeq, ann_custom_NoMDEntriesSeq, type_name_NoMDEntriesSeq.to_string()); + CompleteAliasHeader header_NoMDEntriesSeq = TypeObjectUtils::build_complete_alias_header(detail_NoMDEntriesSeq); + AliasMemberFlag related_flags_NoMDEntriesSeq = 0; + return_code_NoMDEntriesSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded", type_ids_NoMDEntriesSeq); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoMDEntriesSeq) + { + return_code_NoMDEntriesSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataIncrementalRefresh::NoMDEntries", type_ids_NoMDEntriesSeq); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoMDEntriesSeq) + { + DistributedATS_MarketDataIncrementalRefresh::register_NoMDEntries_type_identifier(type_ids_NoMDEntriesSeq); + } + bool element_identifier_anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded_ec {false}; + TypeIdentifier* element_identifier_anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded {new TypeIdentifier(TypeObjectUtils::retrieve_complete_type_identifier(type_ids_NoMDEntriesSeq, element_identifier_anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded_ec))}; + if (!element_identifier_anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Sequence element TypeIdentifier inconsistent."); + return; + } + EquivalenceKind equiv_kind_anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded = EK_COMPLETE; + if (TK_NONE == type_ids_NoMDEntriesSeq.type_identifier2()._d()) + { + equiv_kind_anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded = EK_BOTH; + } + CollectionElementFlag element_flags_anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded = 0; + PlainCollectionHeader header_anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded = TypeObjectUtils::build_plain_collection_header(equiv_kind_anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded, element_flags_anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded); + { + SBound bound = 0; + PlainSequenceSElemDefn seq_sdefn = TypeObjectUtils::build_plain_sequence_s_elem_defn(header_anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded, bound, + eprosima::fastcdr::external(element_identifier_anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded)); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_sequence_type_identifier(seq_sdefn, "anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded", type_ids_NoMDEntriesSeq)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_sequence_DistributedATS_MarketDataIncrementalRefresh_NoMDEntries_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + bool common_NoMDEntriesSeq_ec {false}; + CommonAliasBody common_NoMDEntriesSeq {TypeObjectUtils::build_common_alias_body(related_flags_NoMDEntriesSeq, + TypeObjectUtils::retrieve_complete_type_identifier(type_ids_NoMDEntriesSeq, common_NoMDEntriesSeq_ec))}; + if (!common_NoMDEntriesSeq_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "DistributedATS_MarketDataIncrementalRefresh::NoMDEntriesSeq related TypeIdentifier inconsistent."); + return; + } + eprosima::fastcdr::optional member_ann_builtin_NoMDEntriesSeq; + ann_custom_NoMDEntriesSeq.reset(); + CompleteAliasBody body_NoMDEntriesSeq = TypeObjectUtils::build_complete_alias_body(common_NoMDEntriesSeq, + member_ann_builtin_NoMDEntriesSeq, ann_custom_NoMDEntriesSeq); + CompleteAliasType alias_type_NoMDEntriesSeq = TypeObjectUtils::build_complete_alias_type(alias_flags_NoMDEntriesSeq, + header_NoMDEntriesSeq, body_NoMDEntriesSeq); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_alias_type_object(alias_type_NoMDEntriesSeq, + type_name_NoMDEntriesSeq.to_string(), type_ids_NoMDEntriesSeq)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_MarketDataIncrementalRefresh::NoMDEntriesSeq already registered in TypeObjectRegistry for a different type."); + } + } +} + +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_MarketDataIncrementalRefresh_type_identifier( + TypeIdentifierPair& type_ids_MarketDataIncrementalRefresh) +{ + + ReturnCode_t return_code_MarketDataIncrementalRefresh {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MarketDataIncrementalRefresh = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh", type_ids_MarketDataIncrementalRefresh); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MarketDataIncrementalRefresh) + { + StructTypeFlag struct_flags_MarketDataIncrementalRefresh = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_MarketDataIncrementalRefresh = "DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh"; + eprosima::fastcdr::optional type_ann_builtin_MarketDataIncrementalRefresh; + eprosima::fastcdr::optional ann_custom_MarketDataIncrementalRefresh; + CompleteTypeDetail detail_MarketDataIncrementalRefresh = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_MarketDataIncrementalRefresh, ann_custom_MarketDataIncrementalRefresh, type_name_MarketDataIncrementalRefresh.to_string()); + CompleteStructHeader header_MarketDataIncrementalRefresh; + header_MarketDataIncrementalRefresh = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_MarketDataIncrementalRefresh); + CompleteStructMemberSeq member_seq_MarketDataIncrementalRefresh; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_MarketDataIncrementalRefresh.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_MarketDataIncrementalRefresh); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataIncrementalRefresh, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_MarketDataIncrementalRefresh.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_MarketDataIncrementalRefresh); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataIncrementalRefresh, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_MarketDataIncrementalRefresh.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_MarketDataIncrementalRefresh); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataIncrementalRefresh, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_MarketDataIncrementalRefresh.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_MarketDataIncrementalRefresh); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataIncrementalRefresh, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_MarketDataIncrementalRefresh.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_MarketDataIncrementalRefresh); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataIncrementalRefresh, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_MDReqID; + ReturnCode_t return_code_MDReqID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MDReqID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_MDReqID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MDReqID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_MDReqID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_MDReqID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MDReqID = 0x00000005; + bool common_MDReqID_ec {false}; + CommonStructMember common_MDReqID {TypeObjectUtils::build_common_struct_member(member_id_MDReqID, member_flags_MDReqID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MDReqID, common_MDReqID_ec))}; + if (!common_MDReqID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MDReqID member TypeIdentifier inconsistent."); + return; + } + MemberName name_MDReqID = "MDReqID"; + eprosima::fastcdr::optional member_ann_builtin_MDReqID; + ann_custom_MarketDataIncrementalRefresh.reset(); + CompleteMemberDetail detail_MDReqID = TypeObjectUtils::build_complete_member_detail(name_MDReqID, member_ann_builtin_MDReqID, ann_custom_MarketDataIncrementalRefresh); + CompleteStructMember member_MDReqID = TypeObjectUtils::build_complete_struct_member(common_MDReqID, detail_MDReqID); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataIncrementalRefresh, member_MDReqID); + } + { + TypeIdentifierPair type_ids_c_NoMDEntries; + ReturnCode_t return_code_c_NoMDEntries {eprosima::fastdds::dds::RETCODE_OK}; + return_code_c_NoMDEntries = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataIncrementalRefresh::NoMDEntriesSeq", type_ids_c_NoMDEntries); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_c_NoMDEntries) + { + DistributedATS_MarketDataIncrementalRefresh::register_NoMDEntriesSeq_type_identifier(type_ids_c_NoMDEntries); + } + StructMemberFlag member_flags_c_NoMDEntries = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_c_NoMDEntries = 0x00000006; + bool common_c_NoMDEntries_ec {false}; + CommonStructMember common_c_NoMDEntries {TypeObjectUtils::build_common_struct_member(member_id_c_NoMDEntries, member_flags_c_NoMDEntries, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_c_NoMDEntries, common_c_NoMDEntries_ec))}; + if (!common_c_NoMDEntries_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure c_NoMDEntries member TypeIdentifier inconsistent."); + return; + } + MemberName name_c_NoMDEntries = "c_NoMDEntries"; + eprosima::fastcdr::optional member_ann_builtin_c_NoMDEntries; + ann_custom_MarketDataIncrementalRefresh.reset(); + CompleteMemberDetail detail_c_NoMDEntries = TypeObjectUtils::build_complete_member_detail(name_c_NoMDEntries, member_ann_builtin_c_NoMDEntries, ann_custom_MarketDataIncrementalRefresh); + CompleteStructMember member_c_NoMDEntries = TypeObjectUtils::build_complete_struct_member(common_c_NoMDEntries, detail_c_NoMDEntries); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataIncrementalRefresh, member_c_NoMDEntries); + } + CompleteStructType struct_type_MarketDataIncrementalRefresh = TypeObjectUtils::build_complete_struct_type(struct_flags_MarketDataIncrementalRefresh, header_MarketDataIncrementalRefresh, member_seq_MarketDataIncrementalRefresh); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_MarketDataIncrementalRefresh, type_name_MarketDataIncrementalRefresh.to_string(), type_ids_MarketDataIncrementalRefresh)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_MarketDataIncrementalRefresh + diff --git a/GenTools/idl/MarketDataIncrementalRefreshTypeObjectSupport.hpp b/GenTools/idl/MarketDataIncrementalRefreshTypeObjectSupport.hpp new file mode 100644 index 0000000..cc632b3 --- /dev/null +++ b/GenTools/idl/MarketDataIncrementalRefreshTypeObjectSupport.hpp @@ -0,0 +1,88 @@ +// 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 MarketDataIncrementalRefreshTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESH_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESH_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_MarketDataIncrementalRefresh { +/** + * @brief Register NoMDEntries related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_NoMDEntries_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +/** + * @brief Register NoMDEntriesSeq related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_NoMDEntriesSeq_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + + + +/** + * @brief Register MarketDataIncrementalRefresh related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_MarketDataIncrementalRefresh_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_MarketDataIncrementalRefresh + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAINCREMENTALREFRESH_MARKETDATAINCREMENTALREFRESH_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/MarketDataRequest.hpp b/GenTools/idl/MarketDataRequest.hpp new file mode 100644 index 0000000..fa78f2d --- /dev/null +++ b/GenTools/idl/MarketDataRequest.hpp @@ -0,0 +1,907 @@ +// 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 MarketDataRequest.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUEST_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUEST_HPP + +#include +#include +#include +#include + +#include +#include "Header.hpp" + +#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(MARKETDATAREQUEST_SOURCE) +#define MARKETDATAREQUEST_DllAPI __declspec( dllexport ) +#else +#define MARKETDATAREQUEST_DllAPI __declspec( dllimport ) +#endif // MARKETDATAREQUEST_SOURCE +#else +#define MARKETDATAREQUEST_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define MARKETDATAREQUEST_DllAPI +#endif // _WIN32 + +namespace DistributedATS_MarketDataRequest { + +/*! + * @brief This class represents the structure NoMDEntryTypes defined by the user in the IDL file. + * @ingroup MarketDataRequest + */ +class NoMDEntryTypes +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport NoMDEntryTypes() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~NoMDEntryTypes() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object NoMDEntryTypes that will be copied. + */ + eProsima_user_DllExport NoMDEntryTypes( + const NoMDEntryTypes& x) + { + m_MDEntryType = x.m_MDEntryType; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object NoMDEntryTypes that will be copied. + */ + eProsima_user_DllExport NoMDEntryTypes( + NoMDEntryTypes&& x) noexcept + { + m_MDEntryType = x.m_MDEntryType; + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object NoMDEntryTypes that will be copied. + */ + eProsima_user_DllExport NoMDEntryTypes& operator =( + const NoMDEntryTypes& x) + { + + m_MDEntryType = x.m_MDEntryType; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object NoMDEntryTypes that will be copied. + */ + eProsima_user_DllExport NoMDEntryTypes& operator =( + NoMDEntryTypes&& x) noexcept + { + + m_MDEntryType = x.m_MDEntryType; + return *this; + } + + /*! + * @brief Comparison operator. + * @param x NoMDEntryTypes object to compare. + */ + eProsima_user_DllExport bool operator ==( + const NoMDEntryTypes& x) const + { + return (m_MDEntryType == x.m_MDEntryType); + } + + /*! + * @brief Comparison operator. + * @param x NoMDEntryTypes object to compare. + */ + eProsima_user_DllExport bool operator !=( + const NoMDEntryTypes& x) const + { + return !(*this == x); + } + + /*! + * @brief This function sets a value in member MDEntryType + * @param _MDEntryType New value for member MDEntryType + */ + eProsima_user_DllExport void MDEntryType( + char _MDEntryType) + { + m_MDEntryType = _MDEntryType; + } + + /*! + * @brief This function returns the value of member MDEntryType + * @return Value of member MDEntryType + */ + eProsima_user_DllExport char MDEntryType() const + { + return m_MDEntryType; + } + + /*! + * @brief This function returns a reference to member MDEntryType + * @return Reference to member MDEntryType + */ + eProsima_user_DllExport char& MDEntryType() + { + return m_MDEntryType; + } + + + +private: + + char m_MDEntryType{0}; + +}; +typedef std::vector NoMDEntryTypesSeq; + +/*! + * @brief This class represents the structure NoRelatedSym defined by the user in the IDL file. + * @ingroup MarketDataRequest + */ +class NoRelatedSym +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport NoRelatedSym() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~NoRelatedSym() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object NoRelatedSym that will be copied. + */ + eProsima_user_DllExport NoRelatedSym( + const NoRelatedSym& x) + { + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object NoRelatedSym that will be copied. + */ + eProsima_user_DllExport NoRelatedSym( + NoRelatedSym&& x) noexcept + { + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object NoRelatedSym that will be copied. + */ + eProsima_user_DllExport NoRelatedSym& operator =( + const NoRelatedSym& x) + { + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object NoRelatedSym that will be copied. + */ + eProsima_user_DllExport NoRelatedSym& operator =( + NoRelatedSym&& x) noexcept + { + + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x NoRelatedSym object to compare. + */ + eProsima_user_DllExport bool operator ==( + const NoRelatedSym& x) const + { + return (m_Symbol == x.m_Symbol && + m_SecurityExchange == x.m_SecurityExchange); + } + + /*! + * @brief Comparison operator. + * @param x NoRelatedSym object to compare. + */ + eProsima_user_DllExport bool operator !=( + const NoRelatedSym& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member Symbol + * @param _Symbol New value to be copied in member Symbol + */ + eProsima_user_DllExport void Symbol( + const std::string& _Symbol) + { + m_Symbol = _Symbol; + } + + /*! + * @brief This function moves the value in member Symbol + * @param _Symbol New value to be moved in member Symbol + */ + eProsima_user_DllExport void Symbol( + std::string&& _Symbol) + { + m_Symbol = std::move(_Symbol); + } + + /*! + * @brief This function returns a constant reference to member Symbol + * @return Constant reference to member Symbol + */ + eProsima_user_DllExport const std::string& Symbol() const + { + return m_Symbol; + } + + /*! + * @brief This function returns a reference to member Symbol + * @return Reference to member Symbol + */ + eProsima_user_DllExport std::string& Symbol() + { + return m_Symbol; + } + + + /*! + * @brief This function copies the value in member SecurityExchange + * @param _SecurityExchange New value to be copied in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + const std::string& _SecurityExchange) + { + m_SecurityExchange = _SecurityExchange; + } + + /*! + * @brief This function moves the value in member SecurityExchange + * @param _SecurityExchange New value to be moved in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + std::string&& _SecurityExchange) + { + m_SecurityExchange = std::move(_SecurityExchange); + } + + /*! + * @brief This function returns a constant reference to member SecurityExchange + * @return Constant reference to member SecurityExchange + */ + eProsima_user_DllExport const std::string& SecurityExchange() const + { + return m_SecurityExchange; + } + + /*! + * @brief This function returns a reference to member SecurityExchange + * @return Reference to member SecurityExchange + */ + eProsima_user_DllExport std::string& SecurityExchange() + { + return m_SecurityExchange; + } + + + +private: + + std::string m_Symbol; + std::string m_SecurityExchange; + +}; +typedef std::vector NoRelatedSymSeq; + +/*! + * @brief This class represents the structure MarketDataRequest defined by the user in the IDL file. + * @ingroup MarketDataRequest + */ +class MarketDataRequest +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport MarketDataRequest() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~MarketDataRequest() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object MarketDataRequest that will be copied. + */ + eProsima_user_DllExport MarketDataRequest( + const MarketDataRequest& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_MDReqID = x.m_MDReqID; + + m_SubscriptionRequestType = x.m_SubscriptionRequestType; + + m_MarketDepth = x.m_MarketDepth; + + m_c_NoMDEntryTypes = x.m_c_NoMDEntryTypes; + + m_c_NoRelatedSym = x.m_c_NoRelatedSym; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object MarketDataRequest that will be copied. + */ + eProsima_user_DllExport MarketDataRequest( + MarketDataRequest&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_MDReqID = std::move(x.m_MDReqID); + m_SubscriptionRequestType = x.m_SubscriptionRequestType; + m_MarketDepth = x.m_MarketDepth; + m_c_NoMDEntryTypes = std::move(x.m_c_NoMDEntryTypes); + m_c_NoRelatedSym = std::move(x.m_c_NoRelatedSym); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object MarketDataRequest that will be copied. + */ + eProsima_user_DllExport MarketDataRequest& operator =( + const MarketDataRequest& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_MDReqID = x.m_MDReqID; + + m_SubscriptionRequestType = x.m_SubscriptionRequestType; + + m_MarketDepth = x.m_MarketDepth; + + m_c_NoMDEntryTypes = x.m_c_NoMDEntryTypes; + + m_c_NoRelatedSym = x.m_c_NoRelatedSym; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object MarketDataRequest that will be copied. + */ + eProsima_user_DllExport MarketDataRequest& operator =( + MarketDataRequest&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_MDReqID = std::move(x.m_MDReqID); + m_SubscriptionRequestType = x.m_SubscriptionRequestType; + m_MarketDepth = x.m_MarketDepth; + m_c_NoMDEntryTypes = std::move(x.m_c_NoMDEntryTypes); + m_c_NoRelatedSym = std::move(x.m_c_NoRelatedSym); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x MarketDataRequest object to compare. + */ + eProsima_user_DllExport bool operator ==( + const MarketDataRequest& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_MDReqID == x.m_MDReqID && + m_SubscriptionRequestType == x.m_SubscriptionRequestType && + m_MarketDepth == x.m_MarketDepth && + m_c_NoMDEntryTypes == x.m_c_NoMDEntryTypes && + m_c_NoRelatedSym == x.m_c_NoRelatedSym); + } + + /*! + * @brief Comparison operator. + * @param x MarketDataRequest object to compare. + */ + eProsima_user_DllExport bool operator !=( + const MarketDataRequest& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member MDReqID + * @param _MDReqID New value to be copied in member MDReqID + */ + eProsima_user_DllExport void MDReqID( + const std::string& _MDReqID) + { + m_MDReqID = _MDReqID; + } + + /*! + * @brief This function moves the value in member MDReqID + * @param _MDReqID New value to be moved in member MDReqID + */ + eProsima_user_DllExport void MDReqID( + std::string&& _MDReqID) + { + m_MDReqID = std::move(_MDReqID); + } + + /*! + * @brief This function returns a constant reference to member MDReqID + * @return Constant reference to member MDReqID + */ + eProsima_user_DllExport const std::string& MDReqID() const + { + return m_MDReqID; + } + + /*! + * @brief This function returns a reference to member MDReqID + * @return Reference to member MDReqID + */ + eProsima_user_DllExport std::string& MDReqID() + { + return m_MDReqID; + } + + + /*! + * @brief This function sets a value in member SubscriptionRequestType + * @param _SubscriptionRequestType New value for member SubscriptionRequestType + */ + eProsima_user_DllExport void SubscriptionRequestType( + char _SubscriptionRequestType) + { + m_SubscriptionRequestType = _SubscriptionRequestType; + } + + /*! + * @brief This function returns the value of member SubscriptionRequestType + * @return Value of member SubscriptionRequestType + */ + eProsima_user_DllExport char SubscriptionRequestType() const + { + return m_SubscriptionRequestType; + } + + /*! + * @brief This function returns a reference to member SubscriptionRequestType + * @return Reference to member SubscriptionRequestType + */ + eProsima_user_DllExport char& SubscriptionRequestType() + { + return m_SubscriptionRequestType; + } + + + /*! + * @brief This function sets a value in member MarketDepth + * @param _MarketDepth New value for member MarketDepth + */ + eProsima_user_DllExport void MarketDepth( + int32_t _MarketDepth) + { + m_MarketDepth = _MarketDepth; + } + + /*! + * @brief This function returns the value of member MarketDepth + * @return Value of member MarketDepth + */ + eProsima_user_DllExport int32_t MarketDepth() const + { + return m_MarketDepth; + } + + /*! + * @brief This function returns a reference to member MarketDepth + * @return Reference to member MarketDepth + */ + eProsima_user_DllExport int32_t& MarketDepth() + { + return m_MarketDepth; + } + + + /*! + * @brief This function copies the value in member c_NoMDEntryTypes + * @param _c_NoMDEntryTypes New value to be copied in member c_NoMDEntryTypes + */ + eProsima_user_DllExport void c_NoMDEntryTypes( + const NoMDEntryTypesSeq& _c_NoMDEntryTypes) + { + m_c_NoMDEntryTypes = _c_NoMDEntryTypes; + } + + /*! + * @brief This function moves the value in member c_NoMDEntryTypes + * @param _c_NoMDEntryTypes New value to be moved in member c_NoMDEntryTypes + */ + eProsima_user_DllExport void c_NoMDEntryTypes( + NoMDEntryTypesSeq&& _c_NoMDEntryTypes) + { + m_c_NoMDEntryTypes = std::move(_c_NoMDEntryTypes); + } + + /*! + * @brief This function returns a constant reference to member c_NoMDEntryTypes + * @return Constant reference to member c_NoMDEntryTypes + */ + eProsima_user_DllExport const NoMDEntryTypesSeq& c_NoMDEntryTypes() const + { + return m_c_NoMDEntryTypes; + } + + /*! + * @brief This function returns a reference to member c_NoMDEntryTypes + * @return Reference to member c_NoMDEntryTypes + */ + eProsima_user_DllExport NoMDEntryTypesSeq& c_NoMDEntryTypes() + { + return m_c_NoMDEntryTypes; + } + + + /*! + * @brief This function copies the value in member c_NoRelatedSym + * @param _c_NoRelatedSym New value to be copied in member c_NoRelatedSym + */ + eProsima_user_DllExport void c_NoRelatedSym( + const NoRelatedSymSeq& _c_NoRelatedSym) + { + m_c_NoRelatedSym = _c_NoRelatedSym; + } + + /*! + * @brief This function moves the value in member c_NoRelatedSym + * @param _c_NoRelatedSym New value to be moved in member c_NoRelatedSym + */ + eProsima_user_DllExport void c_NoRelatedSym( + NoRelatedSymSeq&& _c_NoRelatedSym) + { + m_c_NoRelatedSym = std::move(_c_NoRelatedSym); + } + + /*! + * @brief This function returns a constant reference to member c_NoRelatedSym + * @return Constant reference to member c_NoRelatedSym + */ + eProsima_user_DllExport const NoRelatedSymSeq& c_NoRelatedSym() const + { + return m_c_NoRelatedSym; + } + + /*! + * @brief This function returns a reference to member c_NoRelatedSym + * @return Reference to member c_NoRelatedSym + */ + eProsima_user_DllExport NoRelatedSymSeq& c_NoRelatedSym() + { + return m_c_NoRelatedSym; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_MDReqID; + char m_SubscriptionRequestType{0}; + int32_t m_MarketDepth{0}; + NoMDEntryTypesSeq m_c_NoMDEntryTypes; + NoRelatedSymSeq m_c_NoRelatedSym; + +}; + +} // namespace DistributedATS_MarketDataRequest + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUEST_HPP_ + + diff --git a/GenTools/idl/MarketDataRequest.idl b/GenTools/idl/MarketDataRequest.idl index e2d33aa..ece8052 100644 --- a/GenTools/idl/MarketDataRequest.idl +++ b/GenTools/idl/MarketDataRequest.idl @@ -1,4 +1,4 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_MarketDataRequest @@ -17,10 +17,17 @@ module DistributedATS_MarketDataRequest }; typedef sequence NoRelatedSymSeq; - @topic + struct MarketDataRequest { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string MDReqID; char SubscriptionRequestType; long MarketDepth; diff --git a/GenTools/idl/MarketDataRequestAdapter.cpp b/GenTools/idl/MarketDataRequestAdapter.cpp index 99f48ba..3772c08 100644 --- a/GenTools/idl/MarketDataRequestAdapter.cpp +++ b/GenTools/idl/MarketDataRequestAdapter.cpp @@ -1,28 +1,28 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "MarketDataRequestAdapter.hpp" -#include "ConvertUtils.h" +#include void MarketDataRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_MarketDataRequest::MarketDataRequest& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::MDReqID) ) - ddsMsg.MDReqID = CORBA::string_dup(((FIX::MDReqID)fixMsg.getField(FIX::FIELD::MDReqID)).getString().c_str()); + ddsMsg.MDReqID ( ((FIX::MDReqID)fixMsg.getField(FIX::FIELD::MDReqID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SubscriptionRequestType) ) - ddsMsg.SubscriptionRequestType = FIELD_GET_REF( fixMsg,SubscriptionRequestType); + ddsMsg.SubscriptionRequestType ( FIELD_GET_REF( fixMsg,SubscriptionRequestType)); if (fixMsg.isSetField(FIX::FIELD::MarketDepth) ) - ddsMsg.MarketDepth = FIELD_GET_REF( fixMsg,MarketDepth); + ddsMsg.MarketDepth ( FIELD_GET_REF( fixMsg,MarketDepth)); else - ddsMsg.MarketDepth = 0; + ddsMsg.MarketDepth ( 0 ); // There is a group FIX::NoMDEntryTypes NoMDEntryTypes_group_cnt = FIELD_GET_REF( fixMsg,NoMDEntryTypes); - ddsMsg.c_NoMDEntryTypes.length(NoMDEntryTypes_group_cnt.getValue()); + ddsMsg.c_NoMDEntryTypes().resize(NoMDEntryTypes_group_cnt.getValue()); int NoMDEntryTypes_group_cnt_index = 0; while ( NoMDEntryTypes_group_cnt_index < NoMDEntryTypes_group_cnt.getValue()) @@ -31,7 +31,7 @@ void MarketDataRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedAT ; fixMsg.getGroup(NoMDEntryTypes_group_cnt_index+1, grp); if (grp.isSetField(FIX::FIELD::MDEntryType) ) - ddsMsg.c_NoMDEntryTypes[NoMDEntryTypes_group_cnt_index].MDEntryType = FIELD_GET_REF( grp,MDEntryType); + ddsMsg.c_NoMDEntryTypes()[NoMDEntryTypes_group_cnt_index].MDEntryType ( FIELD_GET_REF( grp,MDEntryType)); NoMDEntryTypes_group_cnt_index++; }; @@ -39,7 +39,7 @@ void MarketDataRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedAT FIX::NoRelatedSym NoRelatedSym_group_cnt = FIELD_GET_REF( fixMsg,NoRelatedSym); - ddsMsg.c_NoRelatedSym.length(NoRelatedSym_group_cnt.getValue()); + ddsMsg.c_NoRelatedSym().resize(NoRelatedSym_group_cnt.getValue()); int NoRelatedSym_group_cnt_index = 0; while ( NoRelatedSym_group_cnt_index < NoRelatedSym_group_cnt.getValue()) @@ -48,10 +48,10 @@ void MarketDataRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedAT ; fixMsg.getGroup(NoRelatedSym_group_cnt_index+1, grp); if (grp.isSetField(FIX::FIELD::Symbol) ) - ddsMsg.c_NoRelatedSym[NoRelatedSym_group_cnt_index].Symbol = CORBA::string_dup(((FIX::Symbol)grp.getField(FIX::FIELD::Symbol)).getString().c_str()); + ddsMsg.c_NoRelatedSym()[NoRelatedSym_group_cnt_index].Symbol ( ((FIX::Symbol)grp.getField(FIX::FIELD::Symbol)).getString().c_str()); if (grp.isSetField(FIX::FIELD::SecurityExchange) ) - ddsMsg.c_NoRelatedSym[NoRelatedSym_group_cnt_index].SecurityExchange = CORBA::string_dup(((FIX::SecurityExchange)grp.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); + ddsMsg.c_NoRelatedSym()[NoRelatedSym_group_cnt_index].SecurityExchange ( ((FIX::SecurityExchange)grp.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); NoRelatedSym_group_cnt_index++; }; @@ -62,31 +62,31 @@ void MarketDataRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedAT void MarketDataRequestAdapter::DDS2FIX(const DistributedATS_MarketDataRequest::MarketDataRequest& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.MDReqID.in(), FIX::FIELD::MDReqID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.MDReqID(), FIX::FIELD::MDReqID, fixMsg); - FIX::SubscriptionRequestType fixSubscriptionRequestType(ddsMsg.SubscriptionRequestType); + FIX::SubscriptionRequestType fixSubscriptionRequestType(ddsMsg.SubscriptionRequestType()); fixMsg.setField(fixSubscriptionRequestType); - FIX::MarketDepth fixMarketDepth(ddsMsg.MarketDepth); + FIX::MarketDepth fixMarketDepth(ddsMsg.MarketDepth()); fixMsg.setField(fixMarketDepth); - for ( long NoMDEntryTypes_group_cnt_index = 0; NoMDEntryTypes_group_cnt_index - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class MarketDataRequestAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_MarketDataRequest::MarketDataRequest& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_MarketDataRequest::MarketDataRequest& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/MarketDataRequestCdrAux.hpp b/GenTools/idl/MarketDataRequestCdrAux.hpp new file mode 100644 index 0000000..a35ad33 --- /dev/null +++ b/GenTools/idl/MarketDataRequestCdrAux.hpp @@ -0,0 +1,63 @@ +// 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 MarketDataRequestCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUESTCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUESTCDRAUX_HPP + +#include "MarketDataRequest.hpp" + +constexpr uint32_t DistributedATS_MarketDataRequest_NoMDEntryTypes_max_cdr_typesize {5UL}; +constexpr uint32_t DistributedATS_MarketDataRequest_NoMDEntryTypes_max_key_cdr_typesize {0UL}; + + + +constexpr uint32_t DistributedATS_MarketDataRequest_NoRelatedSym_max_cdr_typesize {524UL}; +constexpr uint32_t DistributedATS_MarketDataRequest_NoRelatedSym_max_key_cdr_typesize {0UL}; + + +constexpr uint32_t DistributedATS_MarketDataRequest_MarketDataRequest_max_cdr_typesize {2908UL}; +constexpr uint32_t DistributedATS_MarketDataRequest_MarketDataRequest_max_key_cdr_typesize {0UL}; + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataRequest::NoMDEntryTypes& data); + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataRequest::NoRelatedSym& data); + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataRequest::MarketDataRequest& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUESTCDRAUX_HPP + diff --git a/GenTools/idl/MarketDataRequestCdrAux.ipp b/GenTools/idl/MarketDataRequestCdrAux.ipp new file mode 100644 index 0000000..4f11f64 --- /dev/null +++ b/GenTools/idl/MarketDataRequestCdrAux.ipp @@ -0,0 +1,413 @@ +// 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 MarketDataRequestCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUESTCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUESTCDRAUX_IPP + +#include "MarketDataRequestCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_MarketDataRequest::NoMDEntryTypes& data, + size_t& current_alignment) +{ + using namespace DistributedATS_MarketDataRequest; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.MDEntryType(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataRequest::NoMDEntryTypes& data) +{ + using namespace DistributedATS_MarketDataRequest; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.MDEntryType() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_MarketDataRequest::NoMDEntryTypes& data) +{ + using namespace DistributedATS_MarketDataRequest; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.MDEntryType(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataRequest::NoMDEntryTypes& data) +{ + using namespace DistributedATS_MarketDataRequest; + + static_cast(scdr); + static_cast(data); + scdr << data.MDEntryType(); + +} + + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_MarketDataRequest::NoRelatedSym& data, + size_t& current_alignment) +{ + using namespace DistributedATS_MarketDataRequest; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.Symbol(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.SecurityExchange(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataRequest::NoRelatedSym& data) +{ + using namespace DistributedATS_MarketDataRequest; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.Symbol() + << eprosima::fastcdr::MemberId(1) << data.SecurityExchange() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_MarketDataRequest::NoRelatedSym& data) +{ + using namespace DistributedATS_MarketDataRequest; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.Symbol(); + break; + + case 1: + dcdr >> data.SecurityExchange(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataRequest::NoRelatedSym& data) +{ + using namespace DistributedATS_MarketDataRequest; + + static_cast(scdr); + static_cast(data); + scdr << data.Symbol(); + + scdr << data.SecurityExchange(); + +} + + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_MarketDataRequest::MarketDataRequest& data, + size_t& current_alignment) +{ + using namespace DistributedATS_MarketDataRequest; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.MDReqID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.SubscriptionRequestType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.MarketDepth(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.c_NoMDEntryTypes(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(9), + data.c_NoRelatedSym(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataRequest::MarketDataRequest& data) +{ + using namespace DistributedATS_MarketDataRequest; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.MDReqID() + << eprosima::fastcdr::MemberId(6) << data.SubscriptionRequestType() + << eprosima::fastcdr::MemberId(7) << data.MarketDepth() + << eprosima::fastcdr::MemberId(8) << data.c_NoMDEntryTypes() + << eprosima::fastcdr::MemberId(9) << data.c_NoRelatedSym() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_MarketDataRequest::MarketDataRequest& data) +{ + using namespace DistributedATS_MarketDataRequest; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.MDReqID(); + break; + + case 6: + dcdr >> data.SubscriptionRequestType(); + break; + + case 7: + dcdr >> data.MarketDepth(); + break; + + case 8: + dcdr >> data.c_NoMDEntryTypes(); + break; + + case 9: + dcdr >> data.c_NoRelatedSym(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataRequest::MarketDataRequest& data) +{ + using namespace DistributedATS_MarketDataRequest; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.MDReqID(); + + scdr << data.SubscriptionRequestType(); + + scdr << data.MarketDepth(); + + scdr << data.c_NoMDEntryTypes(); + + scdr << data.c_NoRelatedSym(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUESTCDRAUX_IPP + diff --git a/GenTools/idl/MarketDataRequestLogger.hpp b/GenTools/idl/MarketDataRequestLogger.hpp index 5475363..0e8648c 100644 --- a/GenTools/idl/MarketDataRequestLogger.hpp +++ b/GenTools/idl/MarketDataRequestLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __MarketDataRequestLogger_h__ -#define __MarketDataRequestLogger_h__ - -#include "MarketDataRequestTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,21 +10,27 @@ class MarketDataRequestLogger static void log(std::ostream & out, DistributedATS_MarketDataRequest::MarketDataRequest& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : MarketDataRequest { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.MDReqID : " << ddsMsg.MDReqID << std::endl - << "ddsMsg.SubscriptionRequestType : " << ddsMsg.SubscriptionRequestType << std::endl - << "ddsMsg.MarketDepth : " << ddsMsg.MarketDepth << std::endl + << "ddsMsg.MDReqID : " << ddsMsg.MDReqID() << std::endl + << "ddsMsg.SubscriptionRequestType : " << ddsMsg.SubscriptionRequestType() << std::endl + << "ddsMsg.MarketDepth : " << ddsMsg.MarketDepth() << std::endl ;out << "ddsMsg.c_NoMDEntryTypes" << std::endl; out << "{" << std::endl; - for ( int tt = 0; tt < ddsMsg.c_NoMDEntryTypes.length(); tt++) + for ( int tt = 0; tt < ddsMsg.c_NoMDEntryTypes().size(); tt++) { - ;out << "ddsMsg.c_NoMDEntryTypes[" << tt << "].MDEntryType : " << ddsMsg.c_NoMDEntryTypes[tt].MDEntryType << std::endl; + ;out << "ddsMsg.c_NoMDEntryTypes()[" << tt << "].MDEntryType : " << ddsMsg.c_NoMDEntryTypes()[tt].MDEntryType() << std::endl; }; ;out << "}" << std::endl; @@ -35,11 +38,11 @@ class MarketDataRequestLogger ;out << "ddsMsg.c_NoRelatedSym" << std::endl; out << "{" << std::endl; - for ( int tt = 0; tt < ddsMsg.c_NoRelatedSym.length(); tt++) + for ( int tt = 0; tt < ddsMsg.c_NoRelatedSym().size(); tt++) { - ;out << "ddsMsg.c_NoRelatedSym[" << tt << "].Symbol : " << ddsMsg.c_NoRelatedSym[tt].Symbol << std::endl; - ;out << "ddsMsg.c_NoRelatedSym[" << tt << "].SecurityExchange : " << ddsMsg.c_NoRelatedSym[tt].SecurityExchange << std::endl; + ;out << "ddsMsg.c_NoRelatedSym()[" << tt << "].Symbol : " << ddsMsg.c_NoRelatedSym()[tt].Symbol() << std::endl; + ;out << "ddsMsg.c_NoRelatedSym()[" << tt << "].SecurityExchange : " << ddsMsg.c_NoRelatedSym()[tt].SecurityExchange() << std::endl; }; ;out << "}" << std::endl; @@ -47,6 +50,3 @@ class MarketDataRequestLogger out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/MarketDataRequestPubSubTypes.cxx b/GenTools/idl/MarketDataRequestPubSubTypes.cxx new file mode 100644 index 0000000..0f05a26 --- /dev/null +++ b/GenTools/idl/MarketDataRequestPubSubTypes.cxx @@ -0,0 +1,585 @@ +// 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 MarketDataRequestPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "MarketDataRequestPubSubTypes.hpp" + +#include +#include + +#include "MarketDataRequestCdrAux.hpp" +#include "MarketDataRequestTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_MarketDataRequest { + NoMDEntryTypesPubSubType::NoMDEntryTypesPubSubType() + { + set_name("DistributedATS_MarketDataRequest::NoMDEntryTypes"); + uint32_t type_size = DistributedATS_MarketDataRequest_NoMDEntryTypes_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_MarketDataRequest_NoMDEntryTypes_max_key_cdr_typesize > 16 ? DistributedATS_MarketDataRequest_NoMDEntryTypes_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + NoMDEntryTypesPubSubType::~NoMDEntryTypesPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool NoMDEntryTypesPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const NoMDEntryTypes* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool NoMDEntryTypesPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + NoMDEntryTypes* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t NoMDEntryTypesPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* NoMDEntryTypesPubSubType::create_data() + { + return reinterpret_cast(new NoMDEntryTypes()); + } + + void NoMDEntryTypesPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool NoMDEntryTypesPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + NoMDEntryTypes data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool NoMDEntryTypesPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const NoMDEntryTypes* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_MarketDataRequest_NoMDEntryTypes_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_MarketDataRequest_NoMDEntryTypes_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void NoMDEntryTypesPubSubType::register_type_object_representation() + { + register_NoMDEntryTypes_type_identifier(type_identifiers_); + } + + NoRelatedSymPubSubType::NoRelatedSymPubSubType() + { + set_name("DistributedATS_MarketDataRequest::NoRelatedSym"); + uint32_t type_size = DistributedATS_MarketDataRequest_NoRelatedSym_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_MarketDataRequest_NoRelatedSym_max_key_cdr_typesize > 16 ? DistributedATS_MarketDataRequest_NoRelatedSym_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + NoRelatedSymPubSubType::~NoRelatedSymPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool NoRelatedSymPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const NoRelatedSym* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool NoRelatedSymPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + NoRelatedSym* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t NoRelatedSymPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* NoRelatedSymPubSubType::create_data() + { + return reinterpret_cast(new NoRelatedSym()); + } + + void NoRelatedSymPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool NoRelatedSymPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + NoRelatedSym data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool NoRelatedSymPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const NoRelatedSym* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_MarketDataRequest_NoRelatedSym_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_MarketDataRequest_NoRelatedSym_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void NoRelatedSymPubSubType::register_type_object_representation() + { + register_NoRelatedSym_type_identifier(type_identifiers_); + } + + MarketDataRequestPubSubType::MarketDataRequestPubSubType() + { + set_name("DistributedATS_MarketDataRequest::MarketDataRequest"); + uint32_t type_size = DistributedATS_MarketDataRequest_MarketDataRequest_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_MarketDataRequest_MarketDataRequest_max_key_cdr_typesize > 16 ? DistributedATS_MarketDataRequest_MarketDataRequest_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + MarketDataRequestPubSubType::~MarketDataRequestPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool MarketDataRequestPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const MarketDataRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool MarketDataRequestPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + MarketDataRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t MarketDataRequestPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* MarketDataRequestPubSubType::create_data() + { + return reinterpret_cast(new MarketDataRequest()); + } + + void MarketDataRequestPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool MarketDataRequestPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + MarketDataRequest data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool MarketDataRequestPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const MarketDataRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_MarketDataRequest_MarketDataRequest_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_MarketDataRequest_MarketDataRequest_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void MarketDataRequestPubSubType::register_type_object_representation() + { + register_MarketDataRequest_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_MarketDataRequest + + +// Include auxiliary functions like for serializing/deserializing. +#include "MarketDataRequestCdrAux.ipp" diff --git a/GenTools/idl/MarketDataRequestPubSubTypes.hpp b/GenTools/idl/MarketDataRequestPubSubTypes.hpp new file mode 100644 index 0000000..b599fa5 --- /dev/null +++ b/GenTools/idl/MarketDataRequestPubSubTypes.hpp @@ -0,0 +1,291 @@ +// 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 MarketDataRequestPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUEST_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUEST_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "MarketDataRequest.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated MarketDataRequest is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_MarketDataRequest +{ + + /*! + * @brief This class represents the TopicDataType of the type NoMDEntryTypes defined by the user in the IDL file. + * @ingroup MarketDataRequest + */ + class NoMDEntryTypesPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef NoMDEntryTypes type; + + eProsima_user_DllExport NoMDEntryTypesPubSubType(); + + eProsima_user_DllExport ~NoMDEntryTypesPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return true; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; + typedef std::vector NoMDEntryTypesSeq; + + /*! + * @brief This class represents the TopicDataType of the type NoRelatedSym defined by the user in the IDL file. + * @ingroup MarketDataRequest + */ + class NoRelatedSymPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef NoRelatedSym type; + + eProsima_user_DllExport NoRelatedSymPubSubType(); + + eProsima_user_DllExport ~NoRelatedSymPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; + typedef std::vector NoRelatedSymSeq; + + /*! + * @brief This class represents the TopicDataType of the type MarketDataRequest defined by the user in the IDL file. + * @ingroup MarketDataRequest + */ + class MarketDataRequestPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef MarketDataRequest type; + + eProsima_user_DllExport MarketDataRequestPubSubType(); + + eProsima_user_DllExport ~MarketDataRequestPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_MarketDataRequest + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUEST_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/MarketDataRequestTypeObjectSupport.cxx b/GenTools/idl/MarketDataRequestTypeObjectSupport.cxx new file mode 100644 index 0000000..8c5920a --- /dev/null +++ b/GenTools/idl/MarketDataRequestTypeObjectSupport.cxx @@ -0,0 +1,732 @@ +// 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 MarketDataRequestTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "MarketDataRequestTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "MarketDataRequest.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_MarketDataRequest { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_NoMDEntryTypes_type_identifier( + TypeIdentifierPair& type_ids_NoMDEntryTypes) +{ + + ReturnCode_t return_code_NoMDEntryTypes {eprosima::fastdds::dds::RETCODE_OK}; + return_code_NoMDEntryTypes = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataRequest::NoMDEntryTypes", type_ids_NoMDEntryTypes); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoMDEntryTypes) + { + StructTypeFlag struct_flags_NoMDEntryTypes = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_NoMDEntryTypes = "DistributedATS_MarketDataRequest::NoMDEntryTypes"; + eprosima::fastcdr::optional type_ann_builtin_NoMDEntryTypes; + eprosima::fastcdr::optional ann_custom_NoMDEntryTypes; + CompleteTypeDetail detail_NoMDEntryTypes = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_NoMDEntryTypes, ann_custom_NoMDEntryTypes, type_name_NoMDEntryTypes.to_string()); + CompleteStructHeader header_NoMDEntryTypes; + header_NoMDEntryTypes = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_NoMDEntryTypes); + CompleteStructMemberSeq member_seq_NoMDEntryTypes; + { + TypeIdentifierPair type_ids_MDEntryType; + ReturnCode_t return_code_MDEntryType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MDEntryType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_MDEntryType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MDEntryType) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MDEntryType Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MDEntryType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MDEntryType = 0x00000000; + bool common_MDEntryType_ec {false}; + CommonStructMember common_MDEntryType {TypeObjectUtils::build_common_struct_member(member_id_MDEntryType, member_flags_MDEntryType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MDEntryType, common_MDEntryType_ec))}; + if (!common_MDEntryType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MDEntryType member TypeIdentifier inconsistent."); + return; + } + MemberName name_MDEntryType = "MDEntryType"; + eprosima::fastcdr::optional member_ann_builtin_MDEntryType; + ann_custom_NoMDEntryTypes.reset(); + CompleteMemberDetail detail_MDEntryType = TypeObjectUtils::build_complete_member_detail(name_MDEntryType, member_ann_builtin_MDEntryType, ann_custom_NoMDEntryTypes); + CompleteStructMember member_MDEntryType = TypeObjectUtils::build_complete_struct_member(common_MDEntryType, detail_MDEntryType); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntryTypes, member_MDEntryType); + } + CompleteStructType struct_type_NoMDEntryTypes = TypeObjectUtils::build_complete_struct_type(struct_flags_NoMDEntryTypes, header_NoMDEntryTypes, member_seq_NoMDEntryTypes); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_NoMDEntryTypes, type_name_NoMDEntryTypes.to_string(), type_ids_NoMDEntryTypes)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_MarketDataRequest::NoMDEntryTypes already registered in TypeObjectRegistry for a different type."); + } + } +} +void register_NoMDEntryTypesSeq_type_identifier( + TypeIdentifierPair& type_ids_NoMDEntryTypesSeq) +{ + ReturnCode_t return_code_NoMDEntryTypesSeq {eprosima::fastdds::dds::RETCODE_OK}; + return_code_NoMDEntryTypesSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataRequest::NoMDEntryTypesSeq", type_ids_NoMDEntryTypesSeq); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoMDEntryTypesSeq) + { + AliasTypeFlag alias_flags_NoMDEntryTypesSeq = 0; + QualifiedTypeName type_name_NoMDEntryTypesSeq = "DistributedATS_MarketDataRequest::NoMDEntryTypesSeq"; + eprosima::fastcdr::optional type_ann_builtin_NoMDEntryTypesSeq; + eprosima::fastcdr::optional ann_custom_NoMDEntryTypesSeq; + CompleteTypeDetail detail_NoMDEntryTypesSeq = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_NoMDEntryTypesSeq, ann_custom_NoMDEntryTypesSeq, type_name_NoMDEntryTypesSeq.to_string()); + CompleteAliasHeader header_NoMDEntryTypesSeq = TypeObjectUtils::build_complete_alias_header(detail_NoMDEntryTypesSeq); + AliasMemberFlag related_flags_NoMDEntryTypesSeq = 0; + return_code_NoMDEntryTypesSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded", type_ids_NoMDEntryTypesSeq); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoMDEntryTypesSeq) + { + return_code_NoMDEntryTypesSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataRequest::NoMDEntryTypes", type_ids_NoMDEntryTypesSeq); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoMDEntryTypesSeq) + { + DistributedATS_MarketDataRequest::register_NoMDEntryTypes_type_identifier(type_ids_NoMDEntryTypesSeq); + } + bool element_identifier_anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded_ec {false}; + TypeIdentifier* element_identifier_anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded {new TypeIdentifier(TypeObjectUtils::retrieve_complete_type_identifier(type_ids_NoMDEntryTypesSeq, element_identifier_anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded_ec))}; + if (!element_identifier_anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Sequence element TypeIdentifier inconsistent."); + return; + } + EquivalenceKind equiv_kind_anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded = EK_COMPLETE; + if (TK_NONE == type_ids_NoMDEntryTypesSeq.type_identifier2()._d()) + { + equiv_kind_anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded = EK_BOTH; + } + CollectionElementFlag element_flags_anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded = 0; + PlainCollectionHeader header_anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded = TypeObjectUtils::build_plain_collection_header(equiv_kind_anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded, element_flags_anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded); + { + SBound bound = 0; + PlainSequenceSElemDefn seq_sdefn = TypeObjectUtils::build_plain_sequence_s_elem_defn(header_anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded, bound, + eprosima::fastcdr::external(element_identifier_anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded)); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_sequence_type_identifier(seq_sdefn, "anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded", type_ids_NoMDEntryTypesSeq)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_sequence_DistributedATS_MarketDataRequest_NoMDEntryTypes_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + bool common_NoMDEntryTypesSeq_ec {false}; + CommonAliasBody common_NoMDEntryTypesSeq {TypeObjectUtils::build_common_alias_body(related_flags_NoMDEntryTypesSeq, + TypeObjectUtils::retrieve_complete_type_identifier(type_ids_NoMDEntryTypesSeq, common_NoMDEntryTypesSeq_ec))}; + if (!common_NoMDEntryTypesSeq_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "DistributedATS_MarketDataRequest::NoMDEntryTypesSeq related TypeIdentifier inconsistent."); + return; + } + eprosima::fastcdr::optional member_ann_builtin_NoMDEntryTypesSeq; + ann_custom_NoMDEntryTypesSeq.reset(); + CompleteAliasBody body_NoMDEntryTypesSeq = TypeObjectUtils::build_complete_alias_body(common_NoMDEntryTypesSeq, + member_ann_builtin_NoMDEntryTypesSeq, ann_custom_NoMDEntryTypesSeq); + CompleteAliasType alias_type_NoMDEntryTypesSeq = TypeObjectUtils::build_complete_alias_type(alias_flags_NoMDEntryTypesSeq, + header_NoMDEntryTypesSeq, body_NoMDEntryTypesSeq); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_alias_type_object(alias_type_NoMDEntryTypesSeq, + type_name_NoMDEntryTypesSeq.to_string(), type_ids_NoMDEntryTypesSeq)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_MarketDataRequest::NoMDEntryTypesSeq already registered in TypeObjectRegistry for a different type."); + } + } +} + +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_NoRelatedSym_type_identifier( + TypeIdentifierPair& type_ids_NoRelatedSym) +{ + + ReturnCode_t return_code_NoRelatedSym {eprosima::fastdds::dds::RETCODE_OK}; + return_code_NoRelatedSym = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataRequest::NoRelatedSym", type_ids_NoRelatedSym); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoRelatedSym) + { + StructTypeFlag struct_flags_NoRelatedSym = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_NoRelatedSym = "DistributedATS_MarketDataRequest::NoRelatedSym"; + eprosima::fastcdr::optional type_ann_builtin_NoRelatedSym; + eprosima::fastcdr::optional ann_custom_NoRelatedSym; + CompleteTypeDetail detail_NoRelatedSym = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_NoRelatedSym, ann_custom_NoRelatedSym, type_name_NoRelatedSym.to_string()); + CompleteStructHeader header_NoRelatedSym; + header_NoRelatedSym = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_NoRelatedSym); + CompleteStructMemberSeq member_seq_NoRelatedSym; + { + TypeIdentifierPair type_ids_Symbol; + ReturnCode_t return_code_Symbol {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Symbol = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Symbol); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Symbol) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Symbol)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Symbol = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Symbol = 0x00000000; + bool common_Symbol_ec {false}; + CommonStructMember common_Symbol {TypeObjectUtils::build_common_struct_member(member_id_Symbol, member_flags_Symbol, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Symbol, common_Symbol_ec))}; + if (!common_Symbol_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Symbol member TypeIdentifier inconsistent."); + return; + } + MemberName name_Symbol = "Symbol"; + eprosima::fastcdr::optional member_ann_builtin_Symbol; + ann_custom_NoRelatedSym.reset(); + CompleteMemberDetail detail_Symbol = TypeObjectUtils::build_complete_member_detail(name_Symbol, member_ann_builtin_Symbol, ann_custom_NoRelatedSym); + CompleteStructMember member_Symbol = TypeObjectUtils::build_complete_struct_member(common_Symbol, detail_Symbol); + TypeObjectUtils::add_complete_struct_member(member_seq_NoRelatedSym, member_Symbol); + } + { + TypeIdentifierPair type_ids_SecurityExchange; + ReturnCode_t return_code_SecurityExchange {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityExchange = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityExchange); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityExchange) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityExchange)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityExchange = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityExchange = 0x00000001; + bool common_SecurityExchange_ec {false}; + CommonStructMember common_SecurityExchange {TypeObjectUtils::build_common_struct_member(member_id_SecurityExchange, member_flags_SecurityExchange, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityExchange, common_SecurityExchange_ec))}; + if (!common_SecurityExchange_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityExchange member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityExchange = "SecurityExchange"; + eprosima::fastcdr::optional member_ann_builtin_SecurityExchange; + ann_custom_NoRelatedSym.reset(); + CompleteMemberDetail detail_SecurityExchange = TypeObjectUtils::build_complete_member_detail(name_SecurityExchange, member_ann_builtin_SecurityExchange, ann_custom_NoRelatedSym); + CompleteStructMember member_SecurityExchange = TypeObjectUtils::build_complete_struct_member(common_SecurityExchange, detail_SecurityExchange); + TypeObjectUtils::add_complete_struct_member(member_seq_NoRelatedSym, member_SecurityExchange); + } + CompleteStructType struct_type_NoRelatedSym = TypeObjectUtils::build_complete_struct_type(struct_flags_NoRelatedSym, header_NoRelatedSym, member_seq_NoRelatedSym); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_NoRelatedSym, type_name_NoRelatedSym.to_string(), type_ids_NoRelatedSym)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_MarketDataRequest::NoRelatedSym already registered in TypeObjectRegistry for a different type."); + } + } +} +void register_NoRelatedSymSeq_type_identifier( + TypeIdentifierPair& type_ids_NoRelatedSymSeq) +{ + ReturnCode_t return_code_NoRelatedSymSeq {eprosima::fastdds::dds::RETCODE_OK}; + return_code_NoRelatedSymSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataRequest::NoRelatedSymSeq", type_ids_NoRelatedSymSeq); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoRelatedSymSeq) + { + AliasTypeFlag alias_flags_NoRelatedSymSeq = 0; + QualifiedTypeName type_name_NoRelatedSymSeq = "DistributedATS_MarketDataRequest::NoRelatedSymSeq"; + eprosima::fastcdr::optional type_ann_builtin_NoRelatedSymSeq; + eprosima::fastcdr::optional ann_custom_NoRelatedSymSeq; + CompleteTypeDetail detail_NoRelatedSymSeq = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_NoRelatedSymSeq, ann_custom_NoRelatedSymSeq, type_name_NoRelatedSymSeq.to_string()); + CompleteAliasHeader header_NoRelatedSymSeq = TypeObjectUtils::build_complete_alias_header(detail_NoRelatedSymSeq); + AliasMemberFlag related_flags_NoRelatedSymSeq = 0; + return_code_NoRelatedSymSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded", type_ids_NoRelatedSymSeq); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoRelatedSymSeq) + { + return_code_NoRelatedSymSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataRequest::NoRelatedSym", type_ids_NoRelatedSymSeq); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoRelatedSymSeq) + { + DistributedATS_MarketDataRequest::register_NoRelatedSym_type_identifier(type_ids_NoRelatedSymSeq); + } + bool element_identifier_anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded_ec {false}; + TypeIdentifier* element_identifier_anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded {new TypeIdentifier(TypeObjectUtils::retrieve_complete_type_identifier(type_ids_NoRelatedSymSeq, element_identifier_anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded_ec))}; + if (!element_identifier_anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Sequence element TypeIdentifier inconsistent."); + return; + } + EquivalenceKind equiv_kind_anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded = EK_COMPLETE; + if (TK_NONE == type_ids_NoRelatedSymSeq.type_identifier2()._d()) + { + equiv_kind_anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded = EK_BOTH; + } + CollectionElementFlag element_flags_anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded = 0; + PlainCollectionHeader header_anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded = TypeObjectUtils::build_plain_collection_header(equiv_kind_anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded, element_flags_anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded); + { + SBound bound = 0; + PlainSequenceSElemDefn seq_sdefn = TypeObjectUtils::build_plain_sequence_s_elem_defn(header_anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded, bound, + eprosima::fastcdr::external(element_identifier_anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded)); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_sequence_type_identifier(seq_sdefn, "anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded", type_ids_NoRelatedSymSeq)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_sequence_DistributedATS_MarketDataRequest_NoRelatedSym_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + bool common_NoRelatedSymSeq_ec {false}; + CommonAliasBody common_NoRelatedSymSeq {TypeObjectUtils::build_common_alias_body(related_flags_NoRelatedSymSeq, + TypeObjectUtils::retrieve_complete_type_identifier(type_ids_NoRelatedSymSeq, common_NoRelatedSymSeq_ec))}; + if (!common_NoRelatedSymSeq_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "DistributedATS_MarketDataRequest::NoRelatedSymSeq related TypeIdentifier inconsistent."); + return; + } + eprosima::fastcdr::optional member_ann_builtin_NoRelatedSymSeq; + ann_custom_NoRelatedSymSeq.reset(); + CompleteAliasBody body_NoRelatedSymSeq = TypeObjectUtils::build_complete_alias_body(common_NoRelatedSymSeq, + member_ann_builtin_NoRelatedSymSeq, ann_custom_NoRelatedSymSeq); + CompleteAliasType alias_type_NoRelatedSymSeq = TypeObjectUtils::build_complete_alias_type(alias_flags_NoRelatedSymSeq, + header_NoRelatedSymSeq, body_NoRelatedSymSeq); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_alias_type_object(alias_type_NoRelatedSymSeq, + type_name_NoRelatedSymSeq.to_string(), type_ids_NoRelatedSymSeq)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_MarketDataRequest::NoRelatedSymSeq already registered in TypeObjectRegistry for a different type."); + } + } +} + +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_MarketDataRequest_type_identifier( + TypeIdentifierPair& type_ids_MarketDataRequest) +{ + + ReturnCode_t return_code_MarketDataRequest {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MarketDataRequest = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataRequest::MarketDataRequest", type_ids_MarketDataRequest); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MarketDataRequest) + { + StructTypeFlag struct_flags_MarketDataRequest = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_MarketDataRequest = "DistributedATS_MarketDataRequest::MarketDataRequest"; + eprosima::fastcdr::optional type_ann_builtin_MarketDataRequest; + eprosima::fastcdr::optional ann_custom_MarketDataRequest; + CompleteTypeDetail detail_MarketDataRequest = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_MarketDataRequest, ann_custom_MarketDataRequest, type_name_MarketDataRequest.to_string()); + CompleteStructHeader header_MarketDataRequest; + header_MarketDataRequest = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_MarketDataRequest); + CompleteStructMemberSeq member_seq_MarketDataRequest; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_MarketDataRequest.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_MarketDataRequest); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataRequest, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_MarketDataRequest.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_MarketDataRequest); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataRequest, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_MarketDataRequest.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_MarketDataRequest); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataRequest, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_MarketDataRequest.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_MarketDataRequest); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataRequest, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_MarketDataRequest.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_MarketDataRequest); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataRequest, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_MDReqID; + ReturnCode_t return_code_MDReqID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MDReqID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_MDReqID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MDReqID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_MDReqID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_MDReqID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MDReqID = 0x00000005; + bool common_MDReqID_ec {false}; + CommonStructMember common_MDReqID {TypeObjectUtils::build_common_struct_member(member_id_MDReqID, member_flags_MDReqID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MDReqID, common_MDReqID_ec))}; + if (!common_MDReqID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MDReqID member TypeIdentifier inconsistent."); + return; + } + MemberName name_MDReqID = "MDReqID"; + eprosima::fastcdr::optional member_ann_builtin_MDReqID; + ann_custom_MarketDataRequest.reset(); + CompleteMemberDetail detail_MDReqID = TypeObjectUtils::build_complete_member_detail(name_MDReqID, member_ann_builtin_MDReqID, ann_custom_MarketDataRequest); + CompleteStructMember member_MDReqID = TypeObjectUtils::build_complete_struct_member(common_MDReqID, detail_MDReqID); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataRequest, member_MDReqID); + } + { + TypeIdentifierPair type_ids_SubscriptionRequestType; + ReturnCode_t return_code_SubscriptionRequestType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SubscriptionRequestType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_SubscriptionRequestType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SubscriptionRequestType) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "SubscriptionRequestType Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_SubscriptionRequestType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SubscriptionRequestType = 0x00000006; + bool common_SubscriptionRequestType_ec {false}; + CommonStructMember common_SubscriptionRequestType {TypeObjectUtils::build_common_struct_member(member_id_SubscriptionRequestType, member_flags_SubscriptionRequestType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SubscriptionRequestType, common_SubscriptionRequestType_ec))}; + if (!common_SubscriptionRequestType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SubscriptionRequestType member TypeIdentifier inconsistent."); + return; + } + MemberName name_SubscriptionRequestType = "SubscriptionRequestType"; + eprosima::fastcdr::optional member_ann_builtin_SubscriptionRequestType; + ann_custom_MarketDataRequest.reset(); + CompleteMemberDetail detail_SubscriptionRequestType = TypeObjectUtils::build_complete_member_detail(name_SubscriptionRequestType, member_ann_builtin_SubscriptionRequestType, ann_custom_MarketDataRequest); + CompleteStructMember member_SubscriptionRequestType = TypeObjectUtils::build_complete_struct_member(common_SubscriptionRequestType, detail_SubscriptionRequestType); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataRequest, member_SubscriptionRequestType); + } + { + TypeIdentifierPair type_ids_MarketDepth; + ReturnCode_t return_code_MarketDepth {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MarketDepth = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_MarketDepth); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MarketDepth) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MarketDepth Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MarketDepth = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MarketDepth = 0x00000007; + bool common_MarketDepth_ec {false}; + CommonStructMember common_MarketDepth {TypeObjectUtils::build_common_struct_member(member_id_MarketDepth, member_flags_MarketDepth, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MarketDepth, common_MarketDepth_ec))}; + if (!common_MarketDepth_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MarketDepth member TypeIdentifier inconsistent."); + return; + } + MemberName name_MarketDepth = "MarketDepth"; + eprosima::fastcdr::optional member_ann_builtin_MarketDepth; + ann_custom_MarketDataRequest.reset(); + CompleteMemberDetail detail_MarketDepth = TypeObjectUtils::build_complete_member_detail(name_MarketDepth, member_ann_builtin_MarketDepth, ann_custom_MarketDataRequest); + CompleteStructMember member_MarketDepth = TypeObjectUtils::build_complete_struct_member(common_MarketDepth, detail_MarketDepth); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataRequest, member_MarketDepth); + } + { + TypeIdentifierPair type_ids_c_NoMDEntryTypes; + ReturnCode_t return_code_c_NoMDEntryTypes {eprosima::fastdds::dds::RETCODE_OK}; + return_code_c_NoMDEntryTypes = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataRequest::NoMDEntryTypesSeq", type_ids_c_NoMDEntryTypes); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_c_NoMDEntryTypes) + { + DistributedATS_MarketDataRequest::register_NoMDEntryTypesSeq_type_identifier(type_ids_c_NoMDEntryTypes); + } + StructMemberFlag member_flags_c_NoMDEntryTypes = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_c_NoMDEntryTypes = 0x00000008; + bool common_c_NoMDEntryTypes_ec {false}; + CommonStructMember common_c_NoMDEntryTypes {TypeObjectUtils::build_common_struct_member(member_id_c_NoMDEntryTypes, member_flags_c_NoMDEntryTypes, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_c_NoMDEntryTypes, common_c_NoMDEntryTypes_ec))}; + if (!common_c_NoMDEntryTypes_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure c_NoMDEntryTypes member TypeIdentifier inconsistent."); + return; + } + MemberName name_c_NoMDEntryTypes = "c_NoMDEntryTypes"; + eprosima::fastcdr::optional member_ann_builtin_c_NoMDEntryTypes; + ann_custom_MarketDataRequest.reset(); + CompleteMemberDetail detail_c_NoMDEntryTypes = TypeObjectUtils::build_complete_member_detail(name_c_NoMDEntryTypes, member_ann_builtin_c_NoMDEntryTypes, ann_custom_MarketDataRequest); + CompleteStructMember member_c_NoMDEntryTypes = TypeObjectUtils::build_complete_struct_member(common_c_NoMDEntryTypes, detail_c_NoMDEntryTypes); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataRequest, member_c_NoMDEntryTypes); + } + { + TypeIdentifierPair type_ids_c_NoRelatedSym; + ReturnCode_t return_code_c_NoRelatedSym {eprosima::fastdds::dds::RETCODE_OK}; + return_code_c_NoRelatedSym = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataRequest::NoRelatedSymSeq", type_ids_c_NoRelatedSym); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_c_NoRelatedSym) + { + DistributedATS_MarketDataRequest::register_NoRelatedSymSeq_type_identifier(type_ids_c_NoRelatedSym); + } + StructMemberFlag member_flags_c_NoRelatedSym = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_c_NoRelatedSym = 0x00000009; + bool common_c_NoRelatedSym_ec {false}; + CommonStructMember common_c_NoRelatedSym {TypeObjectUtils::build_common_struct_member(member_id_c_NoRelatedSym, member_flags_c_NoRelatedSym, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_c_NoRelatedSym, common_c_NoRelatedSym_ec))}; + if (!common_c_NoRelatedSym_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure c_NoRelatedSym member TypeIdentifier inconsistent."); + return; + } + MemberName name_c_NoRelatedSym = "c_NoRelatedSym"; + eprosima::fastcdr::optional member_ann_builtin_c_NoRelatedSym; + ann_custom_MarketDataRequest.reset(); + CompleteMemberDetail detail_c_NoRelatedSym = TypeObjectUtils::build_complete_member_detail(name_c_NoRelatedSym, member_ann_builtin_c_NoRelatedSym, ann_custom_MarketDataRequest); + CompleteStructMember member_c_NoRelatedSym = TypeObjectUtils::build_complete_struct_member(common_c_NoRelatedSym, detail_c_NoRelatedSym); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataRequest, member_c_NoRelatedSym); + } + CompleteStructType struct_type_MarketDataRequest = TypeObjectUtils::build_complete_struct_type(struct_flags_MarketDataRequest, header_MarketDataRequest, member_seq_MarketDataRequest); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_MarketDataRequest, type_name_MarketDataRequest.to_string(), type_ids_MarketDataRequest)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_MarketDataRequest::MarketDataRequest already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_MarketDataRequest + diff --git a/GenTools/idl/MarketDataRequestTypeObjectSupport.hpp b/GenTools/idl/MarketDataRequestTypeObjectSupport.hpp new file mode 100644 index 0000000..f4003f9 --- /dev/null +++ b/GenTools/idl/MarketDataRequestTypeObjectSupport.hpp @@ -0,0 +1,116 @@ +// 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 MarketDataRequestTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUEST_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUEST_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_MarketDataRequest { +/** + * @brief Register NoMDEntryTypes related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_NoMDEntryTypes_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +/** + * @brief Register NoMDEntryTypesSeq related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_NoMDEntryTypesSeq_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + + + +/** + * @brief Register NoRelatedSym related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_NoRelatedSym_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +/** + * @brief Register NoRelatedSymSeq related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_NoRelatedSymSeq_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + + + +/** + * @brief Register MarketDataRequest related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_MarketDataRequest_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_MarketDataRequest + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATAREQUEST_MARKETDATAREQUEST_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/MarketDataSnapshotFullRefresh.hpp b/GenTools/idl/MarketDataSnapshotFullRefresh.hpp new file mode 100644 index 0000000..72ea39c --- /dev/null +++ b/GenTools/idl/MarketDataSnapshotFullRefresh.hpp @@ -0,0 +1,903 @@ +// 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 MarketDataSnapshotFullRefresh.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESH_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESH_HPP + +#include +#include +#include +#include + +#include +#include "Header.hpp" + +#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(MARKETDATASNAPSHOTFULLREFRESH_SOURCE) +#define MARKETDATASNAPSHOTFULLREFRESH_DllAPI __declspec( dllexport ) +#else +#define MARKETDATASNAPSHOTFULLREFRESH_DllAPI __declspec( dllimport ) +#endif // MARKETDATASNAPSHOTFULLREFRESH_SOURCE +#else +#define MARKETDATASNAPSHOTFULLREFRESH_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define MARKETDATASNAPSHOTFULLREFRESH_DllAPI +#endif // _WIN32 + +namespace DistributedATS_MarketDataSnapshotFullRefresh { + +/*! + * @brief This class represents the structure NoMDEntries defined by the user in the IDL file. + * @ingroup MarketDataSnapshotFullRefresh + */ +class NoMDEntries +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport NoMDEntries() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~NoMDEntries() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object NoMDEntries that will be copied. + */ + eProsima_user_DllExport NoMDEntries( + const NoMDEntries& x) + { + m_MDEntryType = x.m_MDEntryType; + + m_MDEntryPx = x.m_MDEntryPx; + + m_MDEntrySize = x.m_MDEntrySize; + + m_TimeInForce = x.m_TimeInForce; + + m_ExecInst = x.m_ExecInst; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object NoMDEntries that will be copied. + */ + eProsima_user_DllExport NoMDEntries( + NoMDEntries&& x) noexcept + { + m_MDEntryType = x.m_MDEntryType; + m_MDEntryPx = x.m_MDEntryPx; + m_MDEntrySize = x.m_MDEntrySize; + m_TimeInForce = x.m_TimeInForce; + m_ExecInst = std::move(x.m_ExecInst); + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object NoMDEntries that will be copied. + */ + eProsima_user_DllExport NoMDEntries& operator =( + const NoMDEntries& x) + { + + m_MDEntryType = x.m_MDEntryType; + + m_MDEntryPx = x.m_MDEntryPx; + + m_MDEntrySize = x.m_MDEntrySize; + + m_TimeInForce = x.m_TimeInForce; + + m_ExecInst = x.m_ExecInst; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object NoMDEntries that will be copied. + */ + eProsima_user_DllExport NoMDEntries& operator =( + NoMDEntries&& x) noexcept + { + + m_MDEntryType = x.m_MDEntryType; + m_MDEntryPx = x.m_MDEntryPx; + m_MDEntrySize = x.m_MDEntrySize; + m_TimeInForce = x.m_TimeInForce; + m_ExecInst = std::move(x.m_ExecInst); + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x NoMDEntries object to compare. + */ + eProsima_user_DllExport bool operator ==( + const NoMDEntries& x) const + { + return (m_MDEntryType == x.m_MDEntryType && + m_MDEntryPx == x.m_MDEntryPx && + m_MDEntrySize == x.m_MDEntrySize && + m_TimeInForce == x.m_TimeInForce && + m_ExecInst == x.m_ExecInst && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x NoMDEntries object to compare. + */ + eProsima_user_DllExport bool operator !=( + const NoMDEntries& x) const + { + return !(*this == x); + } + + /*! + * @brief This function sets a value in member MDEntryType + * @param _MDEntryType New value for member MDEntryType + */ + eProsima_user_DllExport void MDEntryType( + char _MDEntryType) + { + m_MDEntryType = _MDEntryType; + } + + /*! + * @brief This function returns the value of member MDEntryType + * @return Value of member MDEntryType + */ + eProsima_user_DllExport char MDEntryType() const + { + return m_MDEntryType; + } + + /*! + * @brief This function returns a reference to member MDEntryType + * @return Reference to member MDEntryType + */ + eProsima_user_DllExport char& MDEntryType() + { + return m_MDEntryType; + } + + + /*! + * @brief This function sets a value in member MDEntryPx + * @param _MDEntryPx New value for member MDEntryPx + */ + eProsima_user_DllExport void MDEntryPx( + float _MDEntryPx) + { + m_MDEntryPx = _MDEntryPx; + } + + /*! + * @brief This function returns the value of member MDEntryPx + * @return Value of member MDEntryPx + */ + eProsima_user_DllExport float MDEntryPx() const + { + return m_MDEntryPx; + } + + /*! + * @brief This function returns a reference to member MDEntryPx + * @return Reference to member MDEntryPx + */ + eProsima_user_DllExport float& MDEntryPx() + { + return m_MDEntryPx; + } + + + /*! + * @brief This function sets a value in member MDEntrySize + * @param _MDEntrySize New value for member MDEntrySize + */ + eProsima_user_DllExport void MDEntrySize( + int32_t _MDEntrySize) + { + m_MDEntrySize = _MDEntrySize; + } + + /*! + * @brief This function returns the value of member MDEntrySize + * @return Value of member MDEntrySize + */ + eProsima_user_DllExport int32_t MDEntrySize() const + { + return m_MDEntrySize; + } + + /*! + * @brief This function returns a reference to member MDEntrySize + * @return Reference to member MDEntrySize + */ + eProsima_user_DllExport int32_t& MDEntrySize() + { + return m_MDEntrySize; + } + + + /*! + * @brief This function sets a value in member TimeInForce + * @param _TimeInForce New value for member TimeInForce + */ + eProsima_user_DllExport void TimeInForce( + char _TimeInForce) + { + m_TimeInForce = _TimeInForce; + } + + /*! + * @brief This function returns the value of member TimeInForce + * @return Value of member TimeInForce + */ + eProsima_user_DllExport char TimeInForce() const + { + return m_TimeInForce; + } + + /*! + * @brief This function returns a reference to member TimeInForce + * @return Reference to member TimeInForce + */ + eProsima_user_DllExport char& TimeInForce() + { + return m_TimeInForce; + } + + + /*! + * @brief This function copies the value in member ExecInst + * @param _ExecInst New value to be copied in member ExecInst + */ + eProsima_user_DllExport void ExecInst( + const std::string& _ExecInst) + { + m_ExecInst = _ExecInst; + } + + /*! + * @brief This function moves the value in member ExecInst + * @param _ExecInst New value to be moved in member ExecInst + */ + eProsima_user_DllExport void ExecInst( + std::string&& _ExecInst) + { + m_ExecInst = std::move(_ExecInst); + } + + /*! + * @brief This function returns a constant reference to member ExecInst + * @return Constant reference to member ExecInst + */ + eProsima_user_DllExport const std::string& ExecInst() const + { + return m_ExecInst; + } + + /*! + * @brief This function returns a reference to member ExecInst + * @return Reference to member ExecInst + */ + eProsima_user_DllExport std::string& ExecInst() + { + return m_ExecInst; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + char m_MDEntryType{0}; + float m_MDEntryPx{0.0}; + int32_t m_MDEntrySize{0}; + char m_TimeInForce{0}; + std::string m_ExecInst; + std::string m_Text; + +}; +typedef std::vector NoMDEntriesSeq; + +/*! + * @brief This class represents the structure MarketDataSnapshotFullRefresh defined by the user in the IDL file. + * @ingroup MarketDataSnapshotFullRefresh + */ +class MarketDataSnapshotFullRefresh +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport MarketDataSnapshotFullRefresh() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~MarketDataSnapshotFullRefresh() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object MarketDataSnapshotFullRefresh that will be copied. + */ + eProsima_user_DllExport MarketDataSnapshotFullRefresh( + const MarketDataSnapshotFullRefresh& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_MDReqID = x.m_MDReqID; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_c_NoMDEntries = x.m_c_NoMDEntries; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object MarketDataSnapshotFullRefresh that will be copied. + */ + eProsima_user_DllExport MarketDataSnapshotFullRefresh( + MarketDataSnapshotFullRefresh&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_MDReqID = std::move(x.m_MDReqID); + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_c_NoMDEntries = std::move(x.m_c_NoMDEntries); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object MarketDataSnapshotFullRefresh that will be copied. + */ + eProsima_user_DllExport MarketDataSnapshotFullRefresh& operator =( + const MarketDataSnapshotFullRefresh& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_MDReqID = x.m_MDReqID; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_c_NoMDEntries = x.m_c_NoMDEntries; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object MarketDataSnapshotFullRefresh that will be copied. + */ + eProsima_user_DllExport MarketDataSnapshotFullRefresh& operator =( + MarketDataSnapshotFullRefresh&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_MDReqID = std::move(x.m_MDReqID); + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_c_NoMDEntries = std::move(x.m_c_NoMDEntries); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x MarketDataSnapshotFullRefresh object to compare. + */ + eProsima_user_DllExport bool operator ==( + const MarketDataSnapshotFullRefresh& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_MDReqID == x.m_MDReqID && + m_Symbol == x.m_Symbol && + m_SecurityExchange == x.m_SecurityExchange && + m_c_NoMDEntries == x.m_c_NoMDEntries); + } + + /*! + * @brief Comparison operator. + * @param x MarketDataSnapshotFullRefresh object to compare. + */ + eProsima_user_DllExport bool operator !=( + const MarketDataSnapshotFullRefresh& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member MDReqID + * @param _MDReqID New value to be copied in member MDReqID + */ + eProsima_user_DllExport void MDReqID( + const std::string& _MDReqID) + { + m_MDReqID = _MDReqID; + } + + /*! + * @brief This function moves the value in member MDReqID + * @param _MDReqID New value to be moved in member MDReqID + */ + eProsima_user_DllExport void MDReqID( + std::string&& _MDReqID) + { + m_MDReqID = std::move(_MDReqID); + } + + /*! + * @brief This function returns a constant reference to member MDReqID + * @return Constant reference to member MDReqID + */ + eProsima_user_DllExport const std::string& MDReqID() const + { + return m_MDReqID; + } + + /*! + * @brief This function returns a reference to member MDReqID + * @return Reference to member MDReqID + */ + eProsima_user_DllExport std::string& MDReqID() + { + return m_MDReqID; + } + + + /*! + * @brief This function copies the value in member Symbol + * @param _Symbol New value to be copied in member Symbol + */ + eProsima_user_DllExport void Symbol( + const std::string& _Symbol) + { + m_Symbol = _Symbol; + } + + /*! + * @brief This function moves the value in member Symbol + * @param _Symbol New value to be moved in member Symbol + */ + eProsima_user_DllExport void Symbol( + std::string&& _Symbol) + { + m_Symbol = std::move(_Symbol); + } + + /*! + * @brief This function returns a constant reference to member Symbol + * @return Constant reference to member Symbol + */ + eProsima_user_DllExport const std::string& Symbol() const + { + return m_Symbol; + } + + /*! + * @brief This function returns a reference to member Symbol + * @return Reference to member Symbol + */ + eProsima_user_DllExport std::string& Symbol() + { + return m_Symbol; + } + + + /*! + * @brief This function copies the value in member SecurityExchange + * @param _SecurityExchange New value to be copied in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + const std::string& _SecurityExchange) + { + m_SecurityExchange = _SecurityExchange; + } + + /*! + * @brief This function moves the value in member SecurityExchange + * @param _SecurityExchange New value to be moved in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + std::string&& _SecurityExchange) + { + m_SecurityExchange = std::move(_SecurityExchange); + } + + /*! + * @brief This function returns a constant reference to member SecurityExchange + * @return Constant reference to member SecurityExchange + */ + eProsima_user_DllExport const std::string& SecurityExchange() const + { + return m_SecurityExchange; + } + + /*! + * @brief This function returns a reference to member SecurityExchange + * @return Reference to member SecurityExchange + */ + eProsima_user_DllExport std::string& SecurityExchange() + { + return m_SecurityExchange; + } + + + /*! + * @brief This function copies the value in member c_NoMDEntries + * @param _c_NoMDEntries New value to be copied in member c_NoMDEntries + */ + eProsima_user_DllExport void c_NoMDEntries( + const NoMDEntriesSeq& _c_NoMDEntries) + { + m_c_NoMDEntries = _c_NoMDEntries; + } + + /*! + * @brief This function moves the value in member c_NoMDEntries + * @param _c_NoMDEntries New value to be moved in member c_NoMDEntries + */ + eProsima_user_DllExport void c_NoMDEntries( + NoMDEntriesSeq&& _c_NoMDEntries) + { + m_c_NoMDEntries = std::move(_c_NoMDEntries); + } + + /*! + * @brief This function returns a constant reference to member c_NoMDEntries + * @return Constant reference to member c_NoMDEntries + */ + eProsima_user_DllExport const NoMDEntriesSeq& c_NoMDEntries() const + { + return m_c_NoMDEntries; + } + + /*! + * @brief This function returns a reference to member c_NoMDEntries + * @return Reference to member c_NoMDEntries + */ + eProsima_user_DllExport NoMDEntriesSeq& c_NoMDEntries() + { + return m_c_NoMDEntries; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_MDReqID; + std::string m_Symbol; + std::string m_SecurityExchange; + NoMDEntriesSeq m_c_NoMDEntries; + +}; + +} // namespace DistributedATS_MarketDataSnapshotFullRefresh + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESH_HPP_ + + diff --git a/GenTools/idl/MarketDataSnapshotFullRefresh.idl b/GenTools/idl/MarketDataSnapshotFullRefresh.idl index 1c908eb..01777a7 100644 --- a/GenTools/idl/MarketDataSnapshotFullRefresh.idl +++ b/GenTools/idl/MarketDataSnapshotFullRefresh.idl @@ -1,4 +1,4 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_MarketDataSnapshotFullRefresh @@ -15,10 +15,17 @@ module DistributedATS_MarketDataSnapshotFullRefresh }; typedef sequence NoMDEntriesSeq; - @topic + struct MarketDataSnapshotFullRefresh { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string MDReqID; string Symbol; string SecurityExchange; diff --git a/GenTools/idl/MarketDataSnapshotFullRefreshAdapter.cpp b/GenTools/idl/MarketDataSnapshotFullRefreshAdapter.cpp index 38e3e61..e974576 100644 --- a/GenTools/idl/MarketDataSnapshotFullRefreshAdapter.cpp +++ b/GenTools/idl/MarketDataSnapshotFullRefreshAdapter.cpp @@ -1,26 +1,26 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "MarketDataSnapshotFullRefreshAdapter.hpp" -#include "ConvertUtils.h" +#include void MarketDataSnapshotFullRefreshAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::MDReqID) ) - ddsMsg.MDReqID = CORBA::string_dup(((FIX::MDReqID)fixMsg.getField(FIX::FIELD::MDReqID)).getString().c_str()); + ddsMsg.MDReqID ( ((FIX::MDReqID)fixMsg.getField(FIX::FIELD::MDReqID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::Symbol) ) - ddsMsg.Symbol = CORBA::string_dup(((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); + ddsMsg.Symbol ( ((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SecurityExchange) ) - ddsMsg.SecurityExchange = CORBA::string_dup(((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); + ddsMsg.SecurityExchange ( ((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); // There is a group FIX::NoMDEntries NoMDEntries_group_cnt = FIELD_GET_REF( fixMsg,NoMDEntries); - ddsMsg.c_NoMDEntries.length(NoMDEntries_group_cnt.getValue()); + ddsMsg.c_NoMDEntries().resize(NoMDEntries_group_cnt.getValue()); int NoMDEntries_group_cnt_index = 0; while ( NoMDEntries_group_cnt_index < NoMDEntries_group_cnt.getValue()) @@ -29,26 +29,26 @@ void MarketDataSnapshotFullRefreshAdapter::FIX2DDS(const FIX::Message& fixMsg, D ; fixMsg.getGroup(NoMDEntries_group_cnt_index+1, grp); if (grp.isSetField(FIX::FIELD::MDEntryType) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].MDEntryType = FIELD_GET_REF( grp,MDEntryType); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].MDEntryType ( FIELD_GET_REF( grp,MDEntryType)); if (grp.isSetField(FIX::FIELD::MDEntryPx) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].MDEntryPx = FIELD_GET_REF( grp,MDEntryPx); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].MDEntryPx ( FIELD_GET_REF( grp,MDEntryPx)); else - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].MDEntryPx = 0; + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].MDEntryPx ( 0 ); if (grp.isSetField(FIX::FIELD::MDEntrySize) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].MDEntrySize = FIELD_GET_REF( grp,MDEntrySize); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].MDEntrySize ( FIELD_GET_REF( grp,MDEntrySize)); else - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].MDEntrySize = 0; + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].MDEntrySize ( 0 ); if (grp.isSetField(FIX::FIELD::TimeInForce) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].TimeInForce = FIELD_GET_REF( grp,TimeInForce); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].TimeInForce ( FIELD_GET_REF( grp,TimeInForce)); if (grp.isSetField(FIX::FIELD::ExecInst) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].ExecInst = CORBA::string_dup(((FIX::ExecInst)grp.getField(FIX::FIELD::ExecInst)).getString().c_str()); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].ExecInst ( ((FIX::ExecInst)grp.getField(FIX::FIELD::ExecInst)).getString().c_str()); if (grp.isSetField(FIX::FIELD::Text) ) - ddsMsg.c_NoMDEntries[NoMDEntries_group_cnt_index].Text = CORBA::string_dup(((FIX::Text)grp.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.c_NoMDEntries()[NoMDEntries_group_cnt_index].Text ( ((FIX::Text)grp.getField(FIX::FIELD::Text)).getString().c_str()); NoMDEntries_group_cnt_index++; }; @@ -59,33 +59,33 @@ void MarketDataSnapshotFullRefreshAdapter::FIX2DDS(const FIX::Message& fixMsg, D void MarketDataSnapshotFullRefreshAdapter::DDS2FIX(const DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.MDReqID.in(), FIX::FIELD::MDReqID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.MDReqID(), FIX::FIELD::MDReqID, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol.in(), FIX::FIELD::Symbol, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol(), FIX::FIELD::Symbol, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange.in(), FIX::FIELD::SecurityExchange, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange(), FIX::FIELD::SecurityExchange, fixMsg); - for ( long NoMDEntries_group_cnt_index = 0; NoMDEntries_group_cnt_index - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class MarketDataSnapshotFullRefreshAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/MarketDataSnapshotFullRefreshCdrAux.hpp b/GenTools/idl/MarketDataSnapshotFullRefreshCdrAux.hpp new file mode 100644 index 0000000..75dc716 --- /dev/null +++ b/GenTools/idl/MarketDataSnapshotFullRefreshCdrAux.hpp @@ -0,0 +1,55 @@ +// 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 MarketDataSnapshotFullRefreshCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESHCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESHCDRAUX_HPP + +#include "MarketDataSnapshotFullRefresh.hpp" + +constexpr uint32_t DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_max_cdr_typesize {540UL}; +constexpr uint32_t DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_max_key_cdr_typesize {0UL}; + + + +constexpr uint32_t DistributedATS_MarketDataSnapshotFullRefresh_MarketDataSnapshotFullRefresh_max_cdr_typesize {3412UL}; +constexpr uint32_t DistributedATS_MarketDataSnapshotFullRefresh_MarketDataSnapshotFullRefresh_max_key_cdr_typesize {0UL}; + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntries& data); + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESHCDRAUX_HPP + diff --git a/GenTools/idl/MarketDataSnapshotFullRefreshCdrAux.ipp b/GenTools/idl/MarketDataSnapshotFullRefreshCdrAux.ipp new file mode 100644 index 0000000..ee171ad --- /dev/null +++ b/GenTools/idl/MarketDataSnapshotFullRefreshCdrAux.ipp @@ -0,0 +1,356 @@ +// 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 MarketDataSnapshotFullRefreshCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESHCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESHCDRAUX_IPP + +#include "MarketDataSnapshotFullRefreshCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntries& data, + size_t& current_alignment) +{ + using namespace DistributedATS_MarketDataSnapshotFullRefresh; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.MDEntryType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.MDEntryPx(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.MDEntrySize(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.TimeInForce(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.ExecInst(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntries& data) +{ + using namespace DistributedATS_MarketDataSnapshotFullRefresh; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.MDEntryType() + << eprosima::fastcdr::MemberId(1) << data.MDEntryPx() + << eprosima::fastcdr::MemberId(2) << data.MDEntrySize() + << eprosima::fastcdr::MemberId(3) << data.TimeInForce() + << eprosima::fastcdr::MemberId(4) << data.ExecInst() + << eprosima::fastcdr::MemberId(5) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntries& data) +{ + using namespace DistributedATS_MarketDataSnapshotFullRefresh; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.MDEntryType(); + break; + + case 1: + dcdr >> data.MDEntryPx(); + break; + + case 2: + dcdr >> data.MDEntrySize(); + break; + + case 3: + dcdr >> data.TimeInForce(); + break; + + case 4: + dcdr >> data.ExecInst(); + break; + + case 5: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntries& data) +{ + using namespace DistributedATS_MarketDataSnapshotFullRefresh; + + static_cast(scdr); + static_cast(data); + scdr << data.MDEntryType(); + + scdr << data.MDEntryPx(); + + scdr << data.MDEntrySize(); + + scdr << data.TimeInForce(); + + scdr << data.ExecInst(); + + scdr << data.Text(); + +} + + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh& data, + size_t& current_alignment) +{ + using namespace DistributedATS_MarketDataSnapshotFullRefresh; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.MDReqID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.Symbol(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.SecurityExchange(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.c_NoMDEntries(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh& data) +{ + using namespace DistributedATS_MarketDataSnapshotFullRefresh; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.MDReqID() + << eprosima::fastcdr::MemberId(6) << data.Symbol() + << eprosima::fastcdr::MemberId(7) << data.SecurityExchange() + << eprosima::fastcdr::MemberId(8) << data.c_NoMDEntries() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh& data) +{ + using namespace DistributedATS_MarketDataSnapshotFullRefresh; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.MDReqID(); + break; + + case 6: + dcdr >> data.Symbol(); + break; + + case 7: + dcdr >> data.SecurityExchange(); + break; + + case 8: + dcdr >> data.c_NoMDEntries(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh& data) +{ + using namespace DistributedATS_MarketDataSnapshotFullRefresh; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.MDReqID(); + + scdr << data.Symbol(); + + scdr << data.SecurityExchange(); + + scdr << data.c_NoMDEntries(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESHCDRAUX_IPP + diff --git a/GenTools/idl/MarketDataSnapshotFullRefreshLogger.hpp b/GenTools/idl/MarketDataSnapshotFullRefreshLogger.hpp index 3a6ab8c..a675e62 100644 --- a/GenTools/idl/MarketDataSnapshotFullRefreshLogger.hpp +++ b/GenTools/idl/MarketDataSnapshotFullRefreshLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __MarketDataSnapshotFullRefreshLogger_h__ -#define __MarketDataSnapshotFullRefreshLogger_h__ - -#include "MarketDataSnapshotFullRefreshTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,26 +10,32 @@ class MarketDataSnapshotFullRefreshLogger static void log(std::ostream & out, DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : MarketDataSnapshotFullRefresh { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.MDReqID : " << ddsMsg.MDReqID << std::endl - << "ddsMsg.Symbol : " << ddsMsg.Symbol << std::endl - << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange << std::endl + << "ddsMsg.MDReqID : " << ddsMsg.MDReqID() << std::endl + << "ddsMsg.Symbol : " << ddsMsg.Symbol() << std::endl + << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange() << std::endl ;out << "ddsMsg.c_NoMDEntries" << std::endl; out << "{" << std::endl; - for ( int tt = 0; tt < ddsMsg.c_NoMDEntries.length(); tt++) + for ( int tt = 0; tt < ddsMsg.c_NoMDEntries().size(); tt++) { - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].MDEntryType : " << ddsMsg.c_NoMDEntries[tt].MDEntryType << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].MDEntryPx : " << ddsMsg.c_NoMDEntries[tt].MDEntryPx << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].MDEntrySize : " << ddsMsg.c_NoMDEntries[tt].MDEntrySize << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].TimeInForce : " << ddsMsg.c_NoMDEntries[tt].TimeInForce << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].ExecInst : " << ddsMsg.c_NoMDEntries[tt].ExecInst << std::endl; - ;out << "ddsMsg.c_NoMDEntries[" << tt << "].Text : " << ddsMsg.c_NoMDEntries[tt].Text << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].MDEntryType : " << ddsMsg.c_NoMDEntries()[tt].MDEntryType() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].MDEntryPx : " << ddsMsg.c_NoMDEntries()[tt].MDEntryPx() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].MDEntrySize : " << ddsMsg.c_NoMDEntries()[tt].MDEntrySize() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].TimeInForce : " << ddsMsg.c_NoMDEntries()[tt].TimeInForce() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].ExecInst : " << ddsMsg.c_NoMDEntries()[tt].ExecInst() << std::endl; + ;out << "ddsMsg.c_NoMDEntries()[" << tt << "].Text : " << ddsMsg.c_NoMDEntries()[tt].Text() << std::endl; }; ;out << "}" << std::endl; @@ -40,6 +43,3 @@ class MarketDataSnapshotFullRefreshLogger out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/MarketDataSnapshotFullRefreshPubSubTypes.cxx b/GenTools/idl/MarketDataSnapshotFullRefreshPubSubTypes.cxx new file mode 100644 index 0000000..89feb6b --- /dev/null +++ b/GenTools/idl/MarketDataSnapshotFullRefreshPubSubTypes.cxx @@ -0,0 +1,403 @@ +// 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 MarketDataSnapshotFullRefreshPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "MarketDataSnapshotFullRefreshPubSubTypes.hpp" + +#include +#include + +#include "MarketDataSnapshotFullRefreshCdrAux.hpp" +#include "MarketDataSnapshotFullRefreshTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_MarketDataSnapshotFullRefresh { + NoMDEntriesPubSubType::NoMDEntriesPubSubType() + { + set_name("DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntries"); + uint32_t type_size = DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_max_key_cdr_typesize > 16 ? DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + NoMDEntriesPubSubType::~NoMDEntriesPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool NoMDEntriesPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const NoMDEntries* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool NoMDEntriesPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + NoMDEntries* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t NoMDEntriesPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* NoMDEntriesPubSubType::create_data() + { + return reinterpret_cast(new NoMDEntries()); + } + + void NoMDEntriesPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool NoMDEntriesPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + NoMDEntries data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool NoMDEntriesPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const NoMDEntries* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void NoMDEntriesPubSubType::register_type_object_representation() + { + register_NoMDEntries_type_identifier(type_identifiers_); + } + + MarketDataSnapshotFullRefreshPubSubType::MarketDataSnapshotFullRefreshPubSubType() + { + set_name("DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh"); + uint32_t type_size = DistributedATS_MarketDataSnapshotFullRefresh_MarketDataSnapshotFullRefresh_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_MarketDataSnapshotFullRefresh_MarketDataSnapshotFullRefresh_max_key_cdr_typesize > 16 ? DistributedATS_MarketDataSnapshotFullRefresh_MarketDataSnapshotFullRefresh_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + MarketDataSnapshotFullRefreshPubSubType::~MarketDataSnapshotFullRefreshPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool MarketDataSnapshotFullRefreshPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const MarketDataSnapshotFullRefresh* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool MarketDataSnapshotFullRefreshPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + MarketDataSnapshotFullRefresh* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t MarketDataSnapshotFullRefreshPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* MarketDataSnapshotFullRefreshPubSubType::create_data() + { + return reinterpret_cast(new MarketDataSnapshotFullRefresh()); + } + + void MarketDataSnapshotFullRefreshPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool MarketDataSnapshotFullRefreshPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + MarketDataSnapshotFullRefresh data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool MarketDataSnapshotFullRefreshPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const MarketDataSnapshotFullRefresh* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_MarketDataSnapshotFullRefresh_MarketDataSnapshotFullRefresh_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_MarketDataSnapshotFullRefresh_MarketDataSnapshotFullRefresh_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void MarketDataSnapshotFullRefreshPubSubType::register_type_object_representation() + { + register_MarketDataSnapshotFullRefresh_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_MarketDataSnapshotFullRefresh + + +// Include auxiliary functions like for serializing/deserializing. +#include "MarketDataSnapshotFullRefreshCdrAux.ipp" diff --git a/GenTools/idl/MarketDataSnapshotFullRefreshPubSubTypes.hpp b/GenTools/idl/MarketDataSnapshotFullRefreshPubSubTypes.hpp new file mode 100644 index 0000000..6870db2 --- /dev/null +++ b/GenTools/idl/MarketDataSnapshotFullRefreshPubSubTypes.hpp @@ -0,0 +1,209 @@ +// 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 MarketDataSnapshotFullRefreshPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESH_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESH_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "MarketDataSnapshotFullRefresh.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated MarketDataSnapshotFullRefresh is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_MarketDataSnapshotFullRefresh +{ + + /*! + * @brief This class represents the TopicDataType of the type NoMDEntries defined by the user in the IDL file. + * @ingroup MarketDataSnapshotFullRefresh + */ + class NoMDEntriesPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef NoMDEntries type; + + eProsima_user_DllExport NoMDEntriesPubSubType(); + + eProsima_user_DllExport ~NoMDEntriesPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; + typedef std::vector NoMDEntriesSeq; + + /*! + * @brief This class represents the TopicDataType of the type MarketDataSnapshotFullRefresh defined by the user in the IDL file. + * @ingroup MarketDataSnapshotFullRefresh + */ + class MarketDataSnapshotFullRefreshPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef MarketDataSnapshotFullRefresh type; + + eProsima_user_DllExport MarketDataSnapshotFullRefreshPubSubType(); + + eProsima_user_DllExport ~MarketDataSnapshotFullRefreshPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_MarketDataSnapshotFullRefresh + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESH_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/MarketDataSnapshotFullRefreshTypeObjectSupport.cxx b/GenTools/idl/MarketDataSnapshotFullRefreshTypeObjectSupport.cxx new file mode 100644 index 0000000..5f0df79 --- /dev/null +++ b/GenTools/idl/MarketDataSnapshotFullRefreshTypeObjectSupport.cxx @@ -0,0 +1,701 @@ +// 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 MarketDataSnapshotFullRefreshTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "MarketDataSnapshotFullRefreshTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "MarketDataSnapshotFullRefresh.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_MarketDataSnapshotFullRefresh { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_NoMDEntries_type_identifier( + TypeIdentifierPair& type_ids_NoMDEntries) +{ + + ReturnCode_t return_code_NoMDEntries {eprosima::fastdds::dds::RETCODE_OK}; + return_code_NoMDEntries = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntries", type_ids_NoMDEntries); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoMDEntries) + { + StructTypeFlag struct_flags_NoMDEntries = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_NoMDEntries = "DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntries"; + eprosima::fastcdr::optional type_ann_builtin_NoMDEntries; + eprosima::fastcdr::optional ann_custom_NoMDEntries; + CompleteTypeDetail detail_NoMDEntries = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_NoMDEntries, ann_custom_NoMDEntries, type_name_NoMDEntries.to_string()); + CompleteStructHeader header_NoMDEntries; + header_NoMDEntries = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_NoMDEntries); + CompleteStructMemberSeq member_seq_NoMDEntries; + { + TypeIdentifierPair type_ids_MDEntryType; + ReturnCode_t return_code_MDEntryType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MDEntryType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_MDEntryType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MDEntryType) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MDEntryType Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MDEntryType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MDEntryType = 0x00000000; + bool common_MDEntryType_ec {false}; + CommonStructMember common_MDEntryType {TypeObjectUtils::build_common_struct_member(member_id_MDEntryType, member_flags_MDEntryType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MDEntryType, common_MDEntryType_ec))}; + if (!common_MDEntryType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MDEntryType member TypeIdentifier inconsistent."); + return; + } + MemberName name_MDEntryType = "MDEntryType"; + eprosima::fastcdr::optional member_ann_builtin_MDEntryType; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_MDEntryType = TypeObjectUtils::build_complete_member_detail(name_MDEntryType, member_ann_builtin_MDEntryType, ann_custom_NoMDEntries); + CompleteStructMember member_MDEntryType = TypeObjectUtils::build_complete_struct_member(common_MDEntryType, detail_MDEntryType); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_MDEntryType); + } + { + TypeIdentifierPair type_ids_MDEntryPx; + ReturnCode_t return_code_MDEntryPx {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MDEntryPx = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_float", type_ids_MDEntryPx); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MDEntryPx) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MDEntryPx Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MDEntryPx = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MDEntryPx = 0x00000001; + bool common_MDEntryPx_ec {false}; + CommonStructMember common_MDEntryPx {TypeObjectUtils::build_common_struct_member(member_id_MDEntryPx, member_flags_MDEntryPx, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MDEntryPx, common_MDEntryPx_ec))}; + if (!common_MDEntryPx_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MDEntryPx member TypeIdentifier inconsistent."); + return; + } + MemberName name_MDEntryPx = "MDEntryPx"; + eprosima::fastcdr::optional member_ann_builtin_MDEntryPx; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_MDEntryPx = TypeObjectUtils::build_complete_member_detail(name_MDEntryPx, member_ann_builtin_MDEntryPx, ann_custom_NoMDEntries); + CompleteStructMember member_MDEntryPx = TypeObjectUtils::build_complete_struct_member(common_MDEntryPx, detail_MDEntryPx); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_MDEntryPx); + } + { + TypeIdentifierPair type_ids_MDEntrySize; + ReturnCode_t return_code_MDEntrySize {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MDEntrySize = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_MDEntrySize); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MDEntrySize) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MDEntrySize Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MDEntrySize = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MDEntrySize = 0x00000002; + bool common_MDEntrySize_ec {false}; + CommonStructMember common_MDEntrySize {TypeObjectUtils::build_common_struct_member(member_id_MDEntrySize, member_flags_MDEntrySize, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MDEntrySize, common_MDEntrySize_ec))}; + if (!common_MDEntrySize_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MDEntrySize member TypeIdentifier inconsistent."); + return; + } + MemberName name_MDEntrySize = "MDEntrySize"; + eprosima::fastcdr::optional member_ann_builtin_MDEntrySize; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_MDEntrySize = TypeObjectUtils::build_complete_member_detail(name_MDEntrySize, member_ann_builtin_MDEntrySize, ann_custom_NoMDEntries); + CompleteStructMember member_MDEntrySize = TypeObjectUtils::build_complete_struct_member(common_MDEntrySize, detail_MDEntrySize); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_MDEntrySize); + } + { + TypeIdentifierPair type_ids_TimeInForce; + ReturnCode_t return_code_TimeInForce {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TimeInForce = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_TimeInForce); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TimeInForce) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "TimeInForce Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_TimeInForce = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TimeInForce = 0x00000003; + bool common_TimeInForce_ec {false}; + CommonStructMember common_TimeInForce {TypeObjectUtils::build_common_struct_member(member_id_TimeInForce, member_flags_TimeInForce, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TimeInForce, common_TimeInForce_ec))}; + if (!common_TimeInForce_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TimeInForce member TypeIdentifier inconsistent."); + return; + } + MemberName name_TimeInForce = "TimeInForce"; + eprosima::fastcdr::optional member_ann_builtin_TimeInForce; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_TimeInForce = TypeObjectUtils::build_complete_member_detail(name_TimeInForce, member_ann_builtin_TimeInForce, ann_custom_NoMDEntries); + CompleteStructMember member_TimeInForce = TypeObjectUtils::build_complete_struct_member(common_TimeInForce, detail_TimeInForce); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_TimeInForce); + } + { + TypeIdentifierPair type_ids_ExecInst; + ReturnCode_t return_code_ExecInst {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ExecInst = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_ExecInst); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ExecInst) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_ExecInst)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_ExecInst = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_ExecInst = 0x00000004; + bool common_ExecInst_ec {false}; + CommonStructMember common_ExecInst {TypeObjectUtils::build_common_struct_member(member_id_ExecInst, member_flags_ExecInst, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_ExecInst, common_ExecInst_ec))}; + if (!common_ExecInst_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure ExecInst member TypeIdentifier inconsistent."); + return; + } + MemberName name_ExecInst = "ExecInst"; + eprosima::fastcdr::optional member_ann_builtin_ExecInst; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_ExecInst = TypeObjectUtils::build_complete_member_detail(name_ExecInst, member_ann_builtin_ExecInst, ann_custom_NoMDEntries); + CompleteStructMember member_ExecInst = TypeObjectUtils::build_complete_struct_member(common_ExecInst, detail_ExecInst); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_ExecInst); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x00000005; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_NoMDEntries.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_NoMDEntries); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_NoMDEntries, member_Text); + } + CompleteStructType struct_type_NoMDEntries = TypeObjectUtils::build_complete_struct_type(struct_flags_NoMDEntries, header_NoMDEntries, member_seq_NoMDEntries); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_NoMDEntries, type_name_NoMDEntries.to_string(), type_ids_NoMDEntries)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntries already registered in TypeObjectRegistry for a different type."); + } + } +} +void register_NoMDEntriesSeq_type_identifier( + TypeIdentifierPair& type_ids_NoMDEntriesSeq) +{ + ReturnCode_t return_code_NoMDEntriesSeq {eprosima::fastdds::dds::RETCODE_OK}; + return_code_NoMDEntriesSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntriesSeq", type_ids_NoMDEntriesSeq); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoMDEntriesSeq) + { + AliasTypeFlag alias_flags_NoMDEntriesSeq = 0; + QualifiedTypeName type_name_NoMDEntriesSeq = "DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntriesSeq"; + eprosima::fastcdr::optional type_ann_builtin_NoMDEntriesSeq; + eprosima::fastcdr::optional ann_custom_NoMDEntriesSeq; + CompleteTypeDetail detail_NoMDEntriesSeq = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_NoMDEntriesSeq, ann_custom_NoMDEntriesSeq, type_name_NoMDEntriesSeq.to_string()); + CompleteAliasHeader header_NoMDEntriesSeq = TypeObjectUtils::build_complete_alias_header(detail_NoMDEntriesSeq); + AliasMemberFlag related_flags_NoMDEntriesSeq = 0; + return_code_NoMDEntriesSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded", type_ids_NoMDEntriesSeq); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoMDEntriesSeq) + { + return_code_NoMDEntriesSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntries", type_ids_NoMDEntriesSeq); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoMDEntriesSeq) + { + DistributedATS_MarketDataSnapshotFullRefresh::register_NoMDEntries_type_identifier(type_ids_NoMDEntriesSeq); + } + bool element_identifier_anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded_ec {false}; + TypeIdentifier* element_identifier_anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded {new TypeIdentifier(TypeObjectUtils::retrieve_complete_type_identifier(type_ids_NoMDEntriesSeq, element_identifier_anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded_ec))}; + if (!element_identifier_anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Sequence element TypeIdentifier inconsistent."); + return; + } + EquivalenceKind equiv_kind_anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded = EK_COMPLETE; + if (TK_NONE == type_ids_NoMDEntriesSeq.type_identifier2()._d()) + { + equiv_kind_anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded = EK_BOTH; + } + CollectionElementFlag element_flags_anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded = 0; + PlainCollectionHeader header_anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded = TypeObjectUtils::build_plain_collection_header(equiv_kind_anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded, element_flags_anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded); + { + SBound bound = 0; + PlainSequenceSElemDefn seq_sdefn = TypeObjectUtils::build_plain_sequence_s_elem_defn(header_anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded, bound, + eprosima::fastcdr::external(element_identifier_anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded)); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_sequence_type_identifier(seq_sdefn, "anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded", type_ids_NoMDEntriesSeq)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_sequence_DistributedATS_MarketDataSnapshotFullRefresh_NoMDEntries_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + bool common_NoMDEntriesSeq_ec {false}; + CommonAliasBody common_NoMDEntriesSeq {TypeObjectUtils::build_common_alias_body(related_flags_NoMDEntriesSeq, + TypeObjectUtils::retrieve_complete_type_identifier(type_ids_NoMDEntriesSeq, common_NoMDEntriesSeq_ec))}; + if (!common_NoMDEntriesSeq_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntriesSeq related TypeIdentifier inconsistent."); + return; + } + eprosima::fastcdr::optional member_ann_builtin_NoMDEntriesSeq; + ann_custom_NoMDEntriesSeq.reset(); + CompleteAliasBody body_NoMDEntriesSeq = TypeObjectUtils::build_complete_alias_body(common_NoMDEntriesSeq, + member_ann_builtin_NoMDEntriesSeq, ann_custom_NoMDEntriesSeq); + CompleteAliasType alias_type_NoMDEntriesSeq = TypeObjectUtils::build_complete_alias_type(alias_flags_NoMDEntriesSeq, + header_NoMDEntriesSeq, body_NoMDEntriesSeq); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_alias_type_object(alias_type_NoMDEntriesSeq, + type_name_NoMDEntriesSeq.to_string(), type_ids_NoMDEntriesSeq)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntriesSeq already registered in TypeObjectRegistry for a different type."); + } + } +} + +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_MarketDataSnapshotFullRefresh_type_identifier( + TypeIdentifierPair& type_ids_MarketDataSnapshotFullRefresh) +{ + + ReturnCode_t return_code_MarketDataSnapshotFullRefresh {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MarketDataSnapshotFullRefresh = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh", type_ids_MarketDataSnapshotFullRefresh); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MarketDataSnapshotFullRefresh) + { + StructTypeFlag struct_flags_MarketDataSnapshotFullRefresh = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_MarketDataSnapshotFullRefresh = "DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh"; + eprosima::fastcdr::optional type_ann_builtin_MarketDataSnapshotFullRefresh; + eprosima::fastcdr::optional ann_custom_MarketDataSnapshotFullRefresh; + CompleteTypeDetail detail_MarketDataSnapshotFullRefresh = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_MarketDataSnapshotFullRefresh, ann_custom_MarketDataSnapshotFullRefresh, type_name_MarketDataSnapshotFullRefresh.to_string()); + CompleteStructHeader header_MarketDataSnapshotFullRefresh; + header_MarketDataSnapshotFullRefresh = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_MarketDataSnapshotFullRefresh); + CompleteStructMemberSeq member_seq_MarketDataSnapshotFullRefresh; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_MarketDataSnapshotFullRefresh.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_MarketDataSnapshotFullRefresh); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataSnapshotFullRefresh, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_MarketDataSnapshotFullRefresh.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_MarketDataSnapshotFullRefresh); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataSnapshotFullRefresh, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_MarketDataSnapshotFullRefresh.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_MarketDataSnapshotFullRefresh); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataSnapshotFullRefresh, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_MarketDataSnapshotFullRefresh.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_MarketDataSnapshotFullRefresh); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataSnapshotFullRefresh, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_MarketDataSnapshotFullRefresh.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_MarketDataSnapshotFullRefresh); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataSnapshotFullRefresh, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_MDReqID; + ReturnCode_t return_code_MDReqID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MDReqID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_MDReqID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MDReqID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_MDReqID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_MDReqID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MDReqID = 0x00000005; + bool common_MDReqID_ec {false}; + CommonStructMember common_MDReqID {TypeObjectUtils::build_common_struct_member(member_id_MDReqID, member_flags_MDReqID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MDReqID, common_MDReqID_ec))}; + if (!common_MDReqID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MDReqID member TypeIdentifier inconsistent."); + return; + } + MemberName name_MDReqID = "MDReqID"; + eprosima::fastcdr::optional member_ann_builtin_MDReqID; + ann_custom_MarketDataSnapshotFullRefresh.reset(); + CompleteMemberDetail detail_MDReqID = TypeObjectUtils::build_complete_member_detail(name_MDReqID, member_ann_builtin_MDReqID, ann_custom_MarketDataSnapshotFullRefresh); + CompleteStructMember member_MDReqID = TypeObjectUtils::build_complete_struct_member(common_MDReqID, detail_MDReqID); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataSnapshotFullRefresh, member_MDReqID); + } + { + TypeIdentifierPair type_ids_Symbol; + ReturnCode_t return_code_Symbol {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Symbol = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Symbol); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Symbol) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Symbol)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Symbol = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Symbol = 0x00000006; + bool common_Symbol_ec {false}; + CommonStructMember common_Symbol {TypeObjectUtils::build_common_struct_member(member_id_Symbol, member_flags_Symbol, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Symbol, common_Symbol_ec))}; + if (!common_Symbol_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Symbol member TypeIdentifier inconsistent."); + return; + } + MemberName name_Symbol = "Symbol"; + eprosima::fastcdr::optional member_ann_builtin_Symbol; + ann_custom_MarketDataSnapshotFullRefresh.reset(); + CompleteMemberDetail detail_Symbol = TypeObjectUtils::build_complete_member_detail(name_Symbol, member_ann_builtin_Symbol, ann_custom_MarketDataSnapshotFullRefresh); + CompleteStructMember member_Symbol = TypeObjectUtils::build_complete_struct_member(common_Symbol, detail_Symbol); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataSnapshotFullRefresh, member_Symbol); + } + { + TypeIdentifierPair type_ids_SecurityExchange; + ReturnCode_t return_code_SecurityExchange {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityExchange = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityExchange); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityExchange) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityExchange)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityExchange = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityExchange = 0x00000007; + bool common_SecurityExchange_ec {false}; + CommonStructMember common_SecurityExchange {TypeObjectUtils::build_common_struct_member(member_id_SecurityExchange, member_flags_SecurityExchange, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityExchange, common_SecurityExchange_ec))}; + if (!common_SecurityExchange_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityExchange member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityExchange = "SecurityExchange"; + eprosima::fastcdr::optional member_ann_builtin_SecurityExchange; + ann_custom_MarketDataSnapshotFullRefresh.reset(); + CompleteMemberDetail detail_SecurityExchange = TypeObjectUtils::build_complete_member_detail(name_SecurityExchange, member_ann_builtin_SecurityExchange, ann_custom_MarketDataSnapshotFullRefresh); + CompleteStructMember member_SecurityExchange = TypeObjectUtils::build_complete_struct_member(common_SecurityExchange, detail_SecurityExchange); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataSnapshotFullRefresh, member_SecurityExchange); + } + { + TypeIdentifierPair type_ids_c_NoMDEntries; + ReturnCode_t return_code_c_NoMDEntries {eprosima::fastdds::dds::RETCODE_OK}; + return_code_c_NoMDEntries = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_MarketDataSnapshotFullRefresh::NoMDEntriesSeq", type_ids_c_NoMDEntries); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_c_NoMDEntries) + { + DistributedATS_MarketDataSnapshotFullRefresh::register_NoMDEntriesSeq_type_identifier(type_ids_c_NoMDEntries); + } + StructMemberFlag member_flags_c_NoMDEntries = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_c_NoMDEntries = 0x00000008; + bool common_c_NoMDEntries_ec {false}; + CommonStructMember common_c_NoMDEntries {TypeObjectUtils::build_common_struct_member(member_id_c_NoMDEntries, member_flags_c_NoMDEntries, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_c_NoMDEntries, common_c_NoMDEntries_ec))}; + if (!common_c_NoMDEntries_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure c_NoMDEntries member TypeIdentifier inconsistent."); + return; + } + MemberName name_c_NoMDEntries = "c_NoMDEntries"; + eprosima::fastcdr::optional member_ann_builtin_c_NoMDEntries; + ann_custom_MarketDataSnapshotFullRefresh.reset(); + CompleteMemberDetail detail_c_NoMDEntries = TypeObjectUtils::build_complete_member_detail(name_c_NoMDEntries, member_ann_builtin_c_NoMDEntries, ann_custom_MarketDataSnapshotFullRefresh); + CompleteStructMember member_c_NoMDEntries = TypeObjectUtils::build_complete_struct_member(common_c_NoMDEntries, detail_c_NoMDEntries); + TypeObjectUtils::add_complete_struct_member(member_seq_MarketDataSnapshotFullRefresh, member_c_NoMDEntries); + } + CompleteStructType struct_type_MarketDataSnapshotFullRefresh = TypeObjectUtils::build_complete_struct_type(struct_flags_MarketDataSnapshotFullRefresh, header_MarketDataSnapshotFullRefresh, member_seq_MarketDataSnapshotFullRefresh); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_MarketDataSnapshotFullRefresh, type_name_MarketDataSnapshotFullRefresh.to_string(), type_ids_MarketDataSnapshotFullRefresh)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_MarketDataSnapshotFullRefresh + diff --git a/GenTools/idl/MarketDataSnapshotFullRefreshTypeObjectSupport.hpp b/GenTools/idl/MarketDataSnapshotFullRefreshTypeObjectSupport.hpp new file mode 100644 index 0000000..9017d9f --- /dev/null +++ b/GenTools/idl/MarketDataSnapshotFullRefreshTypeObjectSupport.hpp @@ -0,0 +1,88 @@ +// 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 MarketDataSnapshotFullRefreshTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESH_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESH_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_MarketDataSnapshotFullRefresh { +/** + * @brief Register NoMDEntries related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_NoMDEntries_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +/** + * @brief Register NoMDEntriesSeq related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_NoMDEntriesSeq_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + + + +/** + * @brief Register MarketDataSnapshotFullRefresh related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_MarketDataSnapshotFullRefresh_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_MarketDataSnapshotFullRefresh + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_MARKETDATASNAPSHOTFULLREFRESH_MARKETDATASNAPSHOTFULLREFRESH_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/NewOrderSingle.hpp b/GenTools/idl/NewOrderSingle.hpp new file mode 100644 index 0000000..461889c --- /dev/null +++ b/GenTools/idl/NewOrderSingle.hpp @@ -0,0 +1,877 @@ +// 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 NewOrderSingle.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLE_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLE_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(NEWORDERSINGLE_SOURCE) +#define NEWORDERSINGLE_DllAPI __declspec( dllexport ) +#else +#define NEWORDERSINGLE_DllAPI __declspec( dllimport ) +#endif // NEWORDERSINGLE_SOURCE +#else +#define NEWORDERSINGLE_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define NEWORDERSINGLE_DllAPI +#endif // _WIN32 + +namespace DistributedATS_NewOrderSingle { + +/*! + * @brief This class represents the structure NewOrderSingle defined by the user in the IDL file. + * @ingroup NewOrderSingle + */ +class NewOrderSingle +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport NewOrderSingle() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~NewOrderSingle() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object NewOrderSingle that will be copied. + */ + eProsima_user_DllExport NewOrderSingle( + const NewOrderSingle& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_ClOrdID = x.m_ClOrdID; + + m_ExecInst = x.m_ExecInst; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_Side = x.m_Side; + + m_TransactTime = x.m_TransactTime; + + m_OrderQty = x.m_OrderQty; + + m_OrdType = x.m_OrdType; + + m_Price = x.m_Price; + + m_StopPx = x.m_StopPx; + + m_TimeInForce = x.m_TimeInForce; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object NewOrderSingle that will be copied. + */ + eProsima_user_DllExport NewOrderSingle( + NewOrderSingle&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_ClOrdID = std::move(x.m_ClOrdID); + m_ExecInst = std::move(x.m_ExecInst); + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_Side = x.m_Side; + m_TransactTime = x.m_TransactTime; + m_OrderQty = x.m_OrderQty; + m_OrdType = x.m_OrdType; + m_Price = x.m_Price; + m_StopPx = x.m_StopPx; + m_TimeInForce = x.m_TimeInForce; + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object NewOrderSingle that will be copied. + */ + eProsima_user_DllExport NewOrderSingle& operator =( + const NewOrderSingle& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_ClOrdID = x.m_ClOrdID; + + m_ExecInst = x.m_ExecInst; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_Side = x.m_Side; + + m_TransactTime = x.m_TransactTime; + + m_OrderQty = x.m_OrderQty; + + m_OrdType = x.m_OrdType; + + m_Price = x.m_Price; + + m_StopPx = x.m_StopPx; + + m_TimeInForce = x.m_TimeInForce; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object NewOrderSingle that will be copied. + */ + eProsima_user_DllExport NewOrderSingle& operator =( + NewOrderSingle&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_ClOrdID = std::move(x.m_ClOrdID); + m_ExecInst = std::move(x.m_ExecInst); + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_Side = x.m_Side; + m_TransactTime = x.m_TransactTime; + m_OrderQty = x.m_OrderQty; + m_OrdType = x.m_OrdType; + m_Price = x.m_Price; + m_StopPx = x.m_StopPx; + m_TimeInForce = x.m_TimeInForce; + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x NewOrderSingle object to compare. + */ + eProsima_user_DllExport bool operator ==( + const NewOrderSingle& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_ClOrdID == x.m_ClOrdID && + m_ExecInst == x.m_ExecInst && + m_Symbol == x.m_Symbol && + m_SecurityExchange == x.m_SecurityExchange && + m_Side == x.m_Side && + m_TransactTime == x.m_TransactTime && + m_OrderQty == x.m_OrderQty && + m_OrdType == x.m_OrdType && + m_Price == x.m_Price && + m_StopPx == x.m_StopPx && + m_TimeInForce == x.m_TimeInForce && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x NewOrderSingle object to compare. + */ + eProsima_user_DllExport bool operator !=( + const NewOrderSingle& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member ClOrdID + * @param _ClOrdID New value to be copied in member ClOrdID + */ + eProsima_user_DllExport void ClOrdID( + const std::string& _ClOrdID) + { + m_ClOrdID = _ClOrdID; + } + + /*! + * @brief This function moves the value in member ClOrdID + * @param _ClOrdID New value to be moved in member ClOrdID + */ + eProsima_user_DllExport void ClOrdID( + std::string&& _ClOrdID) + { + m_ClOrdID = std::move(_ClOrdID); + } + + /*! + * @brief This function returns a constant reference to member ClOrdID + * @return Constant reference to member ClOrdID + */ + eProsima_user_DllExport const std::string& ClOrdID() const + { + return m_ClOrdID; + } + + /*! + * @brief This function returns a reference to member ClOrdID + * @return Reference to member ClOrdID + */ + eProsima_user_DllExport std::string& ClOrdID() + { + return m_ClOrdID; + } + + + /*! + * @brief This function copies the value in member ExecInst + * @param _ExecInst New value to be copied in member ExecInst + */ + eProsima_user_DllExport void ExecInst( + const std::string& _ExecInst) + { + m_ExecInst = _ExecInst; + } + + /*! + * @brief This function moves the value in member ExecInst + * @param _ExecInst New value to be moved in member ExecInst + */ + eProsima_user_DllExport void ExecInst( + std::string&& _ExecInst) + { + m_ExecInst = std::move(_ExecInst); + } + + /*! + * @brief This function returns a constant reference to member ExecInst + * @return Constant reference to member ExecInst + */ + eProsima_user_DllExport const std::string& ExecInst() const + { + return m_ExecInst; + } + + /*! + * @brief This function returns a reference to member ExecInst + * @return Reference to member ExecInst + */ + eProsima_user_DllExport std::string& ExecInst() + { + return m_ExecInst; + } + + + /*! + * @brief This function copies the value in member Symbol + * @param _Symbol New value to be copied in member Symbol + */ + eProsima_user_DllExport void Symbol( + const std::string& _Symbol) + { + m_Symbol = _Symbol; + } + + /*! + * @brief This function moves the value in member Symbol + * @param _Symbol New value to be moved in member Symbol + */ + eProsima_user_DllExport void Symbol( + std::string&& _Symbol) + { + m_Symbol = std::move(_Symbol); + } + + /*! + * @brief This function returns a constant reference to member Symbol + * @return Constant reference to member Symbol + */ + eProsima_user_DllExport const std::string& Symbol() const + { + return m_Symbol; + } + + /*! + * @brief This function returns a reference to member Symbol + * @return Reference to member Symbol + */ + eProsima_user_DllExport std::string& Symbol() + { + return m_Symbol; + } + + + /*! + * @brief This function copies the value in member SecurityExchange + * @param _SecurityExchange New value to be copied in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + const std::string& _SecurityExchange) + { + m_SecurityExchange = _SecurityExchange; + } + + /*! + * @brief This function moves the value in member SecurityExchange + * @param _SecurityExchange New value to be moved in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + std::string&& _SecurityExchange) + { + m_SecurityExchange = std::move(_SecurityExchange); + } + + /*! + * @brief This function returns a constant reference to member SecurityExchange + * @return Constant reference to member SecurityExchange + */ + eProsima_user_DllExport const std::string& SecurityExchange() const + { + return m_SecurityExchange; + } + + /*! + * @brief This function returns a reference to member SecurityExchange + * @return Reference to member SecurityExchange + */ + eProsima_user_DllExport std::string& SecurityExchange() + { + return m_SecurityExchange; + } + + + /*! + * @brief This function sets a value in member Side + * @param _Side New value for member Side + */ + eProsima_user_DllExport void Side( + char _Side) + { + m_Side = _Side; + } + + /*! + * @brief This function returns the value of member Side + * @return Value of member Side + */ + eProsima_user_DllExport char Side() const + { + return m_Side; + } + + /*! + * @brief This function returns a reference to member Side + * @return Reference to member Side + */ + eProsima_user_DllExport char& Side() + { + return m_Side; + } + + + /*! + * @brief This function sets a value in member TransactTime + * @param _TransactTime New value for member TransactTime + */ + eProsima_user_DllExport void TransactTime( + uint64_t _TransactTime) + { + m_TransactTime = _TransactTime; + } + + /*! + * @brief This function returns the value of member TransactTime + * @return Value of member TransactTime + */ + eProsima_user_DllExport uint64_t TransactTime() const + { + return m_TransactTime; + } + + /*! + * @brief This function returns a reference to member TransactTime + * @return Reference to member TransactTime + */ + eProsima_user_DllExport uint64_t& TransactTime() + { + return m_TransactTime; + } + + + /*! + * @brief This function sets a value in member OrderQty + * @param _OrderQty New value for member OrderQty + */ + eProsima_user_DllExport void OrderQty( + int32_t _OrderQty) + { + m_OrderQty = _OrderQty; + } + + /*! + * @brief This function returns the value of member OrderQty + * @return Value of member OrderQty + */ + eProsima_user_DllExport int32_t OrderQty() const + { + return m_OrderQty; + } + + /*! + * @brief This function returns a reference to member OrderQty + * @return Reference to member OrderQty + */ + eProsima_user_DllExport int32_t& OrderQty() + { + return m_OrderQty; + } + + + /*! + * @brief This function sets a value in member OrdType + * @param _OrdType New value for member OrdType + */ + eProsima_user_DllExport void OrdType( + char _OrdType) + { + m_OrdType = _OrdType; + } + + /*! + * @brief This function returns the value of member OrdType + * @return Value of member OrdType + */ + eProsima_user_DllExport char OrdType() const + { + return m_OrdType; + } + + /*! + * @brief This function returns a reference to member OrdType + * @return Reference to member OrdType + */ + eProsima_user_DllExport char& OrdType() + { + return m_OrdType; + } + + + /*! + * @brief This function sets a value in member Price + * @param _Price New value for member Price + */ + eProsima_user_DllExport void Price( + float _Price) + { + m_Price = _Price; + } + + /*! + * @brief This function returns the value of member Price + * @return Value of member Price + */ + eProsima_user_DllExport float Price() const + { + return m_Price; + } + + /*! + * @brief This function returns a reference to member Price + * @return Reference to member Price + */ + eProsima_user_DllExport float& Price() + { + return m_Price; + } + + + /*! + * @brief This function sets a value in member StopPx + * @param _StopPx New value for member StopPx + */ + eProsima_user_DllExport void StopPx( + float _StopPx) + { + m_StopPx = _StopPx; + } + + /*! + * @brief This function returns the value of member StopPx + * @return Value of member StopPx + */ + eProsima_user_DllExport float StopPx() const + { + return m_StopPx; + } + + /*! + * @brief This function returns a reference to member StopPx + * @return Reference to member StopPx + */ + eProsima_user_DllExport float& StopPx() + { + return m_StopPx; + } + + + /*! + * @brief This function sets a value in member TimeInForce + * @param _TimeInForce New value for member TimeInForce + */ + eProsima_user_DllExport void TimeInForce( + char _TimeInForce) + { + m_TimeInForce = _TimeInForce; + } + + /*! + * @brief This function returns the value of member TimeInForce + * @return Value of member TimeInForce + */ + eProsima_user_DllExport char TimeInForce() const + { + return m_TimeInForce; + } + + /*! + * @brief This function returns a reference to member TimeInForce + * @return Reference to member TimeInForce + */ + eProsima_user_DllExport char& TimeInForce() + { + return m_TimeInForce; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_ClOrdID; + std::string m_ExecInst; + std::string m_Symbol; + std::string m_SecurityExchange; + char m_Side{0}; + uint64_t m_TransactTime{0}; + int32_t m_OrderQty{0}; + char m_OrdType{0}; + float m_Price{0.0}; + float m_StopPx{0.0}; + char m_TimeInForce{0}; + std::string m_Text; + +}; + +} // namespace DistributedATS_NewOrderSingle + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLE_HPP_ + + diff --git a/GenTools/idl/NewOrderSingle.idl b/GenTools/idl/NewOrderSingle.idl index 244fb34..cf87fe0 100644 --- a/GenTools/idl/NewOrderSingle.idl +++ b/GenTools/idl/NewOrderSingle.idl @@ -1,13 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_NewOrderSingle { - @topic + struct NewOrderSingle { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string ClOrdID; string ExecInst; string Symbol; diff --git a/GenTools/idl/NewOrderSingleAdapter.cpp b/GenTools/idl/NewOrderSingleAdapter.cpp index f42af1e..4a11efe 100644 --- a/GenTools/idl/NewOrderSingleAdapter.cpp +++ b/GenTools/idl/NewOrderSingleAdapter.cpp @@ -1,55 +1,55 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "NewOrderSingleAdapter.hpp" -#include "ConvertUtils.h" +#include void NewOrderSingleAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_NewOrderSingle::NewOrderSingle& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::ClOrdID) ) - ddsMsg.ClOrdID = CORBA::string_dup(((FIX::ClOrdID)fixMsg.getField(FIX::FIELD::ClOrdID)).getString().c_str()); + ddsMsg.ClOrdID ( ((FIX::ClOrdID)fixMsg.getField(FIX::FIELD::ClOrdID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::ExecInst) ) - ddsMsg.ExecInst = CORBA::string_dup(((FIX::ExecInst)fixMsg.getField(FIX::FIELD::ExecInst)).getString().c_str()); + ddsMsg.ExecInst ( ((FIX::ExecInst)fixMsg.getField(FIX::FIELD::ExecInst)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::Symbol) ) - ddsMsg.Symbol = CORBA::string_dup(((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); + ddsMsg.Symbol ( ((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SecurityExchange) ) - ddsMsg.SecurityExchange = CORBA::string_dup(((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); + ddsMsg.SecurityExchange ( ((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::Side) ) - ddsMsg.Side = FIELD_GET_REF( fixMsg,Side); + ddsMsg.Side ( FIELD_GET_REF( fixMsg,Side)); if (fixMsg.isSetField(FIX::FIELD::TransactTime) ) - ddsMsg.TransactTime = ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate(); + ddsMsg.TransactTime ( ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate()); else - ddsMsg.TransactTime = 0; + ddsMsg.TransactTime ( 0 ); if (fixMsg.isSetField(FIX::FIELD::OrderQty) ) - ddsMsg.OrderQty = FIELD_GET_REF( fixMsg,OrderQty); + ddsMsg.OrderQty ( FIELD_GET_REF( fixMsg,OrderQty)); else - ddsMsg.OrderQty = 0; + ddsMsg.OrderQty ( 0 ); if (fixMsg.isSetField(FIX::FIELD::OrdType) ) - ddsMsg.OrdType = FIELD_GET_REF( fixMsg,OrdType); + ddsMsg.OrdType ( FIELD_GET_REF( fixMsg,OrdType)); if (fixMsg.isSetField(FIX::FIELD::Price) ) - ddsMsg.Price = FIELD_GET_REF( fixMsg,Price); + ddsMsg.Price ( FIELD_GET_REF( fixMsg,Price)); else - ddsMsg.Price = 0; + ddsMsg.Price ( 0 ); if (fixMsg.isSetField(FIX::FIELD::StopPx) ) - ddsMsg.StopPx = FIELD_GET_REF( fixMsg,StopPx); + ddsMsg.StopPx ( FIELD_GET_REF( fixMsg,StopPx)); else - ddsMsg.StopPx = 0; + ddsMsg.StopPx ( 0 ); if (fixMsg.isSetField(FIX::FIELD::TimeInForce) ) - ddsMsg.TimeInForce = FIELD_GET_REF( fixMsg,TimeInForce); + ddsMsg.TimeInForce ( FIELD_GET_REF( fixMsg,TimeInForce)); if (fixMsg.isSetField(FIX::FIELD::Text) ) - ddsMsg.Text = CORBA::string_dup(((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.Text ( ((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); }; @@ -58,37 +58,37 @@ void NewOrderSingleAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_N void NewOrderSingleAdapter::DDS2FIX(const DistributedATS_NewOrderSingle::NewOrderSingle& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.ClOrdID.in(), FIX::FIELD::ClOrdID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.ClOrdID(), FIX::FIELD::ClOrdID, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.ExecInst.in(), FIX::FIELD::ExecInst, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.ExecInst(), FIX::FIELD::ExecInst, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol.in(), FIX::FIELD::Symbol, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol(), FIX::FIELD::Symbol, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange.in(), FIX::FIELD::SecurityExchange, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange(), FIX::FIELD::SecurityExchange, fixMsg); - FIX::Side fixSide(ddsMsg.Side); + FIX::Side fixSide(ddsMsg.Side()); fixMsg.setField(fixSide); - DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime, FIX::FIELD::TransactTime, fixMsg); + DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime(), FIX::FIELD::TransactTime, fixMsg); - FIX::OrderQty fixOrderQty(ddsMsg.OrderQty); + FIX::OrderQty fixOrderQty(ddsMsg.OrderQty()); fixMsg.setField(fixOrderQty); - FIX::OrdType fixOrdType(ddsMsg.OrdType); + FIX::OrdType fixOrdType(ddsMsg.OrdType()); fixMsg.setField(fixOrdType); - FIX::Price fixPrice(ddsMsg.Price); + FIX::Price fixPrice(ddsMsg.Price()); fixMsg.setField(fixPrice); - FIX::StopPx fixStopPx(ddsMsg.StopPx); + FIX::StopPx fixStopPx(ddsMsg.StopPx()); fixMsg.setField(fixStopPx); - FIX::TimeInForce fixTimeInForce(ddsMsg.TimeInForce); + FIX::TimeInForce fixTimeInForce(ddsMsg.TimeInForce()); fixMsg.setField(fixTimeInForce); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Text.in(), FIX::FIELD::Text, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Text(), FIX::FIELD::Text, fixMsg); }; diff --git a/GenTools/idl/NewOrderSingleAdapter.hpp b/GenTools/idl/NewOrderSingleAdapter.hpp index f01419a..31df6a6 100644 --- a/GenTools/idl/NewOrderSingleAdapter.hpp +++ b/GenTools/idl/NewOrderSingleAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __NewOrderSingle_h__ -#define __NewOrderSingle_h__ - -#include "NewOrderSingleTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "NewOrderSingle.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class NewOrderSingleAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_NewOrderSingle::NewOrderSingle& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_NewOrderSingle::NewOrderSingle& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/NewOrderSingleCdrAux.hpp b/GenTools/idl/NewOrderSingleCdrAux.hpp new file mode 100644 index 0000000..23cf3f6 --- /dev/null +++ b/GenTools/idl/NewOrderSingleCdrAux.hpp @@ -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 NewOrderSingleCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLECDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLECDRAUX_HPP + +#include "NewOrderSingle.hpp" + +constexpr uint32_t DistributedATS_NewOrderSingle_NewOrderSingle_max_cdr_typesize {3960UL}; +constexpr uint32_t DistributedATS_NewOrderSingle_NewOrderSingle_max_key_cdr_typesize {0UL}; + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_NewOrderSingle::NewOrderSingle& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLECDRAUX_HPP + diff --git a/GenTools/idl/NewOrderSingleCdrAux.ipp b/GenTools/idl/NewOrderSingleCdrAux.ipp new file mode 100644 index 0000000..32d964e --- /dev/null +++ b/GenTools/idl/NewOrderSingleCdrAux.ipp @@ -0,0 +1,308 @@ +// 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 NewOrderSingleCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLECDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLECDRAUX_IPP + +#include "NewOrderSingleCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_NewOrderSingle::NewOrderSingle& data, + size_t& current_alignment) +{ + using namespace DistributedATS_NewOrderSingle; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.ClOrdID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.ExecInst(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.Symbol(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.SecurityExchange(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(9), + data.Side(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(10), + data.TransactTime(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(11), + data.OrderQty(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(12), + data.OrdType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(13), + data.Price(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(14), + data.StopPx(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(15), + data.TimeInForce(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(16), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_NewOrderSingle::NewOrderSingle& data) +{ + using namespace DistributedATS_NewOrderSingle; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.ClOrdID() + << eprosima::fastcdr::MemberId(6) << data.ExecInst() + << eprosima::fastcdr::MemberId(7) << data.Symbol() + << eprosima::fastcdr::MemberId(8) << data.SecurityExchange() + << eprosima::fastcdr::MemberId(9) << data.Side() + << eprosima::fastcdr::MemberId(10) << data.TransactTime() + << eprosima::fastcdr::MemberId(11) << data.OrderQty() + << eprosima::fastcdr::MemberId(12) << data.OrdType() + << eprosima::fastcdr::MemberId(13) << data.Price() + << eprosima::fastcdr::MemberId(14) << data.StopPx() + << eprosima::fastcdr::MemberId(15) << data.TimeInForce() + << eprosima::fastcdr::MemberId(16) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_NewOrderSingle::NewOrderSingle& data) +{ + using namespace DistributedATS_NewOrderSingle; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.ClOrdID(); + break; + + case 6: + dcdr >> data.ExecInst(); + break; + + case 7: + dcdr >> data.Symbol(); + break; + + case 8: + dcdr >> data.SecurityExchange(); + break; + + case 9: + dcdr >> data.Side(); + break; + + case 10: + dcdr >> data.TransactTime(); + break; + + case 11: + dcdr >> data.OrderQty(); + break; + + case 12: + dcdr >> data.OrdType(); + break; + + case 13: + dcdr >> data.Price(); + break; + + case 14: + dcdr >> data.StopPx(); + break; + + case 15: + dcdr >> data.TimeInForce(); + break; + + case 16: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_NewOrderSingle::NewOrderSingle& data) +{ + using namespace DistributedATS_NewOrderSingle; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.ClOrdID(); + + scdr << data.ExecInst(); + + scdr << data.Symbol(); + + scdr << data.SecurityExchange(); + + scdr << data.Side(); + + scdr << data.TransactTime(); + + scdr << data.OrderQty(); + + scdr << data.OrdType(); + + scdr << data.Price(); + + scdr << data.StopPx(); + + scdr << data.TimeInForce(); + + scdr << data.Text(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLECDRAUX_IPP + diff --git a/GenTools/idl/NewOrderSingleLogger.hpp b/GenTools/idl/NewOrderSingleLogger.hpp index d45c5c1..5c24fdf 100644 --- a/GenTools/idl/NewOrderSingleLogger.hpp +++ b/GenTools/idl/NewOrderSingleLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __NewOrderSingleLogger_h__ -#define __NewOrderSingleLogger_h__ - -#include "NewOrderSingleTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,26 +10,29 @@ class NewOrderSingleLogger static void log(std::ostream & out, DistributedATS_NewOrderSingle::NewOrderSingle& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : NewOrderSingle { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.ClOrdID : " << ddsMsg.ClOrdID << std::endl - << "ddsMsg.ExecInst : " << ddsMsg.ExecInst << std::endl - << "ddsMsg.Symbol : " << ddsMsg.Symbol << std::endl - << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange << std::endl - << "ddsMsg.Side : " << ddsMsg.Side << std::endl - << "ddsMsg.TransactTime : " << ddsMsg.TransactTime << std::endl - << "ddsMsg.OrderQty : " << ddsMsg.OrderQty << std::endl - << "ddsMsg.OrdType : " << ddsMsg.OrdType << std::endl - << "ddsMsg.Price : " << ddsMsg.Price << std::endl - << "ddsMsg.StopPx : " << ddsMsg.StopPx << std::endl - << "ddsMsg.TimeInForce : " << ddsMsg.TimeInForce << std::endl - << "ddsMsg.Text : " << ddsMsg.Text << std::endl + << "ddsMsg.ClOrdID : " << ddsMsg.ClOrdID() << std::endl + << "ddsMsg.ExecInst : " << ddsMsg.ExecInst() << std::endl + << "ddsMsg.Symbol : " << ddsMsg.Symbol() << std::endl + << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange() << std::endl + << "ddsMsg.Side : " << ddsMsg.Side() << std::endl + << "ddsMsg.TransactTime : " << ddsMsg.TransactTime() << std::endl + << "ddsMsg.OrderQty : " << ddsMsg.OrderQty() << std::endl + << "ddsMsg.OrdType : " << ddsMsg.OrdType() << std::endl + << "ddsMsg.Price : " << ddsMsg.Price() << std::endl + << "ddsMsg.StopPx : " << ddsMsg.StopPx() << std::endl + << "ddsMsg.TimeInForce : " << ddsMsg.TimeInForce() << std::endl + << "ddsMsg.Text : " << ddsMsg.Text() << std::endl ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/NewOrderSinglePubSubTypes.cxx b/GenTools/idl/NewOrderSinglePubSubTypes.cxx new file mode 100644 index 0000000..1870a8e --- /dev/null +++ b/GenTools/idl/NewOrderSinglePubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 NewOrderSinglePubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "NewOrderSinglePubSubTypes.hpp" + +#include +#include + +#include "NewOrderSingleCdrAux.hpp" +#include "NewOrderSingleTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_NewOrderSingle { + NewOrderSinglePubSubType::NewOrderSinglePubSubType() + { + set_name("DistributedATS_NewOrderSingle::NewOrderSingle"); + uint32_t type_size = DistributedATS_NewOrderSingle_NewOrderSingle_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_NewOrderSingle_NewOrderSingle_max_key_cdr_typesize > 16 ? DistributedATS_NewOrderSingle_NewOrderSingle_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + NewOrderSinglePubSubType::~NewOrderSinglePubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool NewOrderSinglePubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const NewOrderSingle* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool NewOrderSinglePubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + NewOrderSingle* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t NewOrderSinglePubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* NewOrderSinglePubSubType::create_data() + { + return reinterpret_cast(new NewOrderSingle()); + } + + void NewOrderSinglePubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool NewOrderSinglePubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + NewOrderSingle data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool NewOrderSinglePubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const NewOrderSingle* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_NewOrderSingle_NewOrderSingle_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_NewOrderSingle_NewOrderSingle_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void NewOrderSinglePubSubType::register_type_object_representation() + { + register_NewOrderSingle_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_NewOrderSingle + + +// Include auxiliary functions like for serializing/deserializing. +#include "NewOrderSingleCdrAux.ipp" diff --git a/GenTools/idl/NewOrderSinglePubSubTypes.hpp b/GenTools/idl/NewOrderSinglePubSubTypes.hpp new file mode 100644 index 0000000..1b60b28 --- /dev/null +++ b/GenTools/idl/NewOrderSinglePubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 NewOrderSinglePubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLE_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLE_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "NewOrderSingle.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated NewOrderSingle is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_NewOrderSingle +{ + + /*! + * @brief This class represents the TopicDataType of the type NewOrderSingle defined by the user in the IDL file. + * @ingroup NewOrderSingle + */ + class NewOrderSinglePubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef NewOrderSingle type; + + eProsima_user_DllExport NewOrderSinglePubSubType(); + + eProsima_user_DllExport ~NewOrderSinglePubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_NewOrderSingle + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLE_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/NewOrderSingleTypeObjectSupport.cxx b/GenTools/idl/NewOrderSingleTypeObjectSupport.cxx new file mode 100644 index 0000000..3b82b2e --- /dev/null +++ b/GenTools/idl/NewOrderSingleTypeObjectSupport.cxx @@ -0,0 +1,654 @@ +// 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 NewOrderSingleTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "NewOrderSingleTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "NewOrderSingle.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_NewOrderSingle { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_NewOrderSingle_type_identifier( + TypeIdentifierPair& type_ids_NewOrderSingle) +{ + + ReturnCode_t return_code_NewOrderSingle {eprosima::fastdds::dds::RETCODE_OK}; + return_code_NewOrderSingle = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_NewOrderSingle::NewOrderSingle", type_ids_NewOrderSingle); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NewOrderSingle) + { + StructTypeFlag struct_flags_NewOrderSingle = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_NewOrderSingle = "DistributedATS_NewOrderSingle::NewOrderSingle"; + eprosima::fastcdr::optional type_ann_builtin_NewOrderSingle; + eprosima::fastcdr::optional ann_custom_NewOrderSingle; + CompleteTypeDetail detail_NewOrderSingle = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_NewOrderSingle, ann_custom_NewOrderSingle, type_name_NewOrderSingle.to_string()); + CompleteStructHeader header_NewOrderSingle; + header_NewOrderSingle = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_NewOrderSingle); + CompleteStructMemberSeq member_seq_NewOrderSingle; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_NewOrderSingle); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_NewOrderSingle); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_NewOrderSingle); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_NewOrderSingle); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_NewOrderSingle); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_ClOrdID; + ReturnCode_t return_code_ClOrdID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ClOrdID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_ClOrdID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ClOrdID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_ClOrdID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_ClOrdID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_ClOrdID = 0x00000005; + bool common_ClOrdID_ec {false}; + CommonStructMember common_ClOrdID {TypeObjectUtils::build_common_struct_member(member_id_ClOrdID, member_flags_ClOrdID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_ClOrdID, common_ClOrdID_ec))}; + if (!common_ClOrdID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure ClOrdID member TypeIdentifier inconsistent."); + return; + } + MemberName name_ClOrdID = "ClOrdID"; + eprosima::fastcdr::optional member_ann_builtin_ClOrdID; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_ClOrdID = TypeObjectUtils::build_complete_member_detail(name_ClOrdID, member_ann_builtin_ClOrdID, ann_custom_NewOrderSingle); + CompleteStructMember member_ClOrdID = TypeObjectUtils::build_complete_struct_member(common_ClOrdID, detail_ClOrdID); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_ClOrdID); + } + { + TypeIdentifierPair type_ids_ExecInst; + ReturnCode_t return_code_ExecInst {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ExecInst = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_ExecInst); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ExecInst) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_ExecInst)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_ExecInst = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_ExecInst = 0x00000006; + bool common_ExecInst_ec {false}; + CommonStructMember common_ExecInst {TypeObjectUtils::build_common_struct_member(member_id_ExecInst, member_flags_ExecInst, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_ExecInst, common_ExecInst_ec))}; + if (!common_ExecInst_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure ExecInst member TypeIdentifier inconsistent."); + return; + } + MemberName name_ExecInst = "ExecInst"; + eprosima::fastcdr::optional member_ann_builtin_ExecInst; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_ExecInst = TypeObjectUtils::build_complete_member_detail(name_ExecInst, member_ann_builtin_ExecInst, ann_custom_NewOrderSingle); + CompleteStructMember member_ExecInst = TypeObjectUtils::build_complete_struct_member(common_ExecInst, detail_ExecInst); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_ExecInst); + } + { + TypeIdentifierPair type_ids_Symbol; + ReturnCode_t return_code_Symbol {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Symbol = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Symbol); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Symbol) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Symbol)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Symbol = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Symbol = 0x00000007; + bool common_Symbol_ec {false}; + CommonStructMember common_Symbol {TypeObjectUtils::build_common_struct_member(member_id_Symbol, member_flags_Symbol, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Symbol, common_Symbol_ec))}; + if (!common_Symbol_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Symbol member TypeIdentifier inconsistent."); + return; + } + MemberName name_Symbol = "Symbol"; + eprosima::fastcdr::optional member_ann_builtin_Symbol; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_Symbol = TypeObjectUtils::build_complete_member_detail(name_Symbol, member_ann_builtin_Symbol, ann_custom_NewOrderSingle); + CompleteStructMember member_Symbol = TypeObjectUtils::build_complete_struct_member(common_Symbol, detail_Symbol); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_Symbol); + } + { + TypeIdentifierPair type_ids_SecurityExchange; + ReturnCode_t return_code_SecurityExchange {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityExchange = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityExchange); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityExchange) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityExchange)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityExchange = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityExchange = 0x00000008; + bool common_SecurityExchange_ec {false}; + CommonStructMember common_SecurityExchange {TypeObjectUtils::build_common_struct_member(member_id_SecurityExchange, member_flags_SecurityExchange, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityExchange, common_SecurityExchange_ec))}; + if (!common_SecurityExchange_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityExchange member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityExchange = "SecurityExchange"; + eprosima::fastcdr::optional member_ann_builtin_SecurityExchange; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_SecurityExchange = TypeObjectUtils::build_complete_member_detail(name_SecurityExchange, member_ann_builtin_SecurityExchange, ann_custom_NewOrderSingle); + CompleteStructMember member_SecurityExchange = TypeObjectUtils::build_complete_struct_member(common_SecurityExchange, detail_SecurityExchange); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_SecurityExchange); + } + { + TypeIdentifierPair type_ids_Side; + ReturnCode_t return_code_Side {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Side = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_Side); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Side) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "Side Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_Side = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Side = 0x00000009; + bool common_Side_ec {false}; + CommonStructMember common_Side {TypeObjectUtils::build_common_struct_member(member_id_Side, member_flags_Side, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Side, common_Side_ec))}; + if (!common_Side_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Side member TypeIdentifier inconsistent."); + return; + } + MemberName name_Side = "Side"; + eprosima::fastcdr::optional member_ann_builtin_Side; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_Side = TypeObjectUtils::build_complete_member_detail(name_Side, member_ann_builtin_Side, ann_custom_NewOrderSingle); + CompleteStructMember member_Side = TypeObjectUtils::build_complete_struct_member(common_Side, detail_Side); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_Side); + } + { + TypeIdentifierPair type_ids_TransactTime; + ReturnCode_t return_code_TransactTime {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TransactTime = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_uint64_t", type_ids_TransactTime); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TransactTime) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "TransactTime Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_TransactTime = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TransactTime = 0x0000000a; + bool common_TransactTime_ec {false}; + CommonStructMember common_TransactTime {TypeObjectUtils::build_common_struct_member(member_id_TransactTime, member_flags_TransactTime, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TransactTime, common_TransactTime_ec))}; + if (!common_TransactTime_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TransactTime member TypeIdentifier inconsistent."); + return; + } + MemberName name_TransactTime = "TransactTime"; + eprosima::fastcdr::optional member_ann_builtin_TransactTime; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_TransactTime = TypeObjectUtils::build_complete_member_detail(name_TransactTime, member_ann_builtin_TransactTime, ann_custom_NewOrderSingle); + CompleteStructMember member_TransactTime = TypeObjectUtils::build_complete_struct_member(common_TransactTime, detail_TransactTime); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_TransactTime); + } + { + TypeIdentifierPair type_ids_OrderQty; + ReturnCode_t return_code_OrderQty {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderQty = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_OrderQty); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderQty) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "OrderQty Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_OrderQty = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrderQty = 0x0000000b; + bool common_OrderQty_ec {false}; + CommonStructMember common_OrderQty {TypeObjectUtils::build_common_struct_member(member_id_OrderQty, member_flags_OrderQty, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrderQty, common_OrderQty_ec))}; + if (!common_OrderQty_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrderQty member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrderQty = "OrderQty"; + eprosima::fastcdr::optional member_ann_builtin_OrderQty; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_OrderQty = TypeObjectUtils::build_complete_member_detail(name_OrderQty, member_ann_builtin_OrderQty, ann_custom_NewOrderSingle); + CompleteStructMember member_OrderQty = TypeObjectUtils::build_complete_struct_member(common_OrderQty, detail_OrderQty); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_OrderQty); + } + { + TypeIdentifierPair type_ids_OrdType; + ReturnCode_t return_code_OrdType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrdType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_OrdType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrdType) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "OrdType Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_OrdType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrdType = 0x0000000c; + bool common_OrdType_ec {false}; + CommonStructMember common_OrdType {TypeObjectUtils::build_common_struct_member(member_id_OrdType, member_flags_OrdType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrdType, common_OrdType_ec))}; + if (!common_OrdType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrdType member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrdType = "OrdType"; + eprosima::fastcdr::optional member_ann_builtin_OrdType; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_OrdType = TypeObjectUtils::build_complete_member_detail(name_OrdType, member_ann_builtin_OrdType, ann_custom_NewOrderSingle); + CompleteStructMember member_OrdType = TypeObjectUtils::build_complete_struct_member(common_OrdType, detail_OrdType); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_OrdType); + } + { + TypeIdentifierPair type_ids_Price; + ReturnCode_t return_code_Price {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Price = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_float", type_ids_Price); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Price) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "Price Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_Price = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Price = 0x0000000d; + bool common_Price_ec {false}; + CommonStructMember common_Price {TypeObjectUtils::build_common_struct_member(member_id_Price, member_flags_Price, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Price, common_Price_ec))}; + if (!common_Price_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Price member TypeIdentifier inconsistent."); + return; + } + MemberName name_Price = "Price"; + eprosima::fastcdr::optional member_ann_builtin_Price; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_Price = TypeObjectUtils::build_complete_member_detail(name_Price, member_ann_builtin_Price, ann_custom_NewOrderSingle); + CompleteStructMember member_Price = TypeObjectUtils::build_complete_struct_member(common_Price, detail_Price); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_Price); + } + { + TypeIdentifierPair type_ids_StopPx; + ReturnCode_t return_code_StopPx {eprosima::fastdds::dds::RETCODE_OK}; + return_code_StopPx = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_float", type_ids_StopPx); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_StopPx) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "StopPx Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_StopPx = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_StopPx = 0x0000000e; + bool common_StopPx_ec {false}; + CommonStructMember common_StopPx {TypeObjectUtils::build_common_struct_member(member_id_StopPx, member_flags_StopPx, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_StopPx, common_StopPx_ec))}; + if (!common_StopPx_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure StopPx member TypeIdentifier inconsistent."); + return; + } + MemberName name_StopPx = "StopPx"; + eprosima::fastcdr::optional member_ann_builtin_StopPx; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_StopPx = TypeObjectUtils::build_complete_member_detail(name_StopPx, member_ann_builtin_StopPx, ann_custom_NewOrderSingle); + CompleteStructMember member_StopPx = TypeObjectUtils::build_complete_struct_member(common_StopPx, detail_StopPx); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_StopPx); + } + { + TypeIdentifierPair type_ids_TimeInForce; + ReturnCode_t return_code_TimeInForce {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TimeInForce = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_TimeInForce); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TimeInForce) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "TimeInForce Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_TimeInForce = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TimeInForce = 0x0000000f; + bool common_TimeInForce_ec {false}; + CommonStructMember common_TimeInForce {TypeObjectUtils::build_common_struct_member(member_id_TimeInForce, member_flags_TimeInForce, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TimeInForce, common_TimeInForce_ec))}; + if (!common_TimeInForce_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TimeInForce member TypeIdentifier inconsistent."); + return; + } + MemberName name_TimeInForce = "TimeInForce"; + eprosima::fastcdr::optional member_ann_builtin_TimeInForce; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_TimeInForce = TypeObjectUtils::build_complete_member_detail(name_TimeInForce, member_ann_builtin_TimeInForce, ann_custom_NewOrderSingle); + CompleteStructMember member_TimeInForce = TypeObjectUtils::build_complete_struct_member(common_TimeInForce, detail_TimeInForce); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_TimeInForce); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x00000010; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_NewOrderSingle.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_NewOrderSingle); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_NewOrderSingle, member_Text); + } + CompleteStructType struct_type_NewOrderSingle = TypeObjectUtils::build_complete_struct_type(struct_flags_NewOrderSingle, header_NewOrderSingle, member_seq_NewOrderSingle); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_NewOrderSingle, type_name_NewOrderSingle.to_string(), type_ids_NewOrderSingle)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_NewOrderSingle::NewOrderSingle already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_NewOrderSingle + diff --git a/GenTools/idl/NewOrderSingleTypeObjectSupport.hpp b/GenTools/idl/NewOrderSingleTypeObjectSupport.hpp new file mode 100644 index 0000000..9193b21 --- /dev/null +++ b/GenTools/idl/NewOrderSingleTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 NewOrderSingleTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLE_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLE_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_NewOrderSingle { +/** + * @brief Register NewOrderSingle related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_NewOrderSingle_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_NewOrderSingle + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_NEWORDERSINGLE_NEWORDERSINGLE_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/OrderCancelReject.hpp b/GenTools/idl/OrderCancelReject.hpp new file mode 100644 index 0000000..fc9a608 --- /dev/null +++ b/GenTools/idl/OrderCancelReject.hpp @@ -0,0 +1,682 @@ +// 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 OrderCancelReject.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECT_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(ORDERCANCELREJECT_SOURCE) +#define ORDERCANCELREJECT_DllAPI __declspec( dllexport ) +#else +#define ORDERCANCELREJECT_DllAPI __declspec( dllimport ) +#endif // ORDERCANCELREJECT_SOURCE +#else +#define ORDERCANCELREJECT_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define ORDERCANCELREJECT_DllAPI +#endif // _WIN32 + +namespace DistributedATS_OrderCancelReject { + +/*! + * @brief This class represents the structure OrderCancelReject defined by the user in the IDL file. + * @ingroup OrderCancelReject + */ +class OrderCancelReject +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport OrderCancelReject() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~OrderCancelReject() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object OrderCancelReject that will be copied. + */ + eProsima_user_DllExport OrderCancelReject( + const OrderCancelReject& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_OrderID = x.m_OrderID; + + m_ClOrdID = x.m_ClOrdID; + + m_OrigClOrdID = x.m_OrigClOrdID; + + m_OrdStatus = x.m_OrdStatus; + + m_TransactTime = x.m_TransactTime; + + m_CxlRejResponseTo = x.m_CxlRejResponseTo; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object OrderCancelReject that will be copied. + */ + eProsima_user_DllExport OrderCancelReject( + OrderCancelReject&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_OrderID = std::move(x.m_OrderID); + m_ClOrdID = std::move(x.m_ClOrdID); + m_OrigClOrdID = std::move(x.m_OrigClOrdID); + m_OrdStatus = x.m_OrdStatus; + m_TransactTime = x.m_TransactTime; + m_CxlRejResponseTo = x.m_CxlRejResponseTo; + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object OrderCancelReject that will be copied. + */ + eProsima_user_DllExport OrderCancelReject& operator =( + const OrderCancelReject& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_OrderID = x.m_OrderID; + + m_ClOrdID = x.m_ClOrdID; + + m_OrigClOrdID = x.m_OrigClOrdID; + + m_OrdStatus = x.m_OrdStatus; + + m_TransactTime = x.m_TransactTime; + + m_CxlRejResponseTo = x.m_CxlRejResponseTo; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object OrderCancelReject that will be copied. + */ + eProsima_user_DllExport OrderCancelReject& operator =( + OrderCancelReject&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_OrderID = std::move(x.m_OrderID); + m_ClOrdID = std::move(x.m_ClOrdID); + m_OrigClOrdID = std::move(x.m_OrigClOrdID); + m_OrdStatus = x.m_OrdStatus; + m_TransactTime = x.m_TransactTime; + m_CxlRejResponseTo = x.m_CxlRejResponseTo; + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x OrderCancelReject object to compare. + */ + eProsima_user_DllExport bool operator ==( + const OrderCancelReject& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_OrderID == x.m_OrderID && + m_ClOrdID == x.m_ClOrdID && + m_OrigClOrdID == x.m_OrigClOrdID && + m_OrdStatus == x.m_OrdStatus && + m_TransactTime == x.m_TransactTime && + m_CxlRejResponseTo == x.m_CxlRejResponseTo && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x OrderCancelReject object to compare. + */ + eProsima_user_DllExport bool operator !=( + const OrderCancelReject& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member OrderID + * @param _OrderID New value to be copied in member OrderID + */ + eProsima_user_DllExport void OrderID( + const std::string& _OrderID) + { + m_OrderID = _OrderID; + } + + /*! + * @brief This function moves the value in member OrderID + * @param _OrderID New value to be moved in member OrderID + */ + eProsima_user_DllExport void OrderID( + std::string&& _OrderID) + { + m_OrderID = std::move(_OrderID); + } + + /*! + * @brief This function returns a constant reference to member OrderID + * @return Constant reference to member OrderID + */ + eProsima_user_DllExport const std::string& OrderID() const + { + return m_OrderID; + } + + /*! + * @brief This function returns a reference to member OrderID + * @return Reference to member OrderID + */ + eProsima_user_DllExport std::string& OrderID() + { + return m_OrderID; + } + + + /*! + * @brief This function copies the value in member ClOrdID + * @param _ClOrdID New value to be copied in member ClOrdID + */ + eProsima_user_DllExport void ClOrdID( + const std::string& _ClOrdID) + { + m_ClOrdID = _ClOrdID; + } + + /*! + * @brief This function moves the value in member ClOrdID + * @param _ClOrdID New value to be moved in member ClOrdID + */ + eProsima_user_DllExport void ClOrdID( + std::string&& _ClOrdID) + { + m_ClOrdID = std::move(_ClOrdID); + } + + /*! + * @brief This function returns a constant reference to member ClOrdID + * @return Constant reference to member ClOrdID + */ + eProsima_user_DllExport const std::string& ClOrdID() const + { + return m_ClOrdID; + } + + /*! + * @brief This function returns a reference to member ClOrdID + * @return Reference to member ClOrdID + */ + eProsima_user_DllExport std::string& ClOrdID() + { + return m_ClOrdID; + } + + + /*! + * @brief This function copies the value in member OrigClOrdID + * @param _OrigClOrdID New value to be copied in member OrigClOrdID + */ + eProsima_user_DllExport void OrigClOrdID( + const std::string& _OrigClOrdID) + { + m_OrigClOrdID = _OrigClOrdID; + } + + /*! + * @brief This function moves the value in member OrigClOrdID + * @param _OrigClOrdID New value to be moved in member OrigClOrdID + */ + eProsima_user_DllExport void OrigClOrdID( + std::string&& _OrigClOrdID) + { + m_OrigClOrdID = std::move(_OrigClOrdID); + } + + /*! + * @brief This function returns a constant reference to member OrigClOrdID + * @return Constant reference to member OrigClOrdID + */ + eProsima_user_DllExport const std::string& OrigClOrdID() const + { + return m_OrigClOrdID; + } + + /*! + * @brief This function returns a reference to member OrigClOrdID + * @return Reference to member OrigClOrdID + */ + eProsima_user_DllExport std::string& OrigClOrdID() + { + return m_OrigClOrdID; + } + + + /*! + * @brief This function sets a value in member OrdStatus + * @param _OrdStatus New value for member OrdStatus + */ + eProsima_user_DllExport void OrdStatus( + char _OrdStatus) + { + m_OrdStatus = _OrdStatus; + } + + /*! + * @brief This function returns the value of member OrdStatus + * @return Value of member OrdStatus + */ + eProsima_user_DllExport char OrdStatus() const + { + return m_OrdStatus; + } + + /*! + * @brief This function returns a reference to member OrdStatus + * @return Reference to member OrdStatus + */ + eProsima_user_DllExport char& OrdStatus() + { + return m_OrdStatus; + } + + + /*! + * @brief This function sets a value in member TransactTime + * @param _TransactTime New value for member TransactTime + */ + eProsima_user_DllExport void TransactTime( + uint64_t _TransactTime) + { + m_TransactTime = _TransactTime; + } + + /*! + * @brief This function returns the value of member TransactTime + * @return Value of member TransactTime + */ + eProsima_user_DllExport uint64_t TransactTime() const + { + return m_TransactTime; + } + + /*! + * @brief This function returns a reference to member TransactTime + * @return Reference to member TransactTime + */ + eProsima_user_DllExport uint64_t& TransactTime() + { + return m_TransactTime; + } + + + /*! + * @brief This function sets a value in member CxlRejResponseTo + * @param _CxlRejResponseTo New value for member CxlRejResponseTo + */ + eProsima_user_DllExport void CxlRejResponseTo( + char _CxlRejResponseTo) + { + m_CxlRejResponseTo = _CxlRejResponseTo; + } + + /*! + * @brief This function returns the value of member CxlRejResponseTo + * @return Value of member CxlRejResponseTo + */ + eProsima_user_DllExport char CxlRejResponseTo() const + { + return m_CxlRejResponseTo; + } + + /*! + * @brief This function returns a reference to member CxlRejResponseTo + * @return Reference to member CxlRejResponseTo + */ + eProsima_user_DllExport char& CxlRejResponseTo() + { + return m_CxlRejResponseTo; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_OrderID; + std::string m_ClOrdID; + std::string m_OrigClOrdID; + char m_OrdStatus{0}; + uint64_t m_TransactTime{0}; + char m_CxlRejResponseTo{0}; + std::string m_Text; + +}; + +} // namespace DistributedATS_OrderCancelReject + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECT_HPP_ + + diff --git a/GenTools/idl/OrderCancelReject.idl b/GenTools/idl/OrderCancelReject.idl index 6d783de..d383cad 100644 --- a/GenTools/idl/OrderCancelReject.idl +++ b/GenTools/idl/OrderCancelReject.idl @@ -1,13 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_OrderCancelReject { - @topic + struct OrderCancelReject { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string OrderID; string ClOrdID; string OrigClOrdID; diff --git a/GenTools/idl/OrderCancelRejectAdapter.cpp b/GenTools/idl/OrderCancelRejectAdapter.cpp index 404160b..7773175 100644 --- a/GenTools/idl/OrderCancelRejectAdapter.cpp +++ b/GenTools/idl/OrderCancelRejectAdapter.cpp @@ -1,34 +1,34 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "OrderCancelRejectAdapter.hpp" -#include "ConvertUtils.h" +#include void OrderCancelRejectAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_OrderCancelReject::OrderCancelReject& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::OrderID) ) - ddsMsg.OrderID = CORBA::string_dup(((FIX::OrderID)fixMsg.getField(FIX::FIELD::OrderID)).getString().c_str()); + ddsMsg.OrderID ( ((FIX::OrderID)fixMsg.getField(FIX::FIELD::OrderID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::ClOrdID) ) - ddsMsg.ClOrdID = CORBA::string_dup(((FIX::ClOrdID)fixMsg.getField(FIX::FIELD::ClOrdID)).getString().c_str()); + ddsMsg.ClOrdID ( ((FIX::ClOrdID)fixMsg.getField(FIX::FIELD::ClOrdID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::OrigClOrdID) ) - ddsMsg.OrigClOrdID = CORBA::string_dup(((FIX::OrigClOrdID)fixMsg.getField(FIX::FIELD::OrigClOrdID)).getString().c_str()); + ddsMsg.OrigClOrdID ( ((FIX::OrigClOrdID)fixMsg.getField(FIX::FIELD::OrigClOrdID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::OrdStatus) ) - ddsMsg.OrdStatus = FIELD_GET_REF( fixMsg,OrdStatus); + ddsMsg.OrdStatus ( FIELD_GET_REF( fixMsg,OrdStatus)); if (fixMsg.isSetField(FIX::FIELD::TransactTime) ) - ddsMsg.TransactTime = ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate(); + ddsMsg.TransactTime ( ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate()); else - ddsMsg.TransactTime = 0; + ddsMsg.TransactTime ( 0 ); if (fixMsg.isSetField(FIX::FIELD::CxlRejResponseTo) ) - ddsMsg.CxlRejResponseTo = FIELD_GET_REF( fixMsg,CxlRejResponseTo); + ddsMsg.CxlRejResponseTo ( FIELD_GET_REF( fixMsg,CxlRejResponseTo)); if (fixMsg.isSetField(FIX::FIELD::Text) ) - ddsMsg.Text = CORBA::string_dup(((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.Text ( ((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); }; @@ -37,23 +37,23 @@ void OrderCancelRejectAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedAT void OrderCancelRejectAdapter::DDS2FIX(const DistributedATS_OrderCancelReject::OrderCancelReject& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.OrderID.in(), FIX::FIELD::OrderID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.OrderID(), FIX::FIELD::OrderID, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.ClOrdID.in(), FIX::FIELD::ClOrdID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.ClOrdID(), FIX::FIELD::ClOrdID, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.OrigClOrdID.in(), FIX::FIELD::OrigClOrdID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.OrigClOrdID(), FIX::FIELD::OrigClOrdID, fixMsg); - FIX::OrdStatus fixOrdStatus(ddsMsg.OrdStatus); + FIX::OrdStatus fixOrdStatus(ddsMsg.OrdStatus()); fixMsg.setField(fixOrdStatus); - DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime, FIX::FIELD::TransactTime, fixMsg); + DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime(), FIX::FIELD::TransactTime, fixMsg); - FIX::CxlRejResponseTo fixCxlRejResponseTo(ddsMsg.CxlRejResponseTo); + FIX::CxlRejResponseTo fixCxlRejResponseTo(ddsMsg.CxlRejResponseTo()); fixMsg.setField(fixCxlRejResponseTo); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Text.in(), FIX::FIELD::Text, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Text(), FIX::FIELD::Text, fixMsg); }; diff --git a/GenTools/idl/OrderCancelRejectAdapter.hpp b/GenTools/idl/OrderCancelRejectAdapter.hpp index b057cc0..cf77671 100644 --- a/GenTools/idl/OrderCancelRejectAdapter.hpp +++ b/GenTools/idl/OrderCancelRejectAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __OrderCancelReject_h__ -#define __OrderCancelReject_h__ - -#include "OrderCancelRejectTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "OrderCancelReject.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class OrderCancelRejectAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_OrderCancelReject::OrderCancelReject& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_OrderCancelReject::OrderCancelReject& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/OrderCancelRejectCdrAux.hpp b/GenTools/idl/OrderCancelRejectCdrAux.hpp new file mode 100644 index 0000000..8f66693 --- /dev/null +++ b/GenTools/idl/OrderCancelRejectCdrAux.hpp @@ -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 OrderCancelRejectCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECTCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECTCDRAUX_HPP + +#include "OrderCancelReject.hpp" + +constexpr uint32_t DistributedATS_OrderCancelReject_OrderCancelReject_max_cdr_typesize {3680UL}; +constexpr uint32_t DistributedATS_OrderCancelReject_OrderCancelReject_max_key_cdr_typesize {0UL}; + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderCancelReject::OrderCancelReject& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECTCDRAUX_HPP + diff --git a/GenTools/idl/OrderCancelRejectCdrAux.ipp b/GenTools/idl/OrderCancelRejectCdrAux.ipp new file mode 100644 index 0000000..1440c21 --- /dev/null +++ b/GenTools/idl/OrderCancelRejectCdrAux.ipp @@ -0,0 +1,253 @@ +// 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 OrderCancelRejectCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECTCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECTCDRAUX_IPP + +#include "OrderCancelRejectCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_OrderCancelReject::OrderCancelReject& data, + size_t& current_alignment) +{ + using namespace DistributedATS_OrderCancelReject; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.OrderID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.ClOrdID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.OrigClOrdID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.OrdStatus(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(9), + data.TransactTime(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(10), + data.CxlRejResponseTo(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(11), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderCancelReject::OrderCancelReject& data) +{ + using namespace DistributedATS_OrderCancelReject; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.OrderID() + << eprosima::fastcdr::MemberId(6) << data.ClOrdID() + << eprosima::fastcdr::MemberId(7) << data.OrigClOrdID() + << eprosima::fastcdr::MemberId(8) << data.OrdStatus() + << eprosima::fastcdr::MemberId(9) << data.TransactTime() + << eprosima::fastcdr::MemberId(10) << data.CxlRejResponseTo() + << eprosima::fastcdr::MemberId(11) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_OrderCancelReject::OrderCancelReject& data) +{ + using namespace DistributedATS_OrderCancelReject; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.OrderID(); + break; + + case 6: + dcdr >> data.ClOrdID(); + break; + + case 7: + dcdr >> data.OrigClOrdID(); + break; + + case 8: + dcdr >> data.OrdStatus(); + break; + + case 9: + dcdr >> data.TransactTime(); + break; + + case 10: + dcdr >> data.CxlRejResponseTo(); + break; + + case 11: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderCancelReject::OrderCancelReject& data) +{ + using namespace DistributedATS_OrderCancelReject; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.OrderID(); + + scdr << data.ClOrdID(); + + scdr << data.OrigClOrdID(); + + scdr << data.OrdStatus(); + + scdr << data.TransactTime(); + + scdr << data.CxlRejResponseTo(); + + scdr << data.Text(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECTCDRAUX_IPP + diff --git a/GenTools/idl/OrderCancelRejectLogger.hpp b/GenTools/idl/OrderCancelRejectLogger.hpp index 336a33b..4db7239 100644 --- a/GenTools/idl/OrderCancelRejectLogger.hpp +++ b/GenTools/idl/OrderCancelRejectLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __OrderCancelRejectLogger_h__ -#define __OrderCancelRejectLogger_h__ - -#include "OrderCancelRejectTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,21 +10,24 @@ class OrderCancelRejectLogger static void log(std::ostream & out, DistributedATS_OrderCancelReject::OrderCancelReject& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : OrderCancelReject { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.OrderID : " << ddsMsg.OrderID << std::endl - << "ddsMsg.ClOrdID : " << ddsMsg.ClOrdID << std::endl - << "ddsMsg.OrigClOrdID : " << ddsMsg.OrigClOrdID << std::endl - << "ddsMsg.OrdStatus : " << ddsMsg.OrdStatus << std::endl - << "ddsMsg.TransactTime : " << ddsMsg.TransactTime << std::endl - << "ddsMsg.CxlRejResponseTo : " << ddsMsg.CxlRejResponseTo << std::endl - << "ddsMsg.Text : " << ddsMsg.Text << std::endl + << "ddsMsg.OrderID : " << ddsMsg.OrderID() << std::endl + << "ddsMsg.ClOrdID : " << ddsMsg.ClOrdID() << std::endl + << "ddsMsg.OrigClOrdID : " << ddsMsg.OrigClOrdID() << std::endl + << "ddsMsg.OrdStatus : " << ddsMsg.OrdStatus() << std::endl + << "ddsMsg.TransactTime : " << ddsMsg.TransactTime() << std::endl + << "ddsMsg.CxlRejResponseTo : " << ddsMsg.CxlRejResponseTo() << std::endl + << "ddsMsg.Text : " << ddsMsg.Text() << std::endl ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/OrderCancelRejectPubSubTypes.cxx b/GenTools/idl/OrderCancelRejectPubSubTypes.cxx new file mode 100644 index 0000000..3d9ee23 --- /dev/null +++ b/GenTools/idl/OrderCancelRejectPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 OrderCancelRejectPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "OrderCancelRejectPubSubTypes.hpp" + +#include +#include + +#include "OrderCancelRejectCdrAux.hpp" +#include "OrderCancelRejectTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_OrderCancelReject { + OrderCancelRejectPubSubType::OrderCancelRejectPubSubType() + { + set_name("DistributedATS_OrderCancelReject::OrderCancelReject"); + uint32_t type_size = DistributedATS_OrderCancelReject_OrderCancelReject_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_OrderCancelReject_OrderCancelReject_max_key_cdr_typesize > 16 ? DistributedATS_OrderCancelReject_OrderCancelReject_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + OrderCancelRejectPubSubType::~OrderCancelRejectPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool OrderCancelRejectPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const OrderCancelReject* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool OrderCancelRejectPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + OrderCancelReject* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t OrderCancelRejectPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* OrderCancelRejectPubSubType::create_data() + { + return reinterpret_cast(new OrderCancelReject()); + } + + void OrderCancelRejectPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool OrderCancelRejectPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + OrderCancelReject data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool OrderCancelRejectPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const OrderCancelReject* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_OrderCancelReject_OrderCancelReject_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_OrderCancelReject_OrderCancelReject_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void OrderCancelRejectPubSubType::register_type_object_representation() + { + register_OrderCancelReject_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_OrderCancelReject + + +// Include auxiliary functions like for serializing/deserializing. +#include "OrderCancelRejectCdrAux.ipp" diff --git a/GenTools/idl/OrderCancelRejectPubSubTypes.hpp b/GenTools/idl/OrderCancelRejectPubSubTypes.hpp new file mode 100644 index 0000000..b0ea9ed --- /dev/null +++ b/GenTools/idl/OrderCancelRejectPubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 OrderCancelRejectPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECT_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECT_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "OrderCancelReject.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated OrderCancelReject is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_OrderCancelReject +{ + + /*! + * @brief This class represents the TopicDataType of the type OrderCancelReject defined by the user in the IDL file. + * @ingroup OrderCancelReject + */ + class OrderCancelRejectPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef OrderCancelReject type; + + eProsima_user_DllExport OrderCancelRejectPubSubType(); + + eProsima_user_DllExport ~OrderCancelRejectPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_OrderCancelReject + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECT_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/OrderCancelRejectTypeObjectSupport.cxx b/GenTools/idl/OrderCancelRejectTypeObjectSupport.cxx new file mode 100644 index 0000000..fc39512 --- /dev/null +++ b/GenTools/idl/OrderCancelRejectTypeObjectSupport.cxx @@ -0,0 +1,496 @@ +// 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 OrderCancelRejectTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "OrderCancelRejectTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "OrderCancelReject.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_OrderCancelReject { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_OrderCancelReject_type_identifier( + TypeIdentifierPair& type_ids_OrderCancelReject) +{ + + ReturnCode_t return_code_OrderCancelReject {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderCancelReject = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_OrderCancelReject::OrderCancelReject", type_ids_OrderCancelReject); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderCancelReject) + { + StructTypeFlag struct_flags_OrderCancelReject = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_OrderCancelReject = "DistributedATS_OrderCancelReject::OrderCancelReject"; + eprosima::fastcdr::optional type_ann_builtin_OrderCancelReject; + eprosima::fastcdr::optional ann_custom_OrderCancelReject; + CompleteTypeDetail detail_OrderCancelReject = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_OrderCancelReject, ann_custom_OrderCancelReject, type_name_OrderCancelReject.to_string()); + CompleteStructHeader header_OrderCancelReject; + header_OrderCancelReject = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_OrderCancelReject); + CompleteStructMemberSeq member_seq_OrderCancelReject; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_OrderCancelReject.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_OrderCancelReject); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReject, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_OrderCancelReject.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_OrderCancelReject); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReject, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_OrderCancelReject.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_OrderCancelReject); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReject, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_OrderCancelReject.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_OrderCancelReject); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReject, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_OrderCancelReject.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_OrderCancelReject); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReject, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_OrderID; + ReturnCode_t return_code_OrderID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_OrderID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_OrderID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_OrderID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrderID = 0x00000005; + bool common_OrderID_ec {false}; + CommonStructMember common_OrderID {TypeObjectUtils::build_common_struct_member(member_id_OrderID, member_flags_OrderID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrderID, common_OrderID_ec))}; + if (!common_OrderID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrderID member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrderID = "OrderID"; + eprosima::fastcdr::optional member_ann_builtin_OrderID; + ann_custom_OrderCancelReject.reset(); + CompleteMemberDetail detail_OrderID = TypeObjectUtils::build_complete_member_detail(name_OrderID, member_ann_builtin_OrderID, ann_custom_OrderCancelReject); + CompleteStructMember member_OrderID = TypeObjectUtils::build_complete_struct_member(common_OrderID, detail_OrderID); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReject, member_OrderID); + } + { + TypeIdentifierPair type_ids_ClOrdID; + ReturnCode_t return_code_ClOrdID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ClOrdID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_ClOrdID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ClOrdID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_ClOrdID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_ClOrdID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_ClOrdID = 0x00000006; + bool common_ClOrdID_ec {false}; + CommonStructMember common_ClOrdID {TypeObjectUtils::build_common_struct_member(member_id_ClOrdID, member_flags_ClOrdID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_ClOrdID, common_ClOrdID_ec))}; + if (!common_ClOrdID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure ClOrdID member TypeIdentifier inconsistent."); + return; + } + MemberName name_ClOrdID = "ClOrdID"; + eprosima::fastcdr::optional member_ann_builtin_ClOrdID; + ann_custom_OrderCancelReject.reset(); + CompleteMemberDetail detail_ClOrdID = TypeObjectUtils::build_complete_member_detail(name_ClOrdID, member_ann_builtin_ClOrdID, ann_custom_OrderCancelReject); + CompleteStructMember member_ClOrdID = TypeObjectUtils::build_complete_struct_member(common_ClOrdID, detail_ClOrdID); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReject, member_ClOrdID); + } + { + TypeIdentifierPair type_ids_OrigClOrdID; + ReturnCode_t return_code_OrigClOrdID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrigClOrdID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_OrigClOrdID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrigClOrdID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_OrigClOrdID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_OrigClOrdID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrigClOrdID = 0x00000007; + bool common_OrigClOrdID_ec {false}; + CommonStructMember common_OrigClOrdID {TypeObjectUtils::build_common_struct_member(member_id_OrigClOrdID, member_flags_OrigClOrdID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrigClOrdID, common_OrigClOrdID_ec))}; + if (!common_OrigClOrdID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrigClOrdID member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrigClOrdID = "OrigClOrdID"; + eprosima::fastcdr::optional member_ann_builtin_OrigClOrdID; + ann_custom_OrderCancelReject.reset(); + CompleteMemberDetail detail_OrigClOrdID = TypeObjectUtils::build_complete_member_detail(name_OrigClOrdID, member_ann_builtin_OrigClOrdID, ann_custom_OrderCancelReject); + CompleteStructMember member_OrigClOrdID = TypeObjectUtils::build_complete_struct_member(common_OrigClOrdID, detail_OrigClOrdID); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReject, member_OrigClOrdID); + } + { + TypeIdentifierPair type_ids_OrdStatus; + ReturnCode_t return_code_OrdStatus {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrdStatus = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_OrdStatus); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrdStatus) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "OrdStatus Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_OrdStatus = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrdStatus = 0x00000008; + bool common_OrdStatus_ec {false}; + CommonStructMember common_OrdStatus {TypeObjectUtils::build_common_struct_member(member_id_OrdStatus, member_flags_OrdStatus, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrdStatus, common_OrdStatus_ec))}; + if (!common_OrdStatus_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrdStatus member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrdStatus = "OrdStatus"; + eprosima::fastcdr::optional member_ann_builtin_OrdStatus; + ann_custom_OrderCancelReject.reset(); + CompleteMemberDetail detail_OrdStatus = TypeObjectUtils::build_complete_member_detail(name_OrdStatus, member_ann_builtin_OrdStatus, ann_custom_OrderCancelReject); + CompleteStructMember member_OrdStatus = TypeObjectUtils::build_complete_struct_member(common_OrdStatus, detail_OrdStatus); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReject, member_OrdStatus); + } + { + TypeIdentifierPair type_ids_TransactTime; + ReturnCode_t return_code_TransactTime {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TransactTime = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_uint64_t", type_ids_TransactTime); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TransactTime) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "TransactTime Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_TransactTime = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TransactTime = 0x00000009; + bool common_TransactTime_ec {false}; + CommonStructMember common_TransactTime {TypeObjectUtils::build_common_struct_member(member_id_TransactTime, member_flags_TransactTime, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TransactTime, common_TransactTime_ec))}; + if (!common_TransactTime_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TransactTime member TypeIdentifier inconsistent."); + return; + } + MemberName name_TransactTime = "TransactTime"; + eprosima::fastcdr::optional member_ann_builtin_TransactTime; + ann_custom_OrderCancelReject.reset(); + CompleteMemberDetail detail_TransactTime = TypeObjectUtils::build_complete_member_detail(name_TransactTime, member_ann_builtin_TransactTime, ann_custom_OrderCancelReject); + CompleteStructMember member_TransactTime = TypeObjectUtils::build_complete_struct_member(common_TransactTime, detail_TransactTime); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReject, member_TransactTime); + } + { + TypeIdentifierPair type_ids_CxlRejResponseTo; + ReturnCode_t return_code_CxlRejResponseTo {eprosima::fastdds::dds::RETCODE_OK}; + return_code_CxlRejResponseTo = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_CxlRejResponseTo); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_CxlRejResponseTo) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "CxlRejResponseTo Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_CxlRejResponseTo = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_CxlRejResponseTo = 0x0000000a; + bool common_CxlRejResponseTo_ec {false}; + CommonStructMember common_CxlRejResponseTo {TypeObjectUtils::build_common_struct_member(member_id_CxlRejResponseTo, member_flags_CxlRejResponseTo, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_CxlRejResponseTo, common_CxlRejResponseTo_ec))}; + if (!common_CxlRejResponseTo_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure CxlRejResponseTo member TypeIdentifier inconsistent."); + return; + } + MemberName name_CxlRejResponseTo = "CxlRejResponseTo"; + eprosima::fastcdr::optional member_ann_builtin_CxlRejResponseTo; + ann_custom_OrderCancelReject.reset(); + CompleteMemberDetail detail_CxlRejResponseTo = TypeObjectUtils::build_complete_member_detail(name_CxlRejResponseTo, member_ann_builtin_CxlRejResponseTo, ann_custom_OrderCancelReject); + CompleteStructMember member_CxlRejResponseTo = TypeObjectUtils::build_complete_struct_member(common_CxlRejResponseTo, detail_CxlRejResponseTo); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReject, member_CxlRejResponseTo); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x0000000b; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_OrderCancelReject.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_OrderCancelReject); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReject, member_Text); + } + CompleteStructType struct_type_OrderCancelReject = TypeObjectUtils::build_complete_struct_type(struct_flags_OrderCancelReject, header_OrderCancelReject, member_seq_OrderCancelReject); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_OrderCancelReject, type_name_OrderCancelReject.to_string(), type_ids_OrderCancelReject)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_OrderCancelReject::OrderCancelReject already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_OrderCancelReject + diff --git a/GenTools/idl/OrderCancelRejectTypeObjectSupport.hpp b/GenTools/idl/OrderCancelRejectTypeObjectSupport.hpp new file mode 100644 index 0000000..c1166ff --- /dev/null +++ b/GenTools/idl/OrderCancelRejectTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 OrderCancelRejectTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECT_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECT_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_OrderCancelReject { +/** + * @brief Register OrderCancelReject related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_OrderCancelReject_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_OrderCancelReject + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREJECT_ORDERCANCELREJECT_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/OrderCancelReplaceRequest.hpp b/GenTools/idl/OrderCancelReplaceRequest.hpp new file mode 100644 index 0000000..2908ac9 --- /dev/null +++ b/GenTools/idl/OrderCancelReplaceRequest.hpp @@ -0,0 +1,924 @@ +// 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 OrderCancelReplaceRequest.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUEST_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUEST_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(ORDERCANCELREPLACEREQUEST_SOURCE) +#define ORDERCANCELREPLACEREQUEST_DllAPI __declspec( dllexport ) +#else +#define ORDERCANCELREPLACEREQUEST_DllAPI __declspec( dllimport ) +#endif // ORDERCANCELREPLACEREQUEST_SOURCE +#else +#define ORDERCANCELREPLACEREQUEST_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define ORDERCANCELREPLACEREQUEST_DllAPI +#endif // _WIN32 + +namespace DistributedATS_OrderCancelReplaceRequest { + +/*! + * @brief This class represents the structure OrderCancelReplaceRequest defined by the user in the IDL file. + * @ingroup OrderCancelReplaceRequest + */ +class OrderCancelReplaceRequest +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport OrderCancelReplaceRequest() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~OrderCancelReplaceRequest() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object OrderCancelReplaceRequest that will be copied. + */ + eProsima_user_DllExport OrderCancelReplaceRequest( + const OrderCancelReplaceRequest& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_OrigClOrdID = x.m_OrigClOrdID; + + m_ClOrdID = x.m_ClOrdID; + + m_ExecInst = x.m_ExecInst; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_Side = x.m_Side; + + m_TransactTime = x.m_TransactTime; + + m_OrderQty = x.m_OrderQty; + + m_OrdType = x.m_OrdType; + + m_Price = x.m_Price; + + m_StopPx = x.m_StopPx; + + m_TimeInForce = x.m_TimeInForce; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object OrderCancelReplaceRequest that will be copied. + */ + eProsima_user_DllExport OrderCancelReplaceRequest( + OrderCancelReplaceRequest&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_OrigClOrdID = std::move(x.m_OrigClOrdID); + m_ClOrdID = std::move(x.m_ClOrdID); + m_ExecInst = std::move(x.m_ExecInst); + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_Side = x.m_Side; + m_TransactTime = x.m_TransactTime; + m_OrderQty = x.m_OrderQty; + m_OrdType = x.m_OrdType; + m_Price = x.m_Price; + m_StopPx = x.m_StopPx; + m_TimeInForce = x.m_TimeInForce; + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object OrderCancelReplaceRequest that will be copied. + */ + eProsima_user_DllExport OrderCancelReplaceRequest& operator =( + const OrderCancelReplaceRequest& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_OrigClOrdID = x.m_OrigClOrdID; + + m_ClOrdID = x.m_ClOrdID; + + m_ExecInst = x.m_ExecInst; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_Side = x.m_Side; + + m_TransactTime = x.m_TransactTime; + + m_OrderQty = x.m_OrderQty; + + m_OrdType = x.m_OrdType; + + m_Price = x.m_Price; + + m_StopPx = x.m_StopPx; + + m_TimeInForce = x.m_TimeInForce; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object OrderCancelReplaceRequest that will be copied. + */ + eProsima_user_DllExport OrderCancelReplaceRequest& operator =( + OrderCancelReplaceRequest&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_OrigClOrdID = std::move(x.m_OrigClOrdID); + m_ClOrdID = std::move(x.m_ClOrdID); + m_ExecInst = std::move(x.m_ExecInst); + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_Side = x.m_Side; + m_TransactTime = x.m_TransactTime; + m_OrderQty = x.m_OrderQty; + m_OrdType = x.m_OrdType; + m_Price = x.m_Price; + m_StopPx = x.m_StopPx; + m_TimeInForce = x.m_TimeInForce; + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x OrderCancelReplaceRequest object to compare. + */ + eProsima_user_DllExport bool operator ==( + const OrderCancelReplaceRequest& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_OrigClOrdID == x.m_OrigClOrdID && + m_ClOrdID == x.m_ClOrdID && + m_ExecInst == x.m_ExecInst && + m_Symbol == x.m_Symbol && + m_SecurityExchange == x.m_SecurityExchange && + m_Side == x.m_Side && + m_TransactTime == x.m_TransactTime && + m_OrderQty == x.m_OrderQty && + m_OrdType == x.m_OrdType && + m_Price == x.m_Price && + m_StopPx == x.m_StopPx && + m_TimeInForce == x.m_TimeInForce && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x OrderCancelReplaceRequest object to compare. + */ + eProsima_user_DllExport bool operator !=( + const OrderCancelReplaceRequest& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member OrigClOrdID + * @param _OrigClOrdID New value to be copied in member OrigClOrdID + */ + eProsima_user_DllExport void OrigClOrdID( + const std::string& _OrigClOrdID) + { + m_OrigClOrdID = _OrigClOrdID; + } + + /*! + * @brief This function moves the value in member OrigClOrdID + * @param _OrigClOrdID New value to be moved in member OrigClOrdID + */ + eProsima_user_DllExport void OrigClOrdID( + std::string&& _OrigClOrdID) + { + m_OrigClOrdID = std::move(_OrigClOrdID); + } + + /*! + * @brief This function returns a constant reference to member OrigClOrdID + * @return Constant reference to member OrigClOrdID + */ + eProsima_user_DllExport const std::string& OrigClOrdID() const + { + return m_OrigClOrdID; + } + + /*! + * @brief This function returns a reference to member OrigClOrdID + * @return Reference to member OrigClOrdID + */ + eProsima_user_DllExport std::string& OrigClOrdID() + { + return m_OrigClOrdID; + } + + + /*! + * @brief This function copies the value in member ClOrdID + * @param _ClOrdID New value to be copied in member ClOrdID + */ + eProsima_user_DllExport void ClOrdID( + const std::string& _ClOrdID) + { + m_ClOrdID = _ClOrdID; + } + + /*! + * @brief This function moves the value in member ClOrdID + * @param _ClOrdID New value to be moved in member ClOrdID + */ + eProsima_user_DllExport void ClOrdID( + std::string&& _ClOrdID) + { + m_ClOrdID = std::move(_ClOrdID); + } + + /*! + * @brief This function returns a constant reference to member ClOrdID + * @return Constant reference to member ClOrdID + */ + eProsima_user_DllExport const std::string& ClOrdID() const + { + return m_ClOrdID; + } + + /*! + * @brief This function returns a reference to member ClOrdID + * @return Reference to member ClOrdID + */ + eProsima_user_DllExport std::string& ClOrdID() + { + return m_ClOrdID; + } + + + /*! + * @brief This function copies the value in member ExecInst + * @param _ExecInst New value to be copied in member ExecInst + */ + eProsima_user_DllExport void ExecInst( + const std::string& _ExecInst) + { + m_ExecInst = _ExecInst; + } + + /*! + * @brief This function moves the value in member ExecInst + * @param _ExecInst New value to be moved in member ExecInst + */ + eProsima_user_DllExport void ExecInst( + std::string&& _ExecInst) + { + m_ExecInst = std::move(_ExecInst); + } + + /*! + * @brief This function returns a constant reference to member ExecInst + * @return Constant reference to member ExecInst + */ + eProsima_user_DllExport const std::string& ExecInst() const + { + return m_ExecInst; + } + + /*! + * @brief This function returns a reference to member ExecInst + * @return Reference to member ExecInst + */ + eProsima_user_DllExport std::string& ExecInst() + { + return m_ExecInst; + } + + + /*! + * @brief This function copies the value in member Symbol + * @param _Symbol New value to be copied in member Symbol + */ + eProsima_user_DllExport void Symbol( + const std::string& _Symbol) + { + m_Symbol = _Symbol; + } + + /*! + * @brief This function moves the value in member Symbol + * @param _Symbol New value to be moved in member Symbol + */ + eProsima_user_DllExport void Symbol( + std::string&& _Symbol) + { + m_Symbol = std::move(_Symbol); + } + + /*! + * @brief This function returns a constant reference to member Symbol + * @return Constant reference to member Symbol + */ + eProsima_user_DllExport const std::string& Symbol() const + { + return m_Symbol; + } + + /*! + * @brief This function returns a reference to member Symbol + * @return Reference to member Symbol + */ + eProsima_user_DllExport std::string& Symbol() + { + return m_Symbol; + } + + + /*! + * @brief This function copies the value in member SecurityExchange + * @param _SecurityExchange New value to be copied in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + const std::string& _SecurityExchange) + { + m_SecurityExchange = _SecurityExchange; + } + + /*! + * @brief This function moves the value in member SecurityExchange + * @param _SecurityExchange New value to be moved in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + std::string&& _SecurityExchange) + { + m_SecurityExchange = std::move(_SecurityExchange); + } + + /*! + * @brief This function returns a constant reference to member SecurityExchange + * @return Constant reference to member SecurityExchange + */ + eProsima_user_DllExport const std::string& SecurityExchange() const + { + return m_SecurityExchange; + } + + /*! + * @brief This function returns a reference to member SecurityExchange + * @return Reference to member SecurityExchange + */ + eProsima_user_DllExport std::string& SecurityExchange() + { + return m_SecurityExchange; + } + + + /*! + * @brief This function sets a value in member Side + * @param _Side New value for member Side + */ + eProsima_user_DllExport void Side( + char _Side) + { + m_Side = _Side; + } + + /*! + * @brief This function returns the value of member Side + * @return Value of member Side + */ + eProsima_user_DllExport char Side() const + { + return m_Side; + } + + /*! + * @brief This function returns a reference to member Side + * @return Reference to member Side + */ + eProsima_user_DllExport char& Side() + { + return m_Side; + } + + + /*! + * @brief This function sets a value in member TransactTime + * @param _TransactTime New value for member TransactTime + */ + eProsima_user_DllExport void TransactTime( + uint64_t _TransactTime) + { + m_TransactTime = _TransactTime; + } + + /*! + * @brief This function returns the value of member TransactTime + * @return Value of member TransactTime + */ + eProsima_user_DllExport uint64_t TransactTime() const + { + return m_TransactTime; + } + + /*! + * @brief This function returns a reference to member TransactTime + * @return Reference to member TransactTime + */ + eProsima_user_DllExport uint64_t& TransactTime() + { + return m_TransactTime; + } + + + /*! + * @brief This function sets a value in member OrderQty + * @param _OrderQty New value for member OrderQty + */ + eProsima_user_DllExport void OrderQty( + int32_t _OrderQty) + { + m_OrderQty = _OrderQty; + } + + /*! + * @brief This function returns the value of member OrderQty + * @return Value of member OrderQty + */ + eProsima_user_DllExport int32_t OrderQty() const + { + return m_OrderQty; + } + + /*! + * @brief This function returns a reference to member OrderQty + * @return Reference to member OrderQty + */ + eProsima_user_DllExport int32_t& OrderQty() + { + return m_OrderQty; + } + + + /*! + * @brief This function sets a value in member OrdType + * @param _OrdType New value for member OrdType + */ + eProsima_user_DllExport void OrdType( + char _OrdType) + { + m_OrdType = _OrdType; + } + + /*! + * @brief This function returns the value of member OrdType + * @return Value of member OrdType + */ + eProsima_user_DllExport char OrdType() const + { + return m_OrdType; + } + + /*! + * @brief This function returns a reference to member OrdType + * @return Reference to member OrdType + */ + eProsima_user_DllExport char& OrdType() + { + return m_OrdType; + } + + + /*! + * @brief This function sets a value in member Price + * @param _Price New value for member Price + */ + eProsima_user_DllExport void Price( + float _Price) + { + m_Price = _Price; + } + + /*! + * @brief This function returns the value of member Price + * @return Value of member Price + */ + eProsima_user_DllExport float Price() const + { + return m_Price; + } + + /*! + * @brief This function returns a reference to member Price + * @return Reference to member Price + */ + eProsima_user_DllExport float& Price() + { + return m_Price; + } + + + /*! + * @brief This function sets a value in member StopPx + * @param _StopPx New value for member StopPx + */ + eProsima_user_DllExport void StopPx( + float _StopPx) + { + m_StopPx = _StopPx; + } + + /*! + * @brief This function returns the value of member StopPx + * @return Value of member StopPx + */ + eProsima_user_DllExport float StopPx() const + { + return m_StopPx; + } + + /*! + * @brief This function returns a reference to member StopPx + * @return Reference to member StopPx + */ + eProsima_user_DllExport float& StopPx() + { + return m_StopPx; + } + + + /*! + * @brief This function sets a value in member TimeInForce + * @param _TimeInForce New value for member TimeInForce + */ + eProsima_user_DllExport void TimeInForce( + char _TimeInForce) + { + m_TimeInForce = _TimeInForce; + } + + /*! + * @brief This function returns the value of member TimeInForce + * @return Value of member TimeInForce + */ + eProsima_user_DllExport char TimeInForce() const + { + return m_TimeInForce; + } + + /*! + * @brief This function returns a reference to member TimeInForce + * @return Reference to member TimeInForce + */ + eProsima_user_DllExport char& TimeInForce() + { + return m_TimeInForce; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_OrigClOrdID; + std::string m_ClOrdID; + std::string m_ExecInst; + std::string m_Symbol; + std::string m_SecurityExchange; + char m_Side{0}; + uint64_t m_TransactTime{0}; + int32_t m_OrderQty{0}; + char m_OrdType{0}; + float m_Price{0.0}; + float m_StopPx{0.0}; + char m_TimeInForce{0}; + std::string m_Text; + +}; + +} // namespace DistributedATS_OrderCancelReplaceRequest + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUEST_HPP_ + + diff --git a/GenTools/idl/OrderCancelReplaceRequest.idl b/GenTools/idl/OrderCancelReplaceRequest.idl index 36b8525..59dcab2 100644 --- a/GenTools/idl/OrderCancelReplaceRequest.idl +++ b/GenTools/idl/OrderCancelReplaceRequest.idl @@ -1,13 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_OrderCancelReplaceRequest { - @topic + struct OrderCancelReplaceRequest { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string OrigClOrdID; string ClOrdID; string ExecInst; diff --git a/GenTools/idl/OrderCancelReplaceRequestAdapter.cpp b/GenTools/idl/OrderCancelReplaceRequestAdapter.cpp index 8e9f6ac..4e64b0b 100644 --- a/GenTools/idl/OrderCancelReplaceRequestAdapter.cpp +++ b/GenTools/idl/OrderCancelReplaceRequestAdapter.cpp @@ -1,58 +1,58 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "OrderCancelReplaceRequestAdapter.hpp" -#include "ConvertUtils.h" +#include void OrderCancelReplaceRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::OrigClOrdID) ) - ddsMsg.OrigClOrdID = CORBA::string_dup(((FIX::OrigClOrdID)fixMsg.getField(FIX::FIELD::OrigClOrdID)).getString().c_str()); + ddsMsg.OrigClOrdID ( ((FIX::OrigClOrdID)fixMsg.getField(FIX::FIELD::OrigClOrdID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::ClOrdID) ) - ddsMsg.ClOrdID = CORBA::string_dup(((FIX::ClOrdID)fixMsg.getField(FIX::FIELD::ClOrdID)).getString().c_str()); + ddsMsg.ClOrdID ( ((FIX::ClOrdID)fixMsg.getField(FIX::FIELD::ClOrdID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::ExecInst) ) - ddsMsg.ExecInst = CORBA::string_dup(((FIX::ExecInst)fixMsg.getField(FIX::FIELD::ExecInst)).getString().c_str()); + ddsMsg.ExecInst ( ((FIX::ExecInst)fixMsg.getField(FIX::FIELD::ExecInst)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::Symbol) ) - ddsMsg.Symbol = CORBA::string_dup(((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); + ddsMsg.Symbol ( ((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SecurityExchange) ) - ddsMsg.SecurityExchange = CORBA::string_dup(((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); + ddsMsg.SecurityExchange ( ((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::Side) ) - ddsMsg.Side = FIELD_GET_REF( fixMsg,Side); + ddsMsg.Side ( FIELD_GET_REF( fixMsg,Side)); if (fixMsg.isSetField(FIX::FIELD::TransactTime) ) - ddsMsg.TransactTime = ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate(); + ddsMsg.TransactTime ( ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate()); else - ddsMsg.TransactTime = 0; + ddsMsg.TransactTime ( 0 ); if (fixMsg.isSetField(FIX::FIELD::OrderQty) ) - ddsMsg.OrderQty = FIELD_GET_REF( fixMsg,OrderQty); + ddsMsg.OrderQty ( FIELD_GET_REF( fixMsg,OrderQty)); else - ddsMsg.OrderQty = 0; + ddsMsg.OrderQty ( 0 ); if (fixMsg.isSetField(FIX::FIELD::OrdType) ) - ddsMsg.OrdType = FIELD_GET_REF( fixMsg,OrdType); + ddsMsg.OrdType ( FIELD_GET_REF( fixMsg,OrdType)); if (fixMsg.isSetField(FIX::FIELD::Price) ) - ddsMsg.Price = FIELD_GET_REF( fixMsg,Price); + ddsMsg.Price ( FIELD_GET_REF( fixMsg,Price)); else - ddsMsg.Price = 0; + ddsMsg.Price ( 0 ); if (fixMsg.isSetField(FIX::FIELD::StopPx) ) - ddsMsg.StopPx = FIELD_GET_REF( fixMsg,StopPx); + ddsMsg.StopPx ( FIELD_GET_REF( fixMsg,StopPx)); else - ddsMsg.StopPx = 0; + ddsMsg.StopPx ( 0 ); if (fixMsg.isSetField(FIX::FIELD::TimeInForce) ) - ddsMsg.TimeInForce = FIELD_GET_REF( fixMsg,TimeInForce); + ddsMsg.TimeInForce ( FIELD_GET_REF( fixMsg,TimeInForce)); if (fixMsg.isSetField(FIX::FIELD::Text) ) - ddsMsg.Text = CORBA::string_dup(((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.Text ( ((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); }; @@ -61,39 +61,39 @@ void OrderCancelReplaceRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, Distr void OrderCancelReplaceRequestAdapter::DDS2FIX(const DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.OrigClOrdID.in(), FIX::FIELD::OrigClOrdID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.OrigClOrdID(), FIX::FIELD::OrigClOrdID, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.ClOrdID.in(), FIX::FIELD::ClOrdID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.ClOrdID(), FIX::FIELD::ClOrdID, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.ExecInst.in(), FIX::FIELD::ExecInst, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.ExecInst(), FIX::FIELD::ExecInst, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol.in(), FIX::FIELD::Symbol, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol(), FIX::FIELD::Symbol, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange.in(), FIX::FIELD::SecurityExchange, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange(), FIX::FIELD::SecurityExchange, fixMsg); - FIX::Side fixSide(ddsMsg.Side); + FIX::Side fixSide(ddsMsg.Side()); fixMsg.setField(fixSide); - DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime, FIX::FIELD::TransactTime, fixMsg); + DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime(), FIX::FIELD::TransactTime, fixMsg); - FIX::OrderQty fixOrderQty(ddsMsg.OrderQty); + FIX::OrderQty fixOrderQty(ddsMsg.OrderQty()); fixMsg.setField(fixOrderQty); - FIX::OrdType fixOrdType(ddsMsg.OrdType); + FIX::OrdType fixOrdType(ddsMsg.OrdType()); fixMsg.setField(fixOrdType); - FIX::Price fixPrice(ddsMsg.Price); + FIX::Price fixPrice(ddsMsg.Price()); fixMsg.setField(fixPrice); - FIX::StopPx fixStopPx(ddsMsg.StopPx); + FIX::StopPx fixStopPx(ddsMsg.StopPx()); fixMsg.setField(fixStopPx); - FIX::TimeInForce fixTimeInForce(ddsMsg.TimeInForce); + FIX::TimeInForce fixTimeInForce(ddsMsg.TimeInForce()); fixMsg.setField(fixTimeInForce); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Text.in(), FIX::FIELD::Text, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Text(), FIX::FIELD::Text, fixMsg); }; diff --git a/GenTools/idl/OrderCancelReplaceRequestAdapter.hpp b/GenTools/idl/OrderCancelReplaceRequestAdapter.hpp index 23f1f99..195ade3 100644 --- a/GenTools/idl/OrderCancelReplaceRequestAdapter.hpp +++ b/GenTools/idl/OrderCancelReplaceRequestAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __OrderCancelReplaceRequest_h__ -#define __OrderCancelReplaceRequest_h__ - -#include "OrderCancelReplaceRequestTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "OrderCancelReplaceRequest.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class OrderCancelReplaceRequestAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/OrderCancelReplaceRequestCdrAux.hpp b/GenTools/idl/OrderCancelReplaceRequestCdrAux.hpp new file mode 100644 index 0000000..f7466c0 --- /dev/null +++ b/GenTools/idl/OrderCancelReplaceRequestCdrAux.hpp @@ -0,0 +1,47 @@ +// 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 OrderCancelReplaceRequestCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUESTCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUESTCDRAUX_HPP + +#include "OrderCancelReplaceRequest.hpp" + +constexpr uint32_t DistributedATS_OrderCancelReplaceRequest_OrderCancelReplaceRequest_max_cdr_typesize {4216UL}; +constexpr uint32_t DistributedATS_OrderCancelReplaceRequest_OrderCancelReplaceRequest_max_key_cdr_typesize {0UL}; + + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUESTCDRAUX_HPP + diff --git a/GenTools/idl/OrderCancelReplaceRequestCdrAux.ipp b/GenTools/idl/OrderCancelReplaceRequestCdrAux.ipp new file mode 100644 index 0000000..282ba4c --- /dev/null +++ b/GenTools/idl/OrderCancelReplaceRequestCdrAux.ipp @@ -0,0 +1,319 @@ +// 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 OrderCancelReplaceRequestCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUESTCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUESTCDRAUX_IPP + +#include "OrderCancelReplaceRequestCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest& data, + size_t& current_alignment) +{ + using namespace DistributedATS_OrderCancelReplaceRequest; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.OrigClOrdID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.ClOrdID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.ExecInst(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.Symbol(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(9), + data.SecurityExchange(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(10), + data.Side(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(11), + data.TransactTime(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(12), + data.OrderQty(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(13), + data.OrdType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(14), + data.Price(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(15), + data.StopPx(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(16), + data.TimeInForce(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(17), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest& data) +{ + using namespace DistributedATS_OrderCancelReplaceRequest; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.OrigClOrdID() + << eprosima::fastcdr::MemberId(6) << data.ClOrdID() + << eprosima::fastcdr::MemberId(7) << data.ExecInst() + << eprosima::fastcdr::MemberId(8) << data.Symbol() + << eprosima::fastcdr::MemberId(9) << data.SecurityExchange() + << eprosima::fastcdr::MemberId(10) << data.Side() + << eprosima::fastcdr::MemberId(11) << data.TransactTime() + << eprosima::fastcdr::MemberId(12) << data.OrderQty() + << eprosima::fastcdr::MemberId(13) << data.OrdType() + << eprosima::fastcdr::MemberId(14) << data.Price() + << eprosima::fastcdr::MemberId(15) << data.StopPx() + << eprosima::fastcdr::MemberId(16) << data.TimeInForce() + << eprosima::fastcdr::MemberId(17) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest& data) +{ + using namespace DistributedATS_OrderCancelReplaceRequest; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.OrigClOrdID(); + break; + + case 6: + dcdr >> data.ClOrdID(); + break; + + case 7: + dcdr >> data.ExecInst(); + break; + + case 8: + dcdr >> data.Symbol(); + break; + + case 9: + dcdr >> data.SecurityExchange(); + break; + + case 10: + dcdr >> data.Side(); + break; + + case 11: + dcdr >> data.TransactTime(); + break; + + case 12: + dcdr >> data.OrderQty(); + break; + + case 13: + dcdr >> data.OrdType(); + break; + + case 14: + dcdr >> data.Price(); + break; + + case 15: + dcdr >> data.StopPx(); + break; + + case 16: + dcdr >> data.TimeInForce(); + break; + + case 17: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest& data) +{ + using namespace DistributedATS_OrderCancelReplaceRequest; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.OrigClOrdID(); + + scdr << data.ClOrdID(); + + scdr << data.ExecInst(); + + scdr << data.Symbol(); + + scdr << data.SecurityExchange(); + + scdr << data.Side(); + + scdr << data.TransactTime(); + + scdr << data.OrderQty(); + + scdr << data.OrdType(); + + scdr << data.Price(); + + scdr << data.StopPx(); + + scdr << data.TimeInForce(); + + scdr << data.Text(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUESTCDRAUX_IPP + diff --git a/GenTools/idl/OrderCancelReplaceRequestLogger.hpp b/GenTools/idl/OrderCancelReplaceRequestLogger.hpp index 7bc1a3e..f8e54a6 100644 --- a/GenTools/idl/OrderCancelReplaceRequestLogger.hpp +++ b/GenTools/idl/OrderCancelReplaceRequestLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __OrderCancelReplaceRequestLogger_h__ -#define __OrderCancelReplaceRequestLogger_h__ - -#include "OrderCancelReplaceRequestTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,27 +10,30 @@ class OrderCancelReplaceRequestLogger static void log(std::ostream & out, DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : OrderCancelReplaceRequest { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.OrigClOrdID : " << ddsMsg.OrigClOrdID << std::endl - << "ddsMsg.ClOrdID : " << ddsMsg.ClOrdID << std::endl - << "ddsMsg.ExecInst : " << ddsMsg.ExecInst << std::endl - << "ddsMsg.Symbol : " << ddsMsg.Symbol << std::endl - << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange << std::endl - << "ddsMsg.Side : " << ddsMsg.Side << std::endl - << "ddsMsg.TransactTime : " << ddsMsg.TransactTime << std::endl - << "ddsMsg.OrderQty : " << ddsMsg.OrderQty << std::endl - << "ddsMsg.OrdType : " << ddsMsg.OrdType << std::endl - << "ddsMsg.Price : " << ddsMsg.Price << std::endl - << "ddsMsg.StopPx : " << ddsMsg.StopPx << std::endl - << "ddsMsg.TimeInForce : " << ddsMsg.TimeInForce << std::endl - << "ddsMsg.Text : " << ddsMsg.Text << std::endl + << "ddsMsg.OrigClOrdID : " << ddsMsg.OrigClOrdID() << std::endl + << "ddsMsg.ClOrdID : " << ddsMsg.ClOrdID() << std::endl + << "ddsMsg.ExecInst : " << ddsMsg.ExecInst() << std::endl + << "ddsMsg.Symbol : " << ddsMsg.Symbol() << std::endl + << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange() << std::endl + << "ddsMsg.Side : " << ddsMsg.Side() << std::endl + << "ddsMsg.TransactTime : " << ddsMsg.TransactTime() << std::endl + << "ddsMsg.OrderQty : " << ddsMsg.OrderQty() << std::endl + << "ddsMsg.OrdType : " << ddsMsg.OrdType() << std::endl + << "ddsMsg.Price : " << ddsMsg.Price() << std::endl + << "ddsMsg.StopPx : " << ddsMsg.StopPx() << std::endl + << "ddsMsg.TimeInForce : " << ddsMsg.TimeInForce() << std::endl + << "ddsMsg.Text : " << ddsMsg.Text() << std::endl ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/OrderCancelReplaceRequestPubSubTypes.cxx b/GenTools/idl/OrderCancelReplaceRequestPubSubTypes.cxx new file mode 100644 index 0000000..d1301a7 --- /dev/null +++ b/GenTools/idl/OrderCancelReplaceRequestPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 OrderCancelReplaceRequestPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "OrderCancelReplaceRequestPubSubTypes.hpp" + +#include +#include + +#include "OrderCancelReplaceRequestCdrAux.hpp" +#include "OrderCancelReplaceRequestTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_OrderCancelReplaceRequest { + OrderCancelReplaceRequestPubSubType::OrderCancelReplaceRequestPubSubType() + { + set_name("DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest"); + uint32_t type_size = DistributedATS_OrderCancelReplaceRequest_OrderCancelReplaceRequest_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_OrderCancelReplaceRequest_OrderCancelReplaceRequest_max_key_cdr_typesize > 16 ? DistributedATS_OrderCancelReplaceRequest_OrderCancelReplaceRequest_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + OrderCancelReplaceRequestPubSubType::~OrderCancelReplaceRequestPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool OrderCancelReplaceRequestPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const OrderCancelReplaceRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool OrderCancelReplaceRequestPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + OrderCancelReplaceRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t OrderCancelReplaceRequestPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* OrderCancelReplaceRequestPubSubType::create_data() + { + return reinterpret_cast(new OrderCancelReplaceRequest()); + } + + void OrderCancelReplaceRequestPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool OrderCancelReplaceRequestPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + OrderCancelReplaceRequest data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool OrderCancelReplaceRequestPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const OrderCancelReplaceRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_OrderCancelReplaceRequest_OrderCancelReplaceRequest_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_OrderCancelReplaceRequest_OrderCancelReplaceRequest_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void OrderCancelReplaceRequestPubSubType::register_type_object_representation() + { + register_OrderCancelReplaceRequest_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_OrderCancelReplaceRequest + + +// Include auxiliary functions like for serializing/deserializing. +#include "OrderCancelReplaceRequestCdrAux.ipp" diff --git a/GenTools/idl/OrderCancelReplaceRequestPubSubTypes.hpp b/GenTools/idl/OrderCancelReplaceRequestPubSubTypes.hpp new file mode 100644 index 0000000..45ea447 --- /dev/null +++ b/GenTools/idl/OrderCancelReplaceRequestPubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 OrderCancelReplaceRequestPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUEST_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUEST_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "OrderCancelReplaceRequest.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated OrderCancelReplaceRequest is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_OrderCancelReplaceRequest +{ + + /*! + * @brief This class represents the TopicDataType of the type OrderCancelReplaceRequest defined by the user in the IDL file. + * @ingroup OrderCancelReplaceRequest + */ + class OrderCancelReplaceRequestPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef OrderCancelReplaceRequest type; + + eProsima_user_DllExport OrderCancelReplaceRequestPubSubType(); + + eProsima_user_DllExport ~OrderCancelReplaceRequestPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_OrderCancelReplaceRequest + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUEST_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/OrderCancelReplaceRequestTypeObjectSupport.cxx b/GenTools/idl/OrderCancelReplaceRequestTypeObjectSupport.cxx new file mode 100644 index 0000000..2ec58b6 --- /dev/null +++ b/GenTools/idl/OrderCancelReplaceRequestTypeObjectSupport.cxx @@ -0,0 +1,692 @@ +// 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 OrderCancelReplaceRequestTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "OrderCancelReplaceRequestTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "OrderCancelReplaceRequest.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_OrderCancelReplaceRequest { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_OrderCancelReplaceRequest_type_identifier( + TypeIdentifierPair& type_ids_OrderCancelReplaceRequest) +{ + + ReturnCode_t return_code_OrderCancelReplaceRequest {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderCancelReplaceRequest = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest", type_ids_OrderCancelReplaceRequest); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderCancelReplaceRequest) + { + StructTypeFlag struct_flags_OrderCancelReplaceRequest = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_OrderCancelReplaceRequest = "DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest"; + eprosima::fastcdr::optional type_ann_builtin_OrderCancelReplaceRequest; + eprosima::fastcdr::optional ann_custom_OrderCancelReplaceRequest; + CompleteTypeDetail detail_OrderCancelReplaceRequest = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_OrderCancelReplaceRequest, ann_custom_OrderCancelReplaceRequest, type_name_OrderCancelReplaceRequest.to_string()); + CompleteStructHeader header_OrderCancelReplaceRequest; + header_OrderCancelReplaceRequest = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_OrderCancelReplaceRequest); + CompleteStructMemberSeq member_seq_OrderCancelReplaceRequest; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_OrigClOrdID; + ReturnCode_t return_code_OrigClOrdID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrigClOrdID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_OrigClOrdID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrigClOrdID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_OrigClOrdID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_OrigClOrdID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrigClOrdID = 0x00000005; + bool common_OrigClOrdID_ec {false}; + CommonStructMember common_OrigClOrdID {TypeObjectUtils::build_common_struct_member(member_id_OrigClOrdID, member_flags_OrigClOrdID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrigClOrdID, common_OrigClOrdID_ec))}; + if (!common_OrigClOrdID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrigClOrdID member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrigClOrdID = "OrigClOrdID"; + eprosima::fastcdr::optional member_ann_builtin_OrigClOrdID; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_OrigClOrdID = TypeObjectUtils::build_complete_member_detail(name_OrigClOrdID, member_ann_builtin_OrigClOrdID, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_OrigClOrdID = TypeObjectUtils::build_complete_struct_member(common_OrigClOrdID, detail_OrigClOrdID); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_OrigClOrdID); + } + { + TypeIdentifierPair type_ids_ClOrdID; + ReturnCode_t return_code_ClOrdID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ClOrdID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_ClOrdID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ClOrdID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_ClOrdID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_ClOrdID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_ClOrdID = 0x00000006; + bool common_ClOrdID_ec {false}; + CommonStructMember common_ClOrdID {TypeObjectUtils::build_common_struct_member(member_id_ClOrdID, member_flags_ClOrdID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_ClOrdID, common_ClOrdID_ec))}; + if (!common_ClOrdID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure ClOrdID member TypeIdentifier inconsistent."); + return; + } + MemberName name_ClOrdID = "ClOrdID"; + eprosima::fastcdr::optional member_ann_builtin_ClOrdID; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_ClOrdID = TypeObjectUtils::build_complete_member_detail(name_ClOrdID, member_ann_builtin_ClOrdID, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_ClOrdID = TypeObjectUtils::build_complete_struct_member(common_ClOrdID, detail_ClOrdID); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_ClOrdID); + } + { + TypeIdentifierPair type_ids_ExecInst; + ReturnCode_t return_code_ExecInst {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ExecInst = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_ExecInst); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ExecInst) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_ExecInst)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_ExecInst = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_ExecInst = 0x00000007; + bool common_ExecInst_ec {false}; + CommonStructMember common_ExecInst {TypeObjectUtils::build_common_struct_member(member_id_ExecInst, member_flags_ExecInst, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_ExecInst, common_ExecInst_ec))}; + if (!common_ExecInst_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure ExecInst member TypeIdentifier inconsistent."); + return; + } + MemberName name_ExecInst = "ExecInst"; + eprosima::fastcdr::optional member_ann_builtin_ExecInst; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_ExecInst = TypeObjectUtils::build_complete_member_detail(name_ExecInst, member_ann_builtin_ExecInst, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_ExecInst = TypeObjectUtils::build_complete_struct_member(common_ExecInst, detail_ExecInst); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_ExecInst); + } + { + TypeIdentifierPair type_ids_Symbol; + ReturnCode_t return_code_Symbol {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Symbol = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Symbol); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Symbol) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Symbol)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Symbol = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Symbol = 0x00000008; + bool common_Symbol_ec {false}; + CommonStructMember common_Symbol {TypeObjectUtils::build_common_struct_member(member_id_Symbol, member_flags_Symbol, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Symbol, common_Symbol_ec))}; + if (!common_Symbol_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Symbol member TypeIdentifier inconsistent."); + return; + } + MemberName name_Symbol = "Symbol"; + eprosima::fastcdr::optional member_ann_builtin_Symbol; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_Symbol = TypeObjectUtils::build_complete_member_detail(name_Symbol, member_ann_builtin_Symbol, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_Symbol = TypeObjectUtils::build_complete_struct_member(common_Symbol, detail_Symbol); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_Symbol); + } + { + TypeIdentifierPair type_ids_SecurityExchange; + ReturnCode_t return_code_SecurityExchange {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityExchange = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityExchange); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityExchange) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityExchange)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityExchange = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityExchange = 0x00000009; + bool common_SecurityExchange_ec {false}; + CommonStructMember common_SecurityExchange {TypeObjectUtils::build_common_struct_member(member_id_SecurityExchange, member_flags_SecurityExchange, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityExchange, common_SecurityExchange_ec))}; + if (!common_SecurityExchange_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityExchange member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityExchange = "SecurityExchange"; + eprosima::fastcdr::optional member_ann_builtin_SecurityExchange; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_SecurityExchange = TypeObjectUtils::build_complete_member_detail(name_SecurityExchange, member_ann_builtin_SecurityExchange, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_SecurityExchange = TypeObjectUtils::build_complete_struct_member(common_SecurityExchange, detail_SecurityExchange); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_SecurityExchange); + } + { + TypeIdentifierPair type_ids_Side; + ReturnCode_t return_code_Side {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Side = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_Side); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Side) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "Side Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_Side = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Side = 0x0000000a; + bool common_Side_ec {false}; + CommonStructMember common_Side {TypeObjectUtils::build_common_struct_member(member_id_Side, member_flags_Side, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Side, common_Side_ec))}; + if (!common_Side_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Side member TypeIdentifier inconsistent."); + return; + } + MemberName name_Side = "Side"; + eprosima::fastcdr::optional member_ann_builtin_Side; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_Side = TypeObjectUtils::build_complete_member_detail(name_Side, member_ann_builtin_Side, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_Side = TypeObjectUtils::build_complete_struct_member(common_Side, detail_Side); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_Side); + } + { + TypeIdentifierPair type_ids_TransactTime; + ReturnCode_t return_code_TransactTime {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TransactTime = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_uint64_t", type_ids_TransactTime); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TransactTime) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "TransactTime Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_TransactTime = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TransactTime = 0x0000000b; + bool common_TransactTime_ec {false}; + CommonStructMember common_TransactTime {TypeObjectUtils::build_common_struct_member(member_id_TransactTime, member_flags_TransactTime, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TransactTime, common_TransactTime_ec))}; + if (!common_TransactTime_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TransactTime member TypeIdentifier inconsistent."); + return; + } + MemberName name_TransactTime = "TransactTime"; + eprosima::fastcdr::optional member_ann_builtin_TransactTime; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_TransactTime = TypeObjectUtils::build_complete_member_detail(name_TransactTime, member_ann_builtin_TransactTime, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_TransactTime = TypeObjectUtils::build_complete_struct_member(common_TransactTime, detail_TransactTime); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_TransactTime); + } + { + TypeIdentifierPair type_ids_OrderQty; + ReturnCode_t return_code_OrderQty {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderQty = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_OrderQty); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderQty) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "OrderQty Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_OrderQty = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrderQty = 0x0000000c; + bool common_OrderQty_ec {false}; + CommonStructMember common_OrderQty {TypeObjectUtils::build_common_struct_member(member_id_OrderQty, member_flags_OrderQty, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrderQty, common_OrderQty_ec))}; + if (!common_OrderQty_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrderQty member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrderQty = "OrderQty"; + eprosima::fastcdr::optional member_ann_builtin_OrderQty; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_OrderQty = TypeObjectUtils::build_complete_member_detail(name_OrderQty, member_ann_builtin_OrderQty, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_OrderQty = TypeObjectUtils::build_complete_struct_member(common_OrderQty, detail_OrderQty); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_OrderQty); + } + { + TypeIdentifierPair type_ids_OrdType; + ReturnCode_t return_code_OrdType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrdType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_OrdType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrdType) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "OrdType Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_OrdType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrdType = 0x0000000d; + bool common_OrdType_ec {false}; + CommonStructMember common_OrdType {TypeObjectUtils::build_common_struct_member(member_id_OrdType, member_flags_OrdType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrdType, common_OrdType_ec))}; + if (!common_OrdType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrdType member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrdType = "OrdType"; + eprosima::fastcdr::optional member_ann_builtin_OrdType; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_OrdType = TypeObjectUtils::build_complete_member_detail(name_OrdType, member_ann_builtin_OrdType, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_OrdType = TypeObjectUtils::build_complete_struct_member(common_OrdType, detail_OrdType); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_OrdType); + } + { + TypeIdentifierPair type_ids_Price; + ReturnCode_t return_code_Price {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Price = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_float", type_ids_Price); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Price) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "Price Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_Price = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Price = 0x0000000e; + bool common_Price_ec {false}; + CommonStructMember common_Price {TypeObjectUtils::build_common_struct_member(member_id_Price, member_flags_Price, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Price, common_Price_ec))}; + if (!common_Price_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Price member TypeIdentifier inconsistent."); + return; + } + MemberName name_Price = "Price"; + eprosima::fastcdr::optional member_ann_builtin_Price; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_Price = TypeObjectUtils::build_complete_member_detail(name_Price, member_ann_builtin_Price, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_Price = TypeObjectUtils::build_complete_struct_member(common_Price, detail_Price); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_Price); + } + { + TypeIdentifierPair type_ids_StopPx; + ReturnCode_t return_code_StopPx {eprosima::fastdds::dds::RETCODE_OK}; + return_code_StopPx = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_float", type_ids_StopPx); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_StopPx) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "StopPx Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_StopPx = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_StopPx = 0x0000000f; + bool common_StopPx_ec {false}; + CommonStructMember common_StopPx {TypeObjectUtils::build_common_struct_member(member_id_StopPx, member_flags_StopPx, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_StopPx, common_StopPx_ec))}; + if (!common_StopPx_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure StopPx member TypeIdentifier inconsistent."); + return; + } + MemberName name_StopPx = "StopPx"; + eprosima::fastcdr::optional member_ann_builtin_StopPx; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_StopPx = TypeObjectUtils::build_complete_member_detail(name_StopPx, member_ann_builtin_StopPx, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_StopPx = TypeObjectUtils::build_complete_struct_member(common_StopPx, detail_StopPx); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_StopPx); + } + { + TypeIdentifierPair type_ids_TimeInForce; + ReturnCode_t return_code_TimeInForce {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TimeInForce = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_TimeInForce); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TimeInForce) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "TimeInForce Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_TimeInForce = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TimeInForce = 0x00000010; + bool common_TimeInForce_ec {false}; + CommonStructMember common_TimeInForce {TypeObjectUtils::build_common_struct_member(member_id_TimeInForce, member_flags_TimeInForce, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TimeInForce, common_TimeInForce_ec))}; + if (!common_TimeInForce_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TimeInForce member TypeIdentifier inconsistent."); + return; + } + MemberName name_TimeInForce = "TimeInForce"; + eprosima::fastcdr::optional member_ann_builtin_TimeInForce; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_TimeInForce = TypeObjectUtils::build_complete_member_detail(name_TimeInForce, member_ann_builtin_TimeInForce, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_TimeInForce = TypeObjectUtils::build_complete_struct_member(common_TimeInForce, detail_TimeInForce); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_TimeInForce); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x00000011; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_OrderCancelReplaceRequest.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_OrderCancelReplaceRequest); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelReplaceRequest, member_Text); + } + CompleteStructType struct_type_OrderCancelReplaceRequest = TypeObjectUtils::build_complete_struct_type(struct_flags_OrderCancelReplaceRequest, header_OrderCancelReplaceRequest, member_seq_OrderCancelReplaceRequest); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_OrderCancelReplaceRequest, type_name_OrderCancelReplaceRequest.to_string(), type_ids_OrderCancelReplaceRequest)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_OrderCancelReplaceRequest + diff --git a/GenTools/idl/OrderCancelReplaceRequestTypeObjectSupport.hpp b/GenTools/idl/OrderCancelReplaceRequestTypeObjectSupport.hpp new file mode 100644 index 0000000..cec1275 --- /dev/null +++ b/GenTools/idl/OrderCancelReplaceRequestTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 OrderCancelReplaceRequestTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUEST_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUEST_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_OrderCancelReplaceRequest { +/** + * @brief Register OrderCancelReplaceRequest related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_OrderCancelReplaceRequest_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_OrderCancelReplaceRequest + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREPLACEREQUEST_ORDERCANCELREPLACEREQUEST_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/OrderCancelRequest.hpp b/GenTools/idl/OrderCancelRequest.hpp new file mode 100644 index 0000000..c3d3287 --- /dev/null +++ b/GenTools/idl/OrderCancelRequest.hpp @@ -0,0 +1,729 @@ +// 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 OrderCancelRequest.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUEST_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUEST_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(ORDERCANCELREQUEST_SOURCE) +#define ORDERCANCELREQUEST_DllAPI __declspec( dllexport ) +#else +#define ORDERCANCELREQUEST_DllAPI __declspec( dllimport ) +#endif // ORDERCANCELREQUEST_SOURCE +#else +#define ORDERCANCELREQUEST_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define ORDERCANCELREQUEST_DllAPI +#endif // _WIN32 + +namespace DistributedATS_OrderCancelRequest { + +/*! + * @brief This class represents the structure OrderCancelRequest defined by the user in the IDL file. + * @ingroup OrderCancelRequest + */ +class OrderCancelRequest +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport OrderCancelRequest() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~OrderCancelRequest() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object OrderCancelRequest that will be copied. + */ + eProsima_user_DllExport OrderCancelRequest( + const OrderCancelRequest& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_OrigClOrdID = x.m_OrigClOrdID; + + m_ClOrdID = x.m_ClOrdID; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_Side = x.m_Side; + + m_TransactTime = x.m_TransactTime; + + m_OrderQty = x.m_OrderQty; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object OrderCancelRequest that will be copied. + */ + eProsima_user_DllExport OrderCancelRequest( + OrderCancelRequest&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_OrigClOrdID = std::move(x.m_OrigClOrdID); + m_ClOrdID = std::move(x.m_ClOrdID); + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_Side = x.m_Side; + m_TransactTime = x.m_TransactTime; + m_OrderQty = x.m_OrderQty; + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object OrderCancelRequest that will be copied. + */ + eProsima_user_DllExport OrderCancelRequest& operator =( + const OrderCancelRequest& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_OrigClOrdID = x.m_OrigClOrdID; + + m_ClOrdID = x.m_ClOrdID; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_Side = x.m_Side; + + m_TransactTime = x.m_TransactTime; + + m_OrderQty = x.m_OrderQty; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object OrderCancelRequest that will be copied. + */ + eProsima_user_DllExport OrderCancelRequest& operator =( + OrderCancelRequest&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_OrigClOrdID = std::move(x.m_OrigClOrdID); + m_ClOrdID = std::move(x.m_ClOrdID); + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_Side = x.m_Side; + m_TransactTime = x.m_TransactTime; + m_OrderQty = x.m_OrderQty; + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x OrderCancelRequest object to compare. + */ + eProsima_user_DllExport bool operator ==( + const OrderCancelRequest& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_OrigClOrdID == x.m_OrigClOrdID && + m_ClOrdID == x.m_ClOrdID && + m_Symbol == x.m_Symbol && + m_SecurityExchange == x.m_SecurityExchange && + m_Side == x.m_Side && + m_TransactTime == x.m_TransactTime && + m_OrderQty == x.m_OrderQty && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x OrderCancelRequest object to compare. + */ + eProsima_user_DllExport bool operator !=( + const OrderCancelRequest& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member OrigClOrdID + * @param _OrigClOrdID New value to be copied in member OrigClOrdID + */ + eProsima_user_DllExport void OrigClOrdID( + const std::string& _OrigClOrdID) + { + m_OrigClOrdID = _OrigClOrdID; + } + + /*! + * @brief This function moves the value in member OrigClOrdID + * @param _OrigClOrdID New value to be moved in member OrigClOrdID + */ + eProsima_user_DllExport void OrigClOrdID( + std::string&& _OrigClOrdID) + { + m_OrigClOrdID = std::move(_OrigClOrdID); + } + + /*! + * @brief This function returns a constant reference to member OrigClOrdID + * @return Constant reference to member OrigClOrdID + */ + eProsima_user_DllExport const std::string& OrigClOrdID() const + { + return m_OrigClOrdID; + } + + /*! + * @brief This function returns a reference to member OrigClOrdID + * @return Reference to member OrigClOrdID + */ + eProsima_user_DllExport std::string& OrigClOrdID() + { + return m_OrigClOrdID; + } + + + /*! + * @brief This function copies the value in member ClOrdID + * @param _ClOrdID New value to be copied in member ClOrdID + */ + eProsima_user_DllExport void ClOrdID( + const std::string& _ClOrdID) + { + m_ClOrdID = _ClOrdID; + } + + /*! + * @brief This function moves the value in member ClOrdID + * @param _ClOrdID New value to be moved in member ClOrdID + */ + eProsima_user_DllExport void ClOrdID( + std::string&& _ClOrdID) + { + m_ClOrdID = std::move(_ClOrdID); + } + + /*! + * @brief This function returns a constant reference to member ClOrdID + * @return Constant reference to member ClOrdID + */ + eProsima_user_DllExport const std::string& ClOrdID() const + { + return m_ClOrdID; + } + + /*! + * @brief This function returns a reference to member ClOrdID + * @return Reference to member ClOrdID + */ + eProsima_user_DllExport std::string& ClOrdID() + { + return m_ClOrdID; + } + + + /*! + * @brief This function copies the value in member Symbol + * @param _Symbol New value to be copied in member Symbol + */ + eProsima_user_DllExport void Symbol( + const std::string& _Symbol) + { + m_Symbol = _Symbol; + } + + /*! + * @brief This function moves the value in member Symbol + * @param _Symbol New value to be moved in member Symbol + */ + eProsima_user_DllExport void Symbol( + std::string&& _Symbol) + { + m_Symbol = std::move(_Symbol); + } + + /*! + * @brief This function returns a constant reference to member Symbol + * @return Constant reference to member Symbol + */ + eProsima_user_DllExport const std::string& Symbol() const + { + return m_Symbol; + } + + /*! + * @brief This function returns a reference to member Symbol + * @return Reference to member Symbol + */ + eProsima_user_DllExport std::string& Symbol() + { + return m_Symbol; + } + + + /*! + * @brief This function copies the value in member SecurityExchange + * @param _SecurityExchange New value to be copied in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + const std::string& _SecurityExchange) + { + m_SecurityExchange = _SecurityExchange; + } + + /*! + * @brief This function moves the value in member SecurityExchange + * @param _SecurityExchange New value to be moved in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + std::string&& _SecurityExchange) + { + m_SecurityExchange = std::move(_SecurityExchange); + } + + /*! + * @brief This function returns a constant reference to member SecurityExchange + * @return Constant reference to member SecurityExchange + */ + eProsima_user_DllExport const std::string& SecurityExchange() const + { + return m_SecurityExchange; + } + + /*! + * @brief This function returns a reference to member SecurityExchange + * @return Reference to member SecurityExchange + */ + eProsima_user_DllExport std::string& SecurityExchange() + { + return m_SecurityExchange; + } + + + /*! + * @brief This function sets a value in member Side + * @param _Side New value for member Side + */ + eProsima_user_DllExport void Side( + char _Side) + { + m_Side = _Side; + } + + /*! + * @brief This function returns the value of member Side + * @return Value of member Side + */ + eProsima_user_DllExport char Side() const + { + return m_Side; + } + + /*! + * @brief This function returns a reference to member Side + * @return Reference to member Side + */ + eProsima_user_DllExport char& Side() + { + return m_Side; + } + + + /*! + * @brief This function sets a value in member TransactTime + * @param _TransactTime New value for member TransactTime + */ + eProsima_user_DllExport void TransactTime( + uint64_t _TransactTime) + { + m_TransactTime = _TransactTime; + } + + /*! + * @brief This function returns the value of member TransactTime + * @return Value of member TransactTime + */ + eProsima_user_DllExport uint64_t TransactTime() const + { + return m_TransactTime; + } + + /*! + * @brief This function returns a reference to member TransactTime + * @return Reference to member TransactTime + */ + eProsima_user_DllExport uint64_t& TransactTime() + { + return m_TransactTime; + } + + + /*! + * @brief This function sets a value in member OrderQty + * @param _OrderQty New value for member OrderQty + */ + eProsima_user_DllExport void OrderQty( + int32_t _OrderQty) + { + m_OrderQty = _OrderQty; + } + + /*! + * @brief This function returns the value of member OrderQty + * @return Value of member OrderQty + */ + eProsima_user_DllExport int32_t OrderQty() const + { + return m_OrderQty; + } + + /*! + * @brief This function returns a reference to member OrderQty + * @return Reference to member OrderQty + */ + eProsima_user_DllExport int32_t& OrderQty() + { + return m_OrderQty; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_OrigClOrdID; + std::string m_ClOrdID; + std::string m_Symbol; + std::string m_SecurityExchange; + char m_Side{0}; + uint64_t m_TransactTime{0}; + int32_t m_OrderQty{0}; + std::string m_Text; + +}; + +} // namespace DistributedATS_OrderCancelRequest + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUEST_HPP_ + + diff --git a/GenTools/idl/OrderCancelRequest.idl b/GenTools/idl/OrderCancelRequest.idl index 62cdd6f..b2a313d 100644 --- a/GenTools/idl/OrderCancelRequest.idl +++ b/GenTools/idl/OrderCancelRequest.idl @@ -1,13 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_OrderCancelRequest { - @topic + struct OrderCancelRequest { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string OrigClOrdID; string ClOrdID; string Symbol; diff --git a/GenTools/idl/OrderCancelRequestAdapter.cpp b/GenTools/idl/OrderCancelRequestAdapter.cpp index c88aa82..c15ddca 100644 --- a/GenTools/idl/OrderCancelRequestAdapter.cpp +++ b/GenTools/idl/OrderCancelRequestAdapter.cpp @@ -1,39 +1,39 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "OrderCancelRequestAdapter.hpp" -#include "ConvertUtils.h" +#include void OrderCancelRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_OrderCancelRequest::OrderCancelRequest& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::OrigClOrdID) ) - ddsMsg.OrigClOrdID = CORBA::string_dup(((FIX::OrigClOrdID)fixMsg.getField(FIX::FIELD::OrigClOrdID)).getString().c_str()); + ddsMsg.OrigClOrdID ( ((FIX::OrigClOrdID)fixMsg.getField(FIX::FIELD::OrigClOrdID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::ClOrdID) ) - ddsMsg.ClOrdID = CORBA::string_dup(((FIX::ClOrdID)fixMsg.getField(FIX::FIELD::ClOrdID)).getString().c_str()); + ddsMsg.ClOrdID ( ((FIX::ClOrdID)fixMsg.getField(FIX::FIELD::ClOrdID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::Symbol) ) - ddsMsg.Symbol = CORBA::string_dup(((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); + ddsMsg.Symbol ( ((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SecurityExchange) ) - ddsMsg.SecurityExchange = CORBA::string_dup(((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); + ddsMsg.SecurityExchange ( ((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::Side) ) - ddsMsg.Side = FIELD_GET_REF( fixMsg,Side); + ddsMsg.Side ( FIELD_GET_REF( fixMsg,Side)); if (fixMsg.isSetField(FIX::FIELD::TransactTime) ) - ddsMsg.TransactTime = ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate(); + ddsMsg.TransactTime ( ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate()); else - ddsMsg.TransactTime = 0; + ddsMsg.TransactTime ( 0 ); if (fixMsg.isSetField(FIX::FIELD::OrderQty) ) - ddsMsg.OrderQty = FIELD_GET_REF( fixMsg,OrderQty); + ddsMsg.OrderQty ( FIELD_GET_REF( fixMsg,OrderQty)); else - ddsMsg.OrderQty = 0; + ddsMsg.OrderQty ( 0 ); if (fixMsg.isSetField(FIX::FIELD::Text) ) - ddsMsg.Text = CORBA::string_dup(((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.Text ( ((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); }; @@ -42,25 +42,25 @@ void OrderCancelRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedA void OrderCancelRequestAdapter::DDS2FIX(const DistributedATS_OrderCancelRequest::OrderCancelRequest& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.OrigClOrdID.in(), FIX::FIELD::OrigClOrdID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.OrigClOrdID(), FIX::FIELD::OrigClOrdID, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.ClOrdID.in(), FIX::FIELD::ClOrdID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.ClOrdID(), FIX::FIELD::ClOrdID, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol.in(), FIX::FIELD::Symbol, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol(), FIX::FIELD::Symbol, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange.in(), FIX::FIELD::SecurityExchange, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange(), FIX::FIELD::SecurityExchange, fixMsg); - FIX::Side fixSide(ddsMsg.Side); + FIX::Side fixSide(ddsMsg.Side()); fixMsg.setField(fixSide); - DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime, FIX::FIELD::TransactTime, fixMsg); + DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime(), FIX::FIELD::TransactTime, fixMsg); - FIX::OrderQty fixOrderQty(ddsMsg.OrderQty); + FIX::OrderQty fixOrderQty(ddsMsg.OrderQty()); fixMsg.setField(fixOrderQty); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Text.in(), FIX::FIELD::Text, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Text(), FIX::FIELD::Text, fixMsg); }; diff --git a/GenTools/idl/OrderCancelRequestAdapter.hpp b/GenTools/idl/OrderCancelRequestAdapter.hpp index 7ae66a7..2d88474 100644 --- a/GenTools/idl/OrderCancelRequestAdapter.hpp +++ b/GenTools/idl/OrderCancelRequestAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __OrderCancelRequest_h__ -#define __OrderCancelRequest_h__ - -#include "OrderCancelRequestTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "OrderCancelRequest.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class OrderCancelRequestAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_OrderCancelRequest::OrderCancelRequest& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_OrderCancelRequest::OrderCancelRequest& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/OrderCancelRequestCdrAux.hpp b/GenTools/idl/OrderCancelRequestCdrAux.hpp new file mode 100644 index 0000000..1f33cf4 --- /dev/null +++ b/GenTools/idl/OrderCancelRequestCdrAux.hpp @@ -0,0 +1,47 @@ +// 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 OrderCancelRequestCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUESTCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUESTCDRAUX_HPP + +#include "OrderCancelRequest.hpp" + +constexpr uint32_t DistributedATS_OrderCancelRequest_OrderCancelRequest_max_cdr_typesize {3944UL}; +constexpr uint32_t DistributedATS_OrderCancelRequest_OrderCancelRequest_max_key_cdr_typesize {0UL}; + + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderCancelRequest::OrderCancelRequest& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUESTCDRAUX_HPP + diff --git a/GenTools/idl/OrderCancelRequestCdrAux.ipp b/GenTools/idl/OrderCancelRequestCdrAux.ipp new file mode 100644 index 0000000..7c28d30 --- /dev/null +++ b/GenTools/idl/OrderCancelRequestCdrAux.ipp @@ -0,0 +1,264 @@ +// 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 OrderCancelRequestCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUESTCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUESTCDRAUX_IPP + +#include "OrderCancelRequestCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_OrderCancelRequest::OrderCancelRequest& data, + size_t& current_alignment) +{ + using namespace DistributedATS_OrderCancelRequest; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.OrigClOrdID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.ClOrdID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.Symbol(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.SecurityExchange(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(9), + data.Side(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(10), + data.TransactTime(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(11), + data.OrderQty(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(12), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderCancelRequest::OrderCancelRequest& data) +{ + using namespace DistributedATS_OrderCancelRequest; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.OrigClOrdID() + << eprosima::fastcdr::MemberId(6) << data.ClOrdID() + << eprosima::fastcdr::MemberId(7) << data.Symbol() + << eprosima::fastcdr::MemberId(8) << data.SecurityExchange() + << eprosima::fastcdr::MemberId(9) << data.Side() + << eprosima::fastcdr::MemberId(10) << data.TransactTime() + << eprosima::fastcdr::MemberId(11) << data.OrderQty() + << eprosima::fastcdr::MemberId(12) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_OrderCancelRequest::OrderCancelRequest& data) +{ + using namespace DistributedATS_OrderCancelRequest; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.OrigClOrdID(); + break; + + case 6: + dcdr >> data.ClOrdID(); + break; + + case 7: + dcdr >> data.Symbol(); + break; + + case 8: + dcdr >> data.SecurityExchange(); + break; + + case 9: + dcdr >> data.Side(); + break; + + case 10: + dcdr >> data.TransactTime(); + break; + + case 11: + dcdr >> data.OrderQty(); + break; + + case 12: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderCancelRequest::OrderCancelRequest& data) +{ + using namespace DistributedATS_OrderCancelRequest; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.OrigClOrdID(); + + scdr << data.ClOrdID(); + + scdr << data.Symbol(); + + scdr << data.SecurityExchange(); + + scdr << data.Side(); + + scdr << data.TransactTime(); + + scdr << data.OrderQty(); + + scdr << data.Text(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUESTCDRAUX_IPP + diff --git a/GenTools/idl/OrderCancelRequestLogger.hpp b/GenTools/idl/OrderCancelRequestLogger.hpp index b69d7aa..3008675 100644 --- a/GenTools/idl/OrderCancelRequestLogger.hpp +++ b/GenTools/idl/OrderCancelRequestLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __OrderCancelRequestLogger_h__ -#define __OrderCancelRequestLogger_h__ - -#include "OrderCancelRequestTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,22 +10,25 @@ class OrderCancelRequestLogger static void log(std::ostream & out, DistributedATS_OrderCancelRequest::OrderCancelRequest& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : OrderCancelRequest { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.OrigClOrdID : " << ddsMsg.OrigClOrdID << std::endl - << "ddsMsg.ClOrdID : " << ddsMsg.ClOrdID << std::endl - << "ddsMsg.Symbol : " << ddsMsg.Symbol << std::endl - << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange << std::endl - << "ddsMsg.Side : " << ddsMsg.Side << std::endl - << "ddsMsg.TransactTime : " << ddsMsg.TransactTime << std::endl - << "ddsMsg.OrderQty : " << ddsMsg.OrderQty << std::endl - << "ddsMsg.Text : " << ddsMsg.Text << std::endl + << "ddsMsg.OrigClOrdID : " << ddsMsg.OrigClOrdID() << std::endl + << "ddsMsg.ClOrdID : " << ddsMsg.ClOrdID() << std::endl + << "ddsMsg.Symbol : " << ddsMsg.Symbol() << std::endl + << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange() << std::endl + << "ddsMsg.Side : " << ddsMsg.Side() << std::endl + << "ddsMsg.TransactTime : " << ddsMsg.TransactTime() << std::endl + << "ddsMsg.OrderQty : " << ddsMsg.OrderQty() << std::endl + << "ddsMsg.Text : " << ddsMsg.Text() << std::endl ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/OrderCancelRequestPubSubTypes.cxx b/GenTools/idl/OrderCancelRequestPubSubTypes.cxx new file mode 100644 index 0000000..3b344a4 --- /dev/null +++ b/GenTools/idl/OrderCancelRequestPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 OrderCancelRequestPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "OrderCancelRequestPubSubTypes.hpp" + +#include +#include + +#include "OrderCancelRequestCdrAux.hpp" +#include "OrderCancelRequestTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_OrderCancelRequest { + OrderCancelRequestPubSubType::OrderCancelRequestPubSubType() + { + set_name("DistributedATS_OrderCancelRequest::OrderCancelRequest"); + uint32_t type_size = DistributedATS_OrderCancelRequest_OrderCancelRequest_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_OrderCancelRequest_OrderCancelRequest_max_key_cdr_typesize > 16 ? DistributedATS_OrderCancelRequest_OrderCancelRequest_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + OrderCancelRequestPubSubType::~OrderCancelRequestPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool OrderCancelRequestPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const OrderCancelRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool OrderCancelRequestPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + OrderCancelRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t OrderCancelRequestPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* OrderCancelRequestPubSubType::create_data() + { + return reinterpret_cast(new OrderCancelRequest()); + } + + void OrderCancelRequestPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool OrderCancelRequestPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + OrderCancelRequest data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool OrderCancelRequestPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const OrderCancelRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_OrderCancelRequest_OrderCancelRequest_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_OrderCancelRequest_OrderCancelRequest_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void OrderCancelRequestPubSubType::register_type_object_representation() + { + register_OrderCancelRequest_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_OrderCancelRequest + + +// Include auxiliary functions like for serializing/deserializing. +#include "OrderCancelRequestCdrAux.ipp" diff --git a/GenTools/idl/OrderCancelRequestPubSubTypes.hpp b/GenTools/idl/OrderCancelRequestPubSubTypes.hpp new file mode 100644 index 0000000..e29e4c9 --- /dev/null +++ b/GenTools/idl/OrderCancelRequestPubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 OrderCancelRequestPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUEST_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUEST_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "OrderCancelRequest.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated OrderCancelRequest is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_OrderCancelRequest +{ + + /*! + * @brief This class represents the TopicDataType of the type OrderCancelRequest defined by the user in the IDL file. + * @ingroup OrderCancelRequest + */ + class OrderCancelRequestPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef OrderCancelRequest type; + + eProsima_user_DllExport OrderCancelRequestPubSubType(); + + eProsima_user_DllExport ~OrderCancelRequestPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_OrderCancelRequest + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUEST_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/OrderCancelRequestTypeObjectSupport.cxx b/GenTools/idl/OrderCancelRequestTypeObjectSupport.cxx new file mode 100644 index 0000000..0fe61fa --- /dev/null +++ b/GenTools/idl/OrderCancelRequestTypeObjectSupport.cxx @@ -0,0 +1,534 @@ +// 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 OrderCancelRequestTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "OrderCancelRequestTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "OrderCancelRequest.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_OrderCancelRequest { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_OrderCancelRequest_type_identifier( + TypeIdentifierPair& type_ids_OrderCancelRequest) +{ + + ReturnCode_t return_code_OrderCancelRequest {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderCancelRequest = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_OrderCancelRequest::OrderCancelRequest", type_ids_OrderCancelRequest); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderCancelRequest) + { + StructTypeFlag struct_flags_OrderCancelRequest = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_OrderCancelRequest = "DistributedATS_OrderCancelRequest::OrderCancelRequest"; + eprosima::fastcdr::optional type_ann_builtin_OrderCancelRequest; + eprosima::fastcdr::optional ann_custom_OrderCancelRequest; + CompleteTypeDetail detail_OrderCancelRequest = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_OrderCancelRequest, ann_custom_OrderCancelRequest, type_name_OrderCancelRequest.to_string()); + CompleteStructHeader header_OrderCancelRequest; + header_OrderCancelRequest = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_OrderCancelRequest); + CompleteStructMemberSeq member_seq_OrderCancelRequest; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_OrderCancelRequest); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_OrderCancelRequest); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_OrderCancelRequest); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_OrderCancelRequest); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_OrderCancelRequest); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_OrigClOrdID; + ReturnCode_t return_code_OrigClOrdID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrigClOrdID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_OrigClOrdID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrigClOrdID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_OrigClOrdID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_OrigClOrdID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrigClOrdID = 0x00000005; + bool common_OrigClOrdID_ec {false}; + CommonStructMember common_OrigClOrdID {TypeObjectUtils::build_common_struct_member(member_id_OrigClOrdID, member_flags_OrigClOrdID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrigClOrdID, common_OrigClOrdID_ec))}; + if (!common_OrigClOrdID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrigClOrdID member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrigClOrdID = "OrigClOrdID"; + eprosima::fastcdr::optional member_ann_builtin_OrigClOrdID; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_OrigClOrdID = TypeObjectUtils::build_complete_member_detail(name_OrigClOrdID, member_ann_builtin_OrigClOrdID, ann_custom_OrderCancelRequest); + CompleteStructMember member_OrigClOrdID = TypeObjectUtils::build_complete_struct_member(common_OrigClOrdID, detail_OrigClOrdID); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_OrigClOrdID); + } + { + TypeIdentifierPair type_ids_ClOrdID; + ReturnCode_t return_code_ClOrdID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ClOrdID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_ClOrdID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ClOrdID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_ClOrdID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_ClOrdID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_ClOrdID = 0x00000006; + bool common_ClOrdID_ec {false}; + CommonStructMember common_ClOrdID {TypeObjectUtils::build_common_struct_member(member_id_ClOrdID, member_flags_ClOrdID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_ClOrdID, common_ClOrdID_ec))}; + if (!common_ClOrdID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure ClOrdID member TypeIdentifier inconsistent."); + return; + } + MemberName name_ClOrdID = "ClOrdID"; + eprosima::fastcdr::optional member_ann_builtin_ClOrdID; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_ClOrdID = TypeObjectUtils::build_complete_member_detail(name_ClOrdID, member_ann_builtin_ClOrdID, ann_custom_OrderCancelRequest); + CompleteStructMember member_ClOrdID = TypeObjectUtils::build_complete_struct_member(common_ClOrdID, detail_ClOrdID); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_ClOrdID); + } + { + TypeIdentifierPair type_ids_Symbol; + ReturnCode_t return_code_Symbol {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Symbol = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Symbol); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Symbol) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Symbol)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Symbol = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Symbol = 0x00000007; + bool common_Symbol_ec {false}; + CommonStructMember common_Symbol {TypeObjectUtils::build_common_struct_member(member_id_Symbol, member_flags_Symbol, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Symbol, common_Symbol_ec))}; + if (!common_Symbol_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Symbol member TypeIdentifier inconsistent."); + return; + } + MemberName name_Symbol = "Symbol"; + eprosima::fastcdr::optional member_ann_builtin_Symbol; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_Symbol = TypeObjectUtils::build_complete_member_detail(name_Symbol, member_ann_builtin_Symbol, ann_custom_OrderCancelRequest); + CompleteStructMember member_Symbol = TypeObjectUtils::build_complete_struct_member(common_Symbol, detail_Symbol); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_Symbol); + } + { + TypeIdentifierPair type_ids_SecurityExchange; + ReturnCode_t return_code_SecurityExchange {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityExchange = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityExchange); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityExchange) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityExchange)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityExchange = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityExchange = 0x00000008; + bool common_SecurityExchange_ec {false}; + CommonStructMember common_SecurityExchange {TypeObjectUtils::build_common_struct_member(member_id_SecurityExchange, member_flags_SecurityExchange, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityExchange, common_SecurityExchange_ec))}; + if (!common_SecurityExchange_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityExchange member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityExchange = "SecurityExchange"; + eprosima::fastcdr::optional member_ann_builtin_SecurityExchange; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_SecurityExchange = TypeObjectUtils::build_complete_member_detail(name_SecurityExchange, member_ann_builtin_SecurityExchange, ann_custom_OrderCancelRequest); + CompleteStructMember member_SecurityExchange = TypeObjectUtils::build_complete_struct_member(common_SecurityExchange, detail_SecurityExchange); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_SecurityExchange); + } + { + TypeIdentifierPair type_ids_Side; + ReturnCode_t return_code_Side {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Side = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_Side); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Side) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "Side Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_Side = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Side = 0x00000009; + bool common_Side_ec {false}; + CommonStructMember common_Side {TypeObjectUtils::build_common_struct_member(member_id_Side, member_flags_Side, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Side, common_Side_ec))}; + if (!common_Side_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Side member TypeIdentifier inconsistent."); + return; + } + MemberName name_Side = "Side"; + eprosima::fastcdr::optional member_ann_builtin_Side; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_Side = TypeObjectUtils::build_complete_member_detail(name_Side, member_ann_builtin_Side, ann_custom_OrderCancelRequest); + CompleteStructMember member_Side = TypeObjectUtils::build_complete_struct_member(common_Side, detail_Side); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_Side); + } + { + TypeIdentifierPair type_ids_TransactTime; + ReturnCode_t return_code_TransactTime {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TransactTime = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_uint64_t", type_ids_TransactTime); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TransactTime) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "TransactTime Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_TransactTime = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TransactTime = 0x0000000a; + bool common_TransactTime_ec {false}; + CommonStructMember common_TransactTime {TypeObjectUtils::build_common_struct_member(member_id_TransactTime, member_flags_TransactTime, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TransactTime, common_TransactTime_ec))}; + if (!common_TransactTime_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TransactTime member TypeIdentifier inconsistent."); + return; + } + MemberName name_TransactTime = "TransactTime"; + eprosima::fastcdr::optional member_ann_builtin_TransactTime; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_TransactTime = TypeObjectUtils::build_complete_member_detail(name_TransactTime, member_ann_builtin_TransactTime, ann_custom_OrderCancelRequest); + CompleteStructMember member_TransactTime = TypeObjectUtils::build_complete_struct_member(common_TransactTime, detail_TransactTime); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_TransactTime); + } + { + TypeIdentifierPair type_ids_OrderQty; + ReturnCode_t return_code_OrderQty {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderQty = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_OrderQty); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderQty) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "OrderQty Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_OrderQty = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrderQty = 0x0000000b; + bool common_OrderQty_ec {false}; + CommonStructMember common_OrderQty {TypeObjectUtils::build_common_struct_member(member_id_OrderQty, member_flags_OrderQty, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrderQty, common_OrderQty_ec))}; + if (!common_OrderQty_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrderQty member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrderQty = "OrderQty"; + eprosima::fastcdr::optional member_ann_builtin_OrderQty; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_OrderQty = TypeObjectUtils::build_complete_member_detail(name_OrderQty, member_ann_builtin_OrderQty, ann_custom_OrderCancelRequest); + CompleteStructMember member_OrderQty = TypeObjectUtils::build_complete_struct_member(common_OrderQty, detail_OrderQty); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_OrderQty); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x0000000c; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_OrderCancelRequest.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_OrderCancelRequest); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderCancelRequest, member_Text); + } + CompleteStructType struct_type_OrderCancelRequest = TypeObjectUtils::build_complete_struct_type(struct_flags_OrderCancelRequest, header_OrderCancelRequest, member_seq_OrderCancelRequest); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_OrderCancelRequest, type_name_OrderCancelRequest.to_string(), type_ids_OrderCancelRequest)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_OrderCancelRequest::OrderCancelRequest already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_OrderCancelRequest + diff --git a/GenTools/idl/OrderCancelRequestTypeObjectSupport.hpp b/GenTools/idl/OrderCancelRequestTypeObjectSupport.hpp new file mode 100644 index 0000000..6906c7b --- /dev/null +++ b/GenTools/idl/OrderCancelRequestTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 OrderCancelRequestTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUEST_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUEST_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_OrderCancelRequest { +/** + * @brief Register OrderCancelRequest related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_OrderCancelRequest_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_OrderCancelRequest + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERCANCELREQUEST_ORDERCANCELREQUEST_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/OrderMassCancelReport.hpp b/GenTools/idl/OrderMassCancelReport.hpp new file mode 100644 index 0000000..c7f68f2 --- /dev/null +++ b/GenTools/idl/OrderMassCancelReport.hpp @@ -0,0 +1,682 @@ +// 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 OrderMassCancelReport.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORT_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(ORDERMASSCANCELREPORT_SOURCE) +#define ORDERMASSCANCELREPORT_DllAPI __declspec( dllexport ) +#else +#define ORDERMASSCANCELREPORT_DllAPI __declspec( dllimport ) +#endif // ORDERMASSCANCELREPORT_SOURCE +#else +#define ORDERMASSCANCELREPORT_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define ORDERMASSCANCELREPORT_DllAPI +#endif // _WIN32 + +namespace DistributedATS_OrderMassCancelReport { + +/*! + * @brief This class represents the structure OrderMassCancelReport defined by the user in the IDL file. + * @ingroup OrderMassCancelReport + */ +class OrderMassCancelReport +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport OrderMassCancelReport() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~OrderMassCancelReport() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object OrderMassCancelReport that will be copied. + */ + eProsima_user_DllExport OrderMassCancelReport( + const OrderMassCancelReport& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_OrderID = x.m_OrderID; + + m_MassCancelRequestType = x.m_MassCancelRequestType; + + m_MassCancelResponse = x.m_MassCancelResponse; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_TransactTime = x.m_TransactTime; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object OrderMassCancelReport that will be copied. + */ + eProsima_user_DllExport OrderMassCancelReport( + OrderMassCancelReport&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_OrderID = std::move(x.m_OrderID); + m_MassCancelRequestType = x.m_MassCancelRequestType; + m_MassCancelResponse = x.m_MassCancelResponse; + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_TransactTime = x.m_TransactTime; + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object OrderMassCancelReport that will be copied. + */ + eProsima_user_DllExport OrderMassCancelReport& operator =( + const OrderMassCancelReport& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_OrderID = x.m_OrderID; + + m_MassCancelRequestType = x.m_MassCancelRequestType; + + m_MassCancelResponse = x.m_MassCancelResponse; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_TransactTime = x.m_TransactTime; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object OrderMassCancelReport that will be copied. + */ + eProsima_user_DllExport OrderMassCancelReport& operator =( + OrderMassCancelReport&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_OrderID = std::move(x.m_OrderID); + m_MassCancelRequestType = x.m_MassCancelRequestType; + m_MassCancelResponse = x.m_MassCancelResponse; + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_TransactTime = x.m_TransactTime; + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x OrderMassCancelReport object to compare. + */ + eProsima_user_DllExport bool operator ==( + const OrderMassCancelReport& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_OrderID == x.m_OrderID && + m_MassCancelRequestType == x.m_MassCancelRequestType && + m_MassCancelResponse == x.m_MassCancelResponse && + m_Symbol == x.m_Symbol && + m_SecurityExchange == x.m_SecurityExchange && + m_TransactTime == x.m_TransactTime && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x OrderMassCancelReport object to compare. + */ + eProsima_user_DllExport bool operator !=( + const OrderMassCancelReport& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member OrderID + * @param _OrderID New value to be copied in member OrderID + */ + eProsima_user_DllExport void OrderID( + const std::string& _OrderID) + { + m_OrderID = _OrderID; + } + + /*! + * @brief This function moves the value in member OrderID + * @param _OrderID New value to be moved in member OrderID + */ + eProsima_user_DllExport void OrderID( + std::string&& _OrderID) + { + m_OrderID = std::move(_OrderID); + } + + /*! + * @brief This function returns a constant reference to member OrderID + * @return Constant reference to member OrderID + */ + eProsima_user_DllExport const std::string& OrderID() const + { + return m_OrderID; + } + + /*! + * @brief This function returns a reference to member OrderID + * @return Reference to member OrderID + */ + eProsima_user_DllExport std::string& OrderID() + { + return m_OrderID; + } + + + /*! + * @brief This function sets a value in member MassCancelRequestType + * @param _MassCancelRequestType New value for member MassCancelRequestType + */ + eProsima_user_DllExport void MassCancelRequestType( + char _MassCancelRequestType) + { + m_MassCancelRequestType = _MassCancelRequestType; + } + + /*! + * @brief This function returns the value of member MassCancelRequestType + * @return Value of member MassCancelRequestType + */ + eProsima_user_DllExport char MassCancelRequestType() const + { + return m_MassCancelRequestType; + } + + /*! + * @brief This function returns a reference to member MassCancelRequestType + * @return Reference to member MassCancelRequestType + */ + eProsima_user_DllExport char& MassCancelRequestType() + { + return m_MassCancelRequestType; + } + + + /*! + * @brief This function sets a value in member MassCancelResponse + * @param _MassCancelResponse New value for member MassCancelResponse + */ + eProsima_user_DllExport void MassCancelResponse( + char _MassCancelResponse) + { + m_MassCancelResponse = _MassCancelResponse; + } + + /*! + * @brief This function returns the value of member MassCancelResponse + * @return Value of member MassCancelResponse + */ + eProsima_user_DllExport char MassCancelResponse() const + { + return m_MassCancelResponse; + } + + /*! + * @brief This function returns a reference to member MassCancelResponse + * @return Reference to member MassCancelResponse + */ + eProsima_user_DllExport char& MassCancelResponse() + { + return m_MassCancelResponse; + } + + + /*! + * @brief This function copies the value in member Symbol + * @param _Symbol New value to be copied in member Symbol + */ + eProsima_user_DllExport void Symbol( + const std::string& _Symbol) + { + m_Symbol = _Symbol; + } + + /*! + * @brief This function moves the value in member Symbol + * @param _Symbol New value to be moved in member Symbol + */ + eProsima_user_DllExport void Symbol( + std::string&& _Symbol) + { + m_Symbol = std::move(_Symbol); + } + + /*! + * @brief This function returns a constant reference to member Symbol + * @return Constant reference to member Symbol + */ + eProsima_user_DllExport const std::string& Symbol() const + { + return m_Symbol; + } + + /*! + * @brief This function returns a reference to member Symbol + * @return Reference to member Symbol + */ + eProsima_user_DllExport std::string& Symbol() + { + return m_Symbol; + } + + + /*! + * @brief This function copies the value in member SecurityExchange + * @param _SecurityExchange New value to be copied in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + const std::string& _SecurityExchange) + { + m_SecurityExchange = _SecurityExchange; + } + + /*! + * @brief This function moves the value in member SecurityExchange + * @param _SecurityExchange New value to be moved in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + std::string&& _SecurityExchange) + { + m_SecurityExchange = std::move(_SecurityExchange); + } + + /*! + * @brief This function returns a constant reference to member SecurityExchange + * @return Constant reference to member SecurityExchange + */ + eProsima_user_DllExport const std::string& SecurityExchange() const + { + return m_SecurityExchange; + } + + /*! + * @brief This function returns a reference to member SecurityExchange + * @return Reference to member SecurityExchange + */ + eProsima_user_DllExport std::string& SecurityExchange() + { + return m_SecurityExchange; + } + + + /*! + * @brief This function sets a value in member TransactTime + * @param _TransactTime New value for member TransactTime + */ + eProsima_user_DllExport void TransactTime( + uint64_t _TransactTime) + { + m_TransactTime = _TransactTime; + } + + /*! + * @brief This function returns the value of member TransactTime + * @return Value of member TransactTime + */ + eProsima_user_DllExport uint64_t TransactTime() const + { + return m_TransactTime; + } + + /*! + * @brief This function returns a reference to member TransactTime + * @return Reference to member TransactTime + */ + eProsima_user_DllExport uint64_t& TransactTime() + { + return m_TransactTime; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_OrderID; + char m_MassCancelRequestType{0}; + char m_MassCancelResponse{0}; + std::string m_Symbol; + std::string m_SecurityExchange; + uint64_t m_TransactTime{0}; + std::string m_Text; + +}; + +} // namespace DistributedATS_OrderMassCancelReport + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORT_HPP_ + + diff --git a/GenTools/idl/OrderMassCancelReport.idl b/GenTools/idl/OrderMassCancelReport.idl index cce75ae..e41d1a1 100644 --- a/GenTools/idl/OrderMassCancelReport.idl +++ b/GenTools/idl/OrderMassCancelReport.idl @@ -1,13 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_OrderMassCancelReport { - @topic + struct OrderMassCancelReport { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string OrderID; char MassCancelRequestType; char MassCancelResponse; diff --git a/GenTools/idl/OrderMassCancelReportAdapter.cpp b/GenTools/idl/OrderMassCancelReportAdapter.cpp index a7f2761..dca0ed1 100644 --- a/GenTools/idl/OrderMassCancelReportAdapter.cpp +++ b/GenTools/idl/OrderMassCancelReportAdapter.cpp @@ -1,34 +1,34 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "OrderMassCancelReportAdapter.hpp" -#include "ConvertUtils.h" +#include void OrderMassCancelReportAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_OrderMassCancelReport::OrderMassCancelReport& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::OrderID) ) - ddsMsg.OrderID = CORBA::string_dup(((FIX::OrderID)fixMsg.getField(FIX::FIELD::OrderID)).getString().c_str()); + ddsMsg.OrderID ( ((FIX::OrderID)fixMsg.getField(FIX::FIELD::OrderID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::MassCancelRequestType) ) - ddsMsg.MassCancelRequestType = FIELD_GET_REF( fixMsg,MassCancelRequestType); + ddsMsg.MassCancelRequestType ( FIELD_GET_REF( fixMsg,MassCancelRequestType)); if (fixMsg.isSetField(FIX::FIELD::MassCancelResponse) ) - ddsMsg.MassCancelResponse = FIELD_GET_REF( fixMsg,MassCancelResponse); + ddsMsg.MassCancelResponse ( FIELD_GET_REF( fixMsg,MassCancelResponse)); if (fixMsg.isSetField(FIX::FIELD::Symbol) ) - ddsMsg.Symbol = CORBA::string_dup(((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); + ddsMsg.Symbol ( ((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SecurityExchange) ) - ddsMsg.SecurityExchange = CORBA::string_dup(((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); + ddsMsg.SecurityExchange ( ((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::TransactTime) ) - ddsMsg.TransactTime = ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate(); + ddsMsg.TransactTime ( ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate()); else - ddsMsg.TransactTime = 0; + ddsMsg.TransactTime ( 0 ); if (fixMsg.isSetField(FIX::FIELD::Text) ) - ddsMsg.Text = CORBA::string_dup(((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.Text ( ((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); }; @@ -37,23 +37,23 @@ void OrderMassCancelReportAdapter::FIX2DDS(const FIX::Message& fixMsg, Distribut void OrderMassCancelReportAdapter::DDS2FIX(const DistributedATS_OrderMassCancelReport::OrderMassCancelReport& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.OrderID.in(), FIX::FIELD::OrderID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.OrderID(), FIX::FIELD::OrderID, fixMsg); - FIX::MassCancelRequestType fixMassCancelRequestType(ddsMsg.MassCancelRequestType); + FIX::MassCancelRequestType fixMassCancelRequestType(ddsMsg.MassCancelRequestType()); fixMsg.setField(fixMassCancelRequestType); - FIX::MassCancelResponse fixMassCancelResponse(ddsMsg.MassCancelResponse); + FIX::MassCancelResponse fixMassCancelResponse(ddsMsg.MassCancelResponse()); fixMsg.setField(fixMassCancelResponse); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol.in(), FIX::FIELD::Symbol, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol(), FIX::FIELD::Symbol, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange.in(), FIX::FIELD::SecurityExchange, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange(), FIX::FIELD::SecurityExchange, fixMsg); - DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime, FIX::FIELD::TransactTime, fixMsg); + DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime(), FIX::FIELD::TransactTime, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Text.in(), FIX::FIELD::Text, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Text(), FIX::FIELD::Text, fixMsg); }; diff --git a/GenTools/idl/OrderMassCancelReportAdapter.hpp b/GenTools/idl/OrderMassCancelReportAdapter.hpp index bb5f294..1ed0548 100644 --- a/GenTools/idl/OrderMassCancelReportAdapter.hpp +++ b/GenTools/idl/OrderMassCancelReportAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __OrderMassCancelReport_h__ -#define __OrderMassCancelReport_h__ - -#include "OrderMassCancelReportTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "OrderMassCancelReport.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class OrderMassCancelReportAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_OrderMassCancelReport::OrderMassCancelReport& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_OrderMassCancelReport::OrderMassCancelReport& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/OrderMassCancelReportCdrAux.hpp b/GenTools/idl/OrderMassCancelReportCdrAux.hpp new file mode 100644 index 0000000..0294460 --- /dev/null +++ b/GenTools/idl/OrderMassCancelReportCdrAux.hpp @@ -0,0 +1,47 @@ +// 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 OrderMassCancelReportCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORTCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORTCDRAUX_HPP + +#include "OrderMassCancelReport.hpp" + +constexpr uint32_t DistributedATS_OrderMassCancelReport_OrderMassCancelReport_max_cdr_typesize {3676UL}; +constexpr uint32_t DistributedATS_OrderMassCancelReport_OrderMassCancelReport_max_key_cdr_typesize {0UL}; + + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderMassCancelReport::OrderMassCancelReport& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORTCDRAUX_HPP + diff --git a/GenTools/idl/OrderMassCancelReportCdrAux.ipp b/GenTools/idl/OrderMassCancelReportCdrAux.ipp new file mode 100644 index 0000000..be50744 --- /dev/null +++ b/GenTools/idl/OrderMassCancelReportCdrAux.ipp @@ -0,0 +1,253 @@ +// 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 OrderMassCancelReportCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORTCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORTCDRAUX_IPP + +#include "OrderMassCancelReportCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_OrderMassCancelReport::OrderMassCancelReport& data, + size_t& current_alignment) +{ + using namespace DistributedATS_OrderMassCancelReport; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.OrderID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.MassCancelRequestType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.MassCancelResponse(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.Symbol(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(9), + data.SecurityExchange(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(10), + data.TransactTime(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(11), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderMassCancelReport::OrderMassCancelReport& data) +{ + using namespace DistributedATS_OrderMassCancelReport; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.OrderID() + << eprosima::fastcdr::MemberId(6) << data.MassCancelRequestType() + << eprosima::fastcdr::MemberId(7) << data.MassCancelResponse() + << eprosima::fastcdr::MemberId(8) << data.Symbol() + << eprosima::fastcdr::MemberId(9) << data.SecurityExchange() + << eprosima::fastcdr::MemberId(10) << data.TransactTime() + << eprosima::fastcdr::MemberId(11) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_OrderMassCancelReport::OrderMassCancelReport& data) +{ + using namespace DistributedATS_OrderMassCancelReport; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.OrderID(); + break; + + case 6: + dcdr >> data.MassCancelRequestType(); + break; + + case 7: + dcdr >> data.MassCancelResponse(); + break; + + case 8: + dcdr >> data.Symbol(); + break; + + case 9: + dcdr >> data.SecurityExchange(); + break; + + case 10: + dcdr >> data.TransactTime(); + break; + + case 11: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderMassCancelReport::OrderMassCancelReport& data) +{ + using namespace DistributedATS_OrderMassCancelReport; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.OrderID(); + + scdr << data.MassCancelRequestType(); + + scdr << data.MassCancelResponse(); + + scdr << data.Symbol(); + + scdr << data.SecurityExchange(); + + scdr << data.TransactTime(); + + scdr << data.Text(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORTCDRAUX_IPP + diff --git a/GenTools/idl/OrderMassCancelReportLogger.hpp b/GenTools/idl/OrderMassCancelReportLogger.hpp index a60c015..c3257a3 100644 --- a/GenTools/idl/OrderMassCancelReportLogger.hpp +++ b/GenTools/idl/OrderMassCancelReportLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __OrderMassCancelReportLogger_h__ -#define __OrderMassCancelReportLogger_h__ - -#include "OrderMassCancelReportTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,21 +10,24 @@ class OrderMassCancelReportLogger static void log(std::ostream & out, DistributedATS_OrderMassCancelReport::OrderMassCancelReport& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : OrderMassCancelReport { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.OrderID : " << ddsMsg.OrderID << std::endl - << "ddsMsg.MassCancelRequestType : " << ddsMsg.MassCancelRequestType << std::endl - << "ddsMsg.MassCancelResponse : " << ddsMsg.MassCancelResponse << std::endl - << "ddsMsg.Symbol : " << ddsMsg.Symbol << std::endl - << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange << std::endl - << "ddsMsg.TransactTime : " << ddsMsg.TransactTime << std::endl - << "ddsMsg.Text : " << ddsMsg.Text << std::endl + << "ddsMsg.OrderID : " << ddsMsg.OrderID() << std::endl + << "ddsMsg.MassCancelRequestType : " << ddsMsg.MassCancelRequestType() << std::endl + << "ddsMsg.MassCancelResponse : " << ddsMsg.MassCancelResponse() << std::endl + << "ddsMsg.Symbol : " << ddsMsg.Symbol() << std::endl + << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange() << std::endl + << "ddsMsg.TransactTime : " << ddsMsg.TransactTime() << std::endl + << "ddsMsg.Text : " << ddsMsg.Text() << std::endl ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/OrderMassCancelReportPubSubTypes.cxx b/GenTools/idl/OrderMassCancelReportPubSubTypes.cxx new file mode 100644 index 0000000..f70b6e7 --- /dev/null +++ b/GenTools/idl/OrderMassCancelReportPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 OrderMassCancelReportPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "OrderMassCancelReportPubSubTypes.hpp" + +#include +#include + +#include "OrderMassCancelReportCdrAux.hpp" +#include "OrderMassCancelReportTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_OrderMassCancelReport { + OrderMassCancelReportPubSubType::OrderMassCancelReportPubSubType() + { + set_name("DistributedATS_OrderMassCancelReport::OrderMassCancelReport"); + uint32_t type_size = DistributedATS_OrderMassCancelReport_OrderMassCancelReport_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_OrderMassCancelReport_OrderMassCancelReport_max_key_cdr_typesize > 16 ? DistributedATS_OrderMassCancelReport_OrderMassCancelReport_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + OrderMassCancelReportPubSubType::~OrderMassCancelReportPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool OrderMassCancelReportPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const OrderMassCancelReport* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool OrderMassCancelReportPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + OrderMassCancelReport* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t OrderMassCancelReportPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* OrderMassCancelReportPubSubType::create_data() + { + return reinterpret_cast(new OrderMassCancelReport()); + } + + void OrderMassCancelReportPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool OrderMassCancelReportPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + OrderMassCancelReport data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool OrderMassCancelReportPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const OrderMassCancelReport* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_OrderMassCancelReport_OrderMassCancelReport_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_OrderMassCancelReport_OrderMassCancelReport_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void OrderMassCancelReportPubSubType::register_type_object_representation() + { + register_OrderMassCancelReport_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_OrderMassCancelReport + + +// Include auxiliary functions like for serializing/deserializing. +#include "OrderMassCancelReportCdrAux.ipp" diff --git a/GenTools/idl/OrderMassCancelReportPubSubTypes.hpp b/GenTools/idl/OrderMassCancelReportPubSubTypes.hpp new file mode 100644 index 0000000..5bfbce5 --- /dev/null +++ b/GenTools/idl/OrderMassCancelReportPubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 OrderMassCancelReportPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORT_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORT_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "OrderMassCancelReport.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated OrderMassCancelReport is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_OrderMassCancelReport +{ + + /*! + * @brief This class represents the TopicDataType of the type OrderMassCancelReport defined by the user in the IDL file. + * @ingroup OrderMassCancelReport + */ + class OrderMassCancelReportPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef OrderMassCancelReport type; + + eProsima_user_DllExport OrderMassCancelReportPubSubType(); + + eProsima_user_DllExport ~OrderMassCancelReportPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_OrderMassCancelReport + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORT_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/OrderMassCancelReportTypeObjectSupport.cxx b/GenTools/idl/OrderMassCancelReportTypeObjectSupport.cxx new file mode 100644 index 0000000..ee1e3f1 --- /dev/null +++ b/GenTools/idl/OrderMassCancelReportTypeObjectSupport.cxx @@ -0,0 +1,496 @@ +// 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 OrderMassCancelReportTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "OrderMassCancelReportTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "OrderMassCancelReport.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_OrderMassCancelReport { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_OrderMassCancelReport_type_identifier( + TypeIdentifierPair& type_ids_OrderMassCancelReport) +{ + + ReturnCode_t return_code_OrderMassCancelReport {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderMassCancelReport = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_OrderMassCancelReport::OrderMassCancelReport", type_ids_OrderMassCancelReport); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderMassCancelReport) + { + StructTypeFlag struct_flags_OrderMassCancelReport = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_OrderMassCancelReport = "DistributedATS_OrderMassCancelReport::OrderMassCancelReport"; + eprosima::fastcdr::optional type_ann_builtin_OrderMassCancelReport; + eprosima::fastcdr::optional ann_custom_OrderMassCancelReport; + CompleteTypeDetail detail_OrderMassCancelReport = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_OrderMassCancelReport, ann_custom_OrderMassCancelReport, type_name_OrderMassCancelReport.to_string()); + CompleteStructHeader header_OrderMassCancelReport; + header_OrderMassCancelReport = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_OrderMassCancelReport); + CompleteStructMemberSeq member_seq_OrderMassCancelReport; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_OrderMassCancelReport.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_OrderMassCancelReport); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelReport, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_OrderMassCancelReport.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_OrderMassCancelReport); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelReport, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_OrderMassCancelReport.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_OrderMassCancelReport); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelReport, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_OrderMassCancelReport.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_OrderMassCancelReport); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelReport, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_OrderMassCancelReport.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_OrderMassCancelReport); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelReport, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_OrderID; + ReturnCode_t return_code_OrderID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_OrderID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_OrderID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_OrderID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_OrderID = 0x00000005; + bool common_OrderID_ec {false}; + CommonStructMember common_OrderID {TypeObjectUtils::build_common_struct_member(member_id_OrderID, member_flags_OrderID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_OrderID, common_OrderID_ec))}; + if (!common_OrderID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure OrderID member TypeIdentifier inconsistent."); + return; + } + MemberName name_OrderID = "OrderID"; + eprosima::fastcdr::optional member_ann_builtin_OrderID; + ann_custom_OrderMassCancelReport.reset(); + CompleteMemberDetail detail_OrderID = TypeObjectUtils::build_complete_member_detail(name_OrderID, member_ann_builtin_OrderID, ann_custom_OrderMassCancelReport); + CompleteStructMember member_OrderID = TypeObjectUtils::build_complete_struct_member(common_OrderID, detail_OrderID); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelReport, member_OrderID); + } + { + TypeIdentifierPair type_ids_MassCancelRequestType; + ReturnCode_t return_code_MassCancelRequestType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MassCancelRequestType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_MassCancelRequestType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MassCancelRequestType) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MassCancelRequestType Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MassCancelRequestType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MassCancelRequestType = 0x00000006; + bool common_MassCancelRequestType_ec {false}; + CommonStructMember common_MassCancelRequestType {TypeObjectUtils::build_common_struct_member(member_id_MassCancelRequestType, member_flags_MassCancelRequestType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MassCancelRequestType, common_MassCancelRequestType_ec))}; + if (!common_MassCancelRequestType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MassCancelRequestType member TypeIdentifier inconsistent."); + return; + } + MemberName name_MassCancelRequestType = "MassCancelRequestType"; + eprosima::fastcdr::optional member_ann_builtin_MassCancelRequestType; + ann_custom_OrderMassCancelReport.reset(); + CompleteMemberDetail detail_MassCancelRequestType = TypeObjectUtils::build_complete_member_detail(name_MassCancelRequestType, member_ann_builtin_MassCancelRequestType, ann_custom_OrderMassCancelReport); + CompleteStructMember member_MassCancelRequestType = TypeObjectUtils::build_complete_struct_member(common_MassCancelRequestType, detail_MassCancelRequestType); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelReport, member_MassCancelRequestType); + } + { + TypeIdentifierPair type_ids_MassCancelResponse; + ReturnCode_t return_code_MassCancelResponse {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MassCancelResponse = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_MassCancelResponse); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MassCancelResponse) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MassCancelResponse Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MassCancelResponse = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MassCancelResponse = 0x00000007; + bool common_MassCancelResponse_ec {false}; + CommonStructMember common_MassCancelResponse {TypeObjectUtils::build_common_struct_member(member_id_MassCancelResponse, member_flags_MassCancelResponse, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MassCancelResponse, common_MassCancelResponse_ec))}; + if (!common_MassCancelResponse_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MassCancelResponse member TypeIdentifier inconsistent."); + return; + } + MemberName name_MassCancelResponse = "MassCancelResponse"; + eprosima::fastcdr::optional member_ann_builtin_MassCancelResponse; + ann_custom_OrderMassCancelReport.reset(); + CompleteMemberDetail detail_MassCancelResponse = TypeObjectUtils::build_complete_member_detail(name_MassCancelResponse, member_ann_builtin_MassCancelResponse, ann_custom_OrderMassCancelReport); + CompleteStructMember member_MassCancelResponse = TypeObjectUtils::build_complete_struct_member(common_MassCancelResponse, detail_MassCancelResponse); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelReport, member_MassCancelResponse); + } + { + TypeIdentifierPair type_ids_Symbol; + ReturnCode_t return_code_Symbol {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Symbol = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Symbol); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Symbol) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Symbol)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Symbol = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Symbol = 0x00000008; + bool common_Symbol_ec {false}; + CommonStructMember common_Symbol {TypeObjectUtils::build_common_struct_member(member_id_Symbol, member_flags_Symbol, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Symbol, common_Symbol_ec))}; + if (!common_Symbol_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Symbol member TypeIdentifier inconsistent."); + return; + } + MemberName name_Symbol = "Symbol"; + eprosima::fastcdr::optional member_ann_builtin_Symbol; + ann_custom_OrderMassCancelReport.reset(); + CompleteMemberDetail detail_Symbol = TypeObjectUtils::build_complete_member_detail(name_Symbol, member_ann_builtin_Symbol, ann_custom_OrderMassCancelReport); + CompleteStructMember member_Symbol = TypeObjectUtils::build_complete_struct_member(common_Symbol, detail_Symbol); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelReport, member_Symbol); + } + { + TypeIdentifierPair type_ids_SecurityExchange; + ReturnCode_t return_code_SecurityExchange {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityExchange = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityExchange); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityExchange) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityExchange)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityExchange = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityExchange = 0x00000009; + bool common_SecurityExchange_ec {false}; + CommonStructMember common_SecurityExchange {TypeObjectUtils::build_common_struct_member(member_id_SecurityExchange, member_flags_SecurityExchange, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityExchange, common_SecurityExchange_ec))}; + if (!common_SecurityExchange_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityExchange member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityExchange = "SecurityExchange"; + eprosima::fastcdr::optional member_ann_builtin_SecurityExchange; + ann_custom_OrderMassCancelReport.reset(); + CompleteMemberDetail detail_SecurityExchange = TypeObjectUtils::build_complete_member_detail(name_SecurityExchange, member_ann_builtin_SecurityExchange, ann_custom_OrderMassCancelReport); + CompleteStructMember member_SecurityExchange = TypeObjectUtils::build_complete_struct_member(common_SecurityExchange, detail_SecurityExchange); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelReport, member_SecurityExchange); + } + { + TypeIdentifierPair type_ids_TransactTime; + ReturnCode_t return_code_TransactTime {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TransactTime = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_uint64_t", type_ids_TransactTime); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TransactTime) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "TransactTime Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_TransactTime = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TransactTime = 0x0000000a; + bool common_TransactTime_ec {false}; + CommonStructMember common_TransactTime {TypeObjectUtils::build_common_struct_member(member_id_TransactTime, member_flags_TransactTime, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TransactTime, common_TransactTime_ec))}; + if (!common_TransactTime_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TransactTime member TypeIdentifier inconsistent."); + return; + } + MemberName name_TransactTime = "TransactTime"; + eprosima::fastcdr::optional member_ann_builtin_TransactTime; + ann_custom_OrderMassCancelReport.reset(); + CompleteMemberDetail detail_TransactTime = TypeObjectUtils::build_complete_member_detail(name_TransactTime, member_ann_builtin_TransactTime, ann_custom_OrderMassCancelReport); + CompleteStructMember member_TransactTime = TypeObjectUtils::build_complete_struct_member(common_TransactTime, detail_TransactTime); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelReport, member_TransactTime); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x0000000b; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_OrderMassCancelReport.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_OrderMassCancelReport); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelReport, member_Text); + } + CompleteStructType struct_type_OrderMassCancelReport = TypeObjectUtils::build_complete_struct_type(struct_flags_OrderMassCancelReport, header_OrderMassCancelReport, member_seq_OrderMassCancelReport); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_OrderMassCancelReport, type_name_OrderMassCancelReport.to_string(), type_ids_OrderMassCancelReport)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_OrderMassCancelReport::OrderMassCancelReport already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_OrderMassCancelReport + diff --git a/GenTools/idl/OrderMassCancelReportTypeObjectSupport.hpp b/GenTools/idl/OrderMassCancelReportTypeObjectSupport.hpp new file mode 100644 index 0000000..664d1e9 --- /dev/null +++ b/GenTools/idl/OrderMassCancelReportTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 OrderMassCancelReportTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORT_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORT_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_OrderMassCancelReport { +/** + * @brief Register OrderMassCancelReport related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_OrderMassCancelReport_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_OrderMassCancelReport + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREPORT_ORDERMASSCANCELREPORT_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/OrderMassCancelRequest.hpp b/GenTools/idl/OrderMassCancelRequest.hpp new file mode 100644 index 0000000..7ca9bee --- /dev/null +++ b/GenTools/idl/OrderMassCancelRequest.hpp @@ -0,0 +1,645 @@ +// 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 OrderMassCancelRequest.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUEST_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUEST_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(ORDERMASSCANCELREQUEST_SOURCE) +#define ORDERMASSCANCELREQUEST_DllAPI __declspec( dllexport ) +#else +#define ORDERMASSCANCELREQUEST_DllAPI __declspec( dllimport ) +#endif // ORDERMASSCANCELREQUEST_SOURCE +#else +#define ORDERMASSCANCELREQUEST_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define ORDERMASSCANCELREQUEST_DllAPI +#endif // _WIN32 + +namespace DistributedATS_OrderMassCancelRequest { + +/*! + * @brief This class represents the structure OrderMassCancelRequest defined by the user in the IDL file. + * @ingroup OrderMassCancelRequest + */ +class OrderMassCancelRequest +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport OrderMassCancelRequest() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~OrderMassCancelRequest() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object OrderMassCancelRequest that will be copied. + */ + eProsima_user_DllExport OrderMassCancelRequest( + const OrderMassCancelRequest& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_ClOrdID = x.m_ClOrdID; + + m_MassCancelRequestType = x.m_MassCancelRequestType; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_TransactTime = x.m_TransactTime; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object OrderMassCancelRequest that will be copied. + */ + eProsima_user_DllExport OrderMassCancelRequest( + OrderMassCancelRequest&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_ClOrdID = std::move(x.m_ClOrdID); + m_MassCancelRequestType = x.m_MassCancelRequestType; + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_TransactTime = x.m_TransactTime; + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object OrderMassCancelRequest that will be copied. + */ + eProsima_user_DllExport OrderMassCancelRequest& operator =( + const OrderMassCancelRequest& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_ClOrdID = x.m_ClOrdID; + + m_MassCancelRequestType = x.m_MassCancelRequestType; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_TransactTime = x.m_TransactTime; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object OrderMassCancelRequest that will be copied. + */ + eProsima_user_DllExport OrderMassCancelRequest& operator =( + OrderMassCancelRequest&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_ClOrdID = std::move(x.m_ClOrdID); + m_MassCancelRequestType = x.m_MassCancelRequestType; + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_TransactTime = x.m_TransactTime; + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x OrderMassCancelRequest object to compare. + */ + eProsima_user_DllExport bool operator ==( + const OrderMassCancelRequest& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_ClOrdID == x.m_ClOrdID && + m_MassCancelRequestType == x.m_MassCancelRequestType && + m_Symbol == x.m_Symbol && + m_SecurityExchange == x.m_SecurityExchange && + m_TransactTime == x.m_TransactTime && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x OrderMassCancelRequest object to compare. + */ + eProsima_user_DllExport bool operator !=( + const OrderMassCancelRequest& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member ClOrdID + * @param _ClOrdID New value to be copied in member ClOrdID + */ + eProsima_user_DllExport void ClOrdID( + const std::string& _ClOrdID) + { + m_ClOrdID = _ClOrdID; + } + + /*! + * @brief This function moves the value in member ClOrdID + * @param _ClOrdID New value to be moved in member ClOrdID + */ + eProsima_user_DllExport void ClOrdID( + std::string&& _ClOrdID) + { + m_ClOrdID = std::move(_ClOrdID); + } + + /*! + * @brief This function returns a constant reference to member ClOrdID + * @return Constant reference to member ClOrdID + */ + eProsima_user_DllExport const std::string& ClOrdID() const + { + return m_ClOrdID; + } + + /*! + * @brief This function returns a reference to member ClOrdID + * @return Reference to member ClOrdID + */ + eProsima_user_DllExport std::string& ClOrdID() + { + return m_ClOrdID; + } + + + /*! + * @brief This function sets a value in member MassCancelRequestType + * @param _MassCancelRequestType New value for member MassCancelRequestType + */ + eProsima_user_DllExport void MassCancelRequestType( + char _MassCancelRequestType) + { + m_MassCancelRequestType = _MassCancelRequestType; + } + + /*! + * @brief This function returns the value of member MassCancelRequestType + * @return Value of member MassCancelRequestType + */ + eProsima_user_DllExport char MassCancelRequestType() const + { + return m_MassCancelRequestType; + } + + /*! + * @brief This function returns a reference to member MassCancelRequestType + * @return Reference to member MassCancelRequestType + */ + eProsima_user_DllExport char& MassCancelRequestType() + { + return m_MassCancelRequestType; + } + + + /*! + * @brief This function copies the value in member Symbol + * @param _Symbol New value to be copied in member Symbol + */ + eProsima_user_DllExport void Symbol( + const std::string& _Symbol) + { + m_Symbol = _Symbol; + } + + /*! + * @brief This function moves the value in member Symbol + * @param _Symbol New value to be moved in member Symbol + */ + eProsima_user_DllExport void Symbol( + std::string&& _Symbol) + { + m_Symbol = std::move(_Symbol); + } + + /*! + * @brief This function returns a constant reference to member Symbol + * @return Constant reference to member Symbol + */ + eProsima_user_DllExport const std::string& Symbol() const + { + return m_Symbol; + } + + /*! + * @brief This function returns a reference to member Symbol + * @return Reference to member Symbol + */ + eProsima_user_DllExport std::string& Symbol() + { + return m_Symbol; + } + + + /*! + * @brief This function copies the value in member SecurityExchange + * @param _SecurityExchange New value to be copied in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + const std::string& _SecurityExchange) + { + m_SecurityExchange = _SecurityExchange; + } + + /*! + * @brief This function moves the value in member SecurityExchange + * @param _SecurityExchange New value to be moved in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + std::string&& _SecurityExchange) + { + m_SecurityExchange = std::move(_SecurityExchange); + } + + /*! + * @brief This function returns a constant reference to member SecurityExchange + * @return Constant reference to member SecurityExchange + */ + eProsima_user_DllExport const std::string& SecurityExchange() const + { + return m_SecurityExchange; + } + + /*! + * @brief This function returns a reference to member SecurityExchange + * @return Reference to member SecurityExchange + */ + eProsima_user_DllExport std::string& SecurityExchange() + { + return m_SecurityExchange; + } + + + /*! + * @brief This function sets a value in member TransactTime + * @param _TransactTime New value for member TransactTime + */ + eProsima_user_DllExport void TransactTime( + uint64_t _TransactTime) + { + m_TransactTime = _TransactTime; + } + + /*! + * @brief This function returns the value of member TransactTime + * @return Value of member TransactTime + */ + eProsima_user_DllExport uint64_t TransactTime() const + { + return m_TransactTime; + } + + /*! + * @brief This function returns a reference to member TransactTime + * @return Reference to member TransactTime + */ + eProsima_user_DllExport uint64_t& TransactTime() + { + return m_TransactTime; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_ClOrdID; + char m_MassCancelRequestType{0}; + std::string m_Symbol; + std::string m_SecurityExchange; + uint64_t m_TransactTime{0}; + std::string m_Text; + +}; + +} // namespace DistributedATS_OrderMassCancelRequest + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUEST_HPP_ + + diff --git a/GenTools/idl/OrderMassCancelRequest.idl b/GenTools/idl/OrderMassCancelRequest.idl index 634d48b..d5db828 100644 --- a/GenTools/idl/OrderMassCancelRequest.idl +++ b/GenTools/idl/OrderMassCancelRequest.idl @@ -1,13 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_OrderMassCancelRequest { - @topic + struct OrderMassCancelRequest { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string ClOrdID; char MassCancelRequestType; string Symbol; diff --git a/GenTools/idl/OrderMassCancelRequestAdapter.cpp b/GenTools/idl/OrderMassCancelRequestAdapter.cpp index 0d16cde..cdf0664 100644 --- a/GenTools/idl/OrderMassCancelRequestAdapter.cpp +++ b/GenTools/idl/OrderMassCancelRequestAdapter.cpp @@ -1,31 +1,31 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "OrderMassCancelRequestAdapter.hpp" -#include "ConvertUtils.h" +#include void OrderMassCancelRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::ClOrdID) ) - ddsMsg.ClOrdID = CORBA::string_dup(((FIX::ClOrdID)fixMsg.getField(FIX::FIELD::ClOrdID)).getString().c_str()); + ddsMsg.ClOrdID ( ((FIX::ClOrdID)fixMsg.getField(FIX::FIELD::ClOrdID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::MassCancelRequestType) ) - ddsMsg.MassCancelRequestType = FIELD_GET_REF( fixMsg,MassCancelRequestType); + ddsMsg.MassCancelRequestType ( FIELD_GET_REF( fixMsg,MassCancelRequestType)); if (fixMsg.isSetField(FIX::FIELD::Symbol) ) - ddsMsg.Symbol = CORBA::string_dup(((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); + ddsMsg.Symbol ( ((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SecurityExchange) ) - ddsMsg.SecurityExchange = CORBA::string_dup(((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); + ddsMsg.SecurityExchange ( ((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::TransactTime) ) - ddsMsg.TransactTime = ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate(); + ddsMsg.TransactTime ( ((FIX::TransactTime)FIELD_GET_REF( fixMsg,TransactTime)).getValue().getJulianDate()); else - ddsMsg.TransactTime = 0; + ddsMsg.TransactTime ( 0 ); if (fixMsg.isSetField(FIX::FIELD::Text) ) - ddsMsg.Text = CORBA::string_dup(((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.Text ( ((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); }; @@ -34,20 +34,20 @@ void OrderMassCancelRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, Distribu void OrderMassCancelRequestAdapter::DDS2FIX(const DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.ClOrdID.in(), FIX::FIELD::ClOrdID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.ClOrdID(), FIX::FIELD::ClOrdID, fixMsg); - FIX::MassCancelRequestType fixMassCancelRequestType(ddsMsg.MassCancelRequestType); + FIX::MassCancelRequestType fixMassCancelRequestType(ddsMsg.MassCancelRequestType()); fixMsg.setField(fixMassCancelRequestType); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol.in(), FIX::FIELD::Symbol, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol(), FIX::FIELD::Symbol, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange.in(), FIX::FIELD::SecurityExchange, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange(), FIX::FIELD::SecurityExchange, fixMsg); - DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime, FIX::FIELD::TransactTime, fixMsg); + DistributedATS::convert_dds_timestamp_to_fix(ddsMsg.TransactTime(), FIX::FIELD::TransactTime, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Text.in(), FIX::FIELD::Text, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Text(), FIX::FIELD::Text, fixMsg); }; diff --git a/GenTools/idl/OrderMassCancelRequestAdapter.hpp b/GenTools/idl/OrderMassCancelRequestAdapter.hpp index 7d5c8f1..dc22c3c 100644 --- a/GenTools/idl/OrderMassCancelRequestAdapter.hpp +++ b/GenTools/idl/OrderMassCancelRequestAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __OrderMassCancelRequest_h__ -#define __OrderMassCancelRequest_h__ - -#include "OrderMassCancelRequestTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "OrderMassCancelRequest.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class OrderMassCancelRequestAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/OrderMassCancelRequestCdrAux.hpp b/GenTools/idl/OrderMassCancelRequestCdrAux.hpp new file mode 100644 index 0000000..19612cd --- /dev/null +++ b/GenTools/idl/OrderMassCancelRequestCdrAux.hpp @@ -0,0 +1,47 @@ +// 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 OrderMassCancelRequestCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUESTCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUESTCDRAUX_HPP + +#include "OrderMassCancelRequest.hpp" + +constexpr uint32_t DistributedATS_OrderMassCancelRequest_OrderMassCancelRequest_max_cdr_typesize {3676UL}; +constexpr uint32_t DistributedATS_OrderMassCancelRequest_OrderMassCancelRequest_max_key_cdr_typesize {0UL}; + + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUESTCDRAUX_HPP + diff --git a/GenTools/idl/OrderMassCancelRequestCdrAux.ipp b/GenTools/idl/OrderMassCancelRequestCdrAux.ipp new file mode 100644 index 0000000..a5c91de --- /dev/null +++ b/GenTools/idl/OrderMassCancelRequestCdrAux.ipp @@ -0,0 +1,242 @@ +// 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 OrderMassCancelRequestCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUESTCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUESTCDRAUX_IPP + +#include "OrderMassCancelRequestCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest& data, + size_t& current_alignment) +{ + using namespace DistributedATS_OrderMassCancelRequest; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.ClOrdID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.MassCancelRequestType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.Symbol(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.SecurityExchange(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(9), + data.TransactTime(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(10), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest& data) +{ + using namespace DistributedATS_OrderMassCancelRequest; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.ClOrdID() + << eprosima::fastcdr::MemberId(6) << data.MassCancelRequestType() + << eprosima::fastcdr::MemberId(7) << data.Symbol() + << eprosima::fastcdr::MemberId(8) << data.SecurityExchange() + << eprosima::fastcdr::MemberId(9) << data.TransactTime() + << eprosima::fastcdr::MemberId(10) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest& data) +{ + using namespace DistributedATS_OrderMassCancelRequest; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.ClOrdID(); + break; + + case 6: + dcdr >> data.MassCancelRequestType(); + break; + + case 7: + dcdr >> data.Symbol(); + break; + + case 8: + dcdr >> data.SecurityExchange(); + break; + + case 9: + dcdr >> data.TransactTime(); + break; + + case 10: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest& data) +{ + using namespace DistributedATS_OrderMassCancelRequest; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.ClOrdID(); + + scdr << data.MassCancelRequestType(); + + scdr << data.Symbol(); + + scdr << data.SecurityExchange(); + + scdr << data.TransactTime(); + + scdr << data.Text(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUESTCDRAUX_IPP + diff --git a/GenTools/idl/OrderMassCancelRequestLogger.hpp b/GenTools/idl/OrderMassCancelRequestLogger.hpp index 3368011..fdd80a2 100644 --- a/GenTools/idl/OrderMassCancelRequestLogger.hpp +++ b/GenTools/idl/OrderMassCancelRequestLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __OrderMassCancelRequestLogger_h__ -#define __OrderMassCancelRequestLogger_h__ - -#include "OrderMassCancelRequestTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,20 +10,23 @@ class OrderMassCancelRequestLogger static void log(std::ostream & out, DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : OrderMassCancelRequest { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.ClOrdID : " << ddsMsg.ClOrdID << std::endl - << "ddsMsg.MassCancelRequestType : " << ddsMsg.MassCancelRequestType << std::endl - << "ddsMsg.Symbol : " << ddsMsg.Symbol << std::endl - << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange << std::endl - << "ddsMsg.TransactTime : " << ddsMsg.TransactTime << std::endl - << "ddsMsg.Text : " << ddsMsg.Text << std::endl + << "ddsMsg.ClOrdID : " << ddsMsg.ClOrdID() << std::endl + << "ddsMsg.MassCancelRequestType : " << ddsMsg.MassCancelRequestType() << std::endl + << "ddsMsg.Symbol : " << ddsMsg.Symbol() << std::endl + << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange() << std::endl + << "ddsMsg.TransactTime : " << ddsMsg.TransactTime() << std::endl + << "ddsMsg.Text : " << ddsMsg.Text() << std::endl ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/OrderMassCancelRequestPubSubTypes.cxx b/GenTools/idl/OrderMassCancelRequestPubSubTypes.cxx new file mode 100644 index 0000000..905cd26 --- /dev/null +++ b/GenTools/idl/OrderMassCancelRequestPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 OrderMassCancelRequestPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "OrderMassCancelRequestPubSubTypes.hpp" + +#include +#include + +#include "OrderMassCancelRequestCdrAux.hpp" +#include "OrderMassCancelRequestTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_OrderMassCancelRequest { + OrderMassCancelRequestPubSubType::OrderMassCancelRequestPubSubType() + { + set_name("DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest"); + uint32_t type_size = DistributedATS_OrderMassCancelRequest_OrderMassCancelRequest_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_OrderMassCancelRequest_OrderMassCancelRequest_max_key_cdr_typesize > 16 ? DistributedATS_OrderMassCancelRequest_OrderMassCancelRequest_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + OrderMassCancelRequestPubSubType::~OrderMassCancelRequestPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool OrderMassCancelRequestPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const OrderMassCancelRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool OrderMassCancelRequestPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + OrderMassCancelRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t OrderMassCancelRequestPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* OrderMassCancelRequestPubSubType::create_data() + { + return reinterpret_cast(new OrderMassCancelRequest()); + } + + void OrderMassCancelRequestPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool OrderMassCancelRequestPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + OrderMassCancelRequest data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool OrderMassCancelRequestPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const OrderMassCancelRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_OrderMassCancelRequest_OrderMassCancelRequest_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_OrderMassCancelRequest_OrderMassCancelRequest_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void OrderMassCancelRequestPubSubType::register_type_object_representation() + { + register_OrderMassCancelRequest_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_OrderMassCancelRequest + + +// Include auxiliary functions like for serializing/deserializing. +#include "OrderMassCancelRequestCdrAux.ipp" diff --git a/GenTools/idl/OrderMassCancelRequestPubSubTypes.hpp b/GenTools/idl/OrderMassCancelRequestPubSubTypes.hpp new file mode 100644 index 0000000..b8e145a --- /dev/null +++ b/GenTools/idl/OrderMassCancelRequestPubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 OrderMassCancelRequestPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUEST_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUEST_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "OrderMassCancelRequest.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated OrderMassCancelRequest is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_OrderMassCancelRequest +{ + + /*! + * @brief This class represents the TopicDataType of the type OrderMassCancelRequest defined by the user in the IDL file. + * @ingroup OrderMassCancelRequest + */ + class OrderMassCancelRequestPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef OrderMassCancelRequest type; + + eProsima_user_DllExport OrderMassCancelRequestPubSubType(); + + eProsima_user_DllExport ~OrderMassCancelRequestPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_OrderMassCancelRequest + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUEST_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/OrderMassCancelRequestTypeObjectSupport.cxx b/GenTools/idl/OrderMassCancelRequestTypeObjectSupport.cxx new file mode 100644 index 0000000..c855333 --- /dev/null +++ b/GenTools/idl/OrderMassCancelRequestTypeObjectSupport.cxx @@ -0,0 +1,466 @@ +// 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 OrderMassCancelRequestTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "OrderMassCancelRequestTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "OrderMassCancelRequest.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_OrderMassCancelRequest { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_OrderMassCancelRequest_type_identifier( + TypeIdentifierPair& type_ids_OrderMassCancelRequest) +{ + + ReturnCode_t return_code_OrderMassCancelRequest {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderMassCancelRequest = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest", type_ids_OrderMassCancelRequest); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderMassCancelRequest) + { + StructTypeFlag struct_flags_OrderMassCancelRequest = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_OrderMassCancelRequest = "DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest"; + eprosima::fastcdr::optional type_ann_builtin_OrderMassCancelRequest; + eprosima::fastcdr::optional ann_custom_OrderMassCancelRequest; + CompleteTypeDetail detail_OrderMassCancelRequest = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_OrderMassCancelRequest, ann_custom_OrderMassCancelRequest, type_name_OrderMassCancelRequest.to_string()); + CompleteStructHeader header_OrderMassCancelRequest; + header_OrderMassCancelRequest = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_OrderMassCancelRequest); + CompleteStructMemberSeq member_seq_OrderMassCancelRequest; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_OrderMassCancelRequest.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_OrderMassCancelRequest); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelRequest, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_OrderMassCancelRequest.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_OrderMassCancelRequest); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelRequest, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_OrderMassCancelRequest.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_OrderMassCancelRequest); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelRequest, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_OrderMassCancelRequest.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_OrderMassCancelRequest); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelRequest, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_OrderMassCancelRequest.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_OrderMassCancelRequest); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelRequest, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_ClOrdID; + ReturnCode_t return_code_ClOrdID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_ClOrdID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_ClOrdID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_ClOrdID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_ClOrdID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_ClOrdID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_ClOrdID = 0x00000005; + bool common_ClOrdID_ec {false}; + CommonStructMember common_ClOrdID {TypeObjectUtils::build_common_struct_member(member_id_ClOrdID, member_flags_ClOrdID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_ClOrdID, common_ClOrdID_ec))}; + if (!common_ClOrdID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure ClOrdID member TypeIdentifier inconsistent."); + return; + } + MemberName name_ClOrdID = "ClOrdID"; + eprosima::fastcdr::optional member_ann_builtin_ClOrdID; + ann_custom_OrderMassCancelRequest.reset(); + CompleteMemberDetail detail_ClOrdID = TypeObjectUtils::build_complete_member_detail(name_ClOrdID, member_ann_builtin_ClOrdID, ann_custom_OrderMassCancelRequest); + CompleteStructMember member_ClOrdID = TypeObjectUtils::build_complete_struct_member(common_ClOrdID, detail_ClOrdID); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelRequest, member_ClOrdID); + } + { + TypeIdentifierPair type_ids_MassCancelRequestType; + ReturnCode_t return_code_MassCancelRequestType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MassCancelRequestType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_char", type_ids_MassCancelRequestType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MassCancelRequestType) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MassCancelRequestType Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MassCancelRequestType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MassCancelRequestType = 0x00000006; + bool common_MassCancelRequestType_ec {false}; + CommonStructMember common_MassCancelRequestType {TypeObjectUtils::build_common_struct_member(member_id_MassCancelRequestType, member_flags_MassCancelRequestType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MassCancelRequestType, common_MassCancelRequestType_ec))}; + if (!common_MassCancelRequestType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MassCancelRequestType member TypeIdentifier inconsistent."); + return; + } + MemberName name_MassCancelRequestType = "MassCancelRequestType"; + eprosima::fastcdr::optional member_ann_builtin_MassCancelRequestType; + ann_custom_OrderMassCancelRequest.reset(); + CompleteMemberDetail detail_MassCancelRequestType = TypeObjectUtils::build_complete_member_detail(name_MassCancelRequestType, member_ann_builtin_MassCancelRequestType, ann_custom_OrderMassCancelRequest); + CompleteStructMember member_MassCancelRequestType = TypeObjectUtils::build_complete_struct_member(common_MassCancelRequestType, detail_MassCancelRequestType); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelRequest, member_MassCancelRequestType); + } + { + TypeIdentifierPair type_ids_Symbol; + ReturnCode_t return_code_Symbol {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Symbol = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Symbol); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Symbol) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Symbol)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Symbol = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Symbol = 0x00000007; + bool common_Symbol_ec {false}; + CommonStructMember common_Symbol {TypeObjectUtils::build_common_struct_member(member_id_Symbol, member_flags_Symbol, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Symbol, common_Symbol_ec))}; + if (!common_Symbol_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Symbol member TypeIdentifier inconsistent."); + return; + } + MemberName name_Symbol = "Symbol"; + eprosima::fastcdr::optional member_ann_builtin_Symbol; + ann_custom_OrderMassCancelRequest.reset(); + CompleteMemberDetail detail_Symbol = TypeObjectUtils::build_complete_member_detail(name_Symbol, member_ann_builtin_Symbol, ann_custom_OrderMassCancelRequest); + CompleteStructMember member_Symbol = TypeObjectUtils::build_complete_struct_member(common_Symbol, detail_Symbol); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelRequest, member_Symbol); + } + { + TypeIdentifierPair type_ids_SecurityExchange; + ReturnCode_t return_code_SecurityExchange {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityExchange = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityExchange); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityExchange) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityExchange)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityExchange = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityExchange = 0x00000008; + bool common_SecurityExchange_ec {false}; + CommonStructMember common_SecurityExchange {TypeObjectUtils::build_common_struct_member(member_id_SecurityExchange, member_flags_SecurityExchange, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityExchange, common_SecurityExchange_ec))}; + if (!common_SecurityExchange_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityExchange member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityExchange = "SecurityExchange"; + eprosima::fastcdr::optional member_ann_builtin_SecurityExchange; + ann_custom_OrderMassCancelRequest.reset(); + CompleteMemberDetail detail_SecurityExchange = TypeObjectUtils::build_complete_member_detail(name_SecurityExchange, member_ann_builtin_SecurityExchange, ann_custom_OrderMassCancelRequest); + CompleteStructMember member_SecurityExchange = TypeObjectUtils::build_complete_struct_member(common_SecurityExchange, detail_SecurityExchange); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelRequest, member_SecurityExchange); + } + { + TypeIdentifierPair type_ids_TransactTime; + ReturnCode_t return_code_TransactTime {eprosima::fastdds::dds::RETCODE_OK}; + return_code_TransactTime = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_uint64_t", type_ids_TransactTime); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_TransactTime) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "TransactTime Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_TransactTime = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_TransactTime = 0x00000009; + bool common_TransactTime_ec {false}; + CommonStructMember common_TransactTime {TypeObjectUtils::build_common_struct_member(member_id_TransactTime, member_flags_TransactTime, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_TransactTime, common_TransactTime_ec))}; + if (!common_TransactTime_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure TransactTime member TypeIdentifier inconsistent."); + return; + } + MemberName name_TransactTime = "TransactTime"; + eprosima::fastcdr::optional member_ann_builtin_TransactTime; + ann_custom_OrderMassCancelRequest.reset(); + CompleteMemberDetail detail_TransactTime = TypeObjectUtils::build_complete_member_detail(name_TransactTime, member_ann_builtin_TransactTime, ann_custom_OrderMassCancelRequest); + CompleteStructMember member_TransactTime = TypeObjectUtils::build_complete_struct_member(common_TransactTime, detail_TransactTime); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelRequest, member_TransactTime); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x0000000a; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_OrderMassCancelRequest.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_OrderMassCancelRequest); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassCancelRequest, member_Text); + } + CompleteStructType struct_type_OrderMassCancelRequest = TypeObjectUtils::build_complete_struct_type(struct_flags_OrderMassCancelRequest, header_OrderMassCancelRequest, member_seq_OrderMassCancelRequest); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_OrderMassCancelRequest, type_name_OrderMassCancelRequest.to_string(), type_ids_OrderMassCancelRequest)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_OrderMassCancelRequest + diff --git a/GenTools/idl/OrderMassCancelRequestTypeObjectSupport.hpp b/GenTools/idl/OrderMassCancelRequestTypeObjectSupport.hpp new file mode 100644 index 0000000..bfa66c0 --- /dev/null +++ b/GenTools/idl/OrderMassCancelRequestTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 OrderMassCancelRequestTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUEST_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUEST_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_OrderMassCancelRequest { +/** + * @brief Register OrderMassCancelRequest related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_OrderMassCancelRequest_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_OrderMassCancelRequest + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSCANCELREQUEST_ORDERMASSCANCELREQUEST_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/OrderMassStatusRequest.hpp b/GenTools/idl/OrderMassStatusRequest.hpp new file mode 100644 index 0000000..74b9c10 --- /dev/null +++ b/GenTools/idl/OrderMassStatusRequest.hpp @@ -0,0 +1,561 @@ +// 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 OrderMassStatusRequest.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUEST_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUEST_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(ORDERMASSSTATUSREQUEST_SOURCE) +#define ORDERMASSSTATUSREQUEST_DllAPI __declspec( dllexport ) +#else +#define ORDERMASSSTATUSREQUEST_DllAPI __declspec( dllimport ) +#endif // ORDERMASSSTATUSREQUEST_SOURCE +#else +#define ORDERMASSSTATUSREQUEST_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define ORDERMASSSTATUSREQUEST_DllAPI +#endif // _WIN32 + +namespace DistributedATS_OrderMassStatusRequest { + +/*! + * @brief This class represents the structure OrderMassStatusRequest defined by the user in the IDL file. + * @ingroup OrderMassStatusRequest + */ +class OrderMassStatusRequest +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport OrderMassStatusRequest() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~OrderMassStatusRequest() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object OrderMassStatusRequest that will be copied. + */ + eProsima_user_DllExport OrderMassStatusRequest( + const OrderMassStatusRequest& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_MassStatusReqID = x.m_MassStatusReqID; + + m_MassStatusReqType = x.m_MassStatusReqType; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object OrderMassStatusRequest that will be copied. + */ + eProsima_user_DllExport OrderMassStatusRequest( + OrderMassStatusRequest&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_MassStatusReqID = std::move(x.m_MassStatusReqID); + m_MassStatusReqType = x.m_MassStatusReqType; + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object OrderMassStatusRequest that will be copied. + */ + eProsima_user_DllExport OrderMassStatusRequest& operator =( + const OrderMassStatusRequest& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_MassStatusReqID = x.m_MassStatusReqID; + + m_MassStatusReqType = x.m_MassStatusReqType; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object OrderMassStatusRequest that will be copied. + */ + eProsima_user_DllExport OrderMassStatusRequest& operator =( + OrderMassStatusRequest&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_MassStatusReqID = std::move(x.m_MassStatusReqID); + m_MassStatusReqType = x.m_MassStatusReqType; + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x OrderMassStatusRequest object to compare. + */ + eProsima_user_DllExport bool operator ==( + const OrderMassStatusRequest& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_MassStatusReqID == x.m_MassStatusReqID && + m_MassStatusReqType == x.m_MassStatusReqType && + m_Symbol == x.m_Symbol && + m_SecurityExchange == x.m_SecurityExchange); + } + + /*! + * @brief Comparison operator. + * @param x OrderMassStatusRequest object to compare. + */ + eProsima_user_DllExport bool operator !=( + const OrderMassStatusRequest& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member MassStatusReqID + * @param _MassStatusReqID New value to be copied in member MassStatusReqID + */ + eProsima_user_DllExport void MassStatusReqID( + const std::string& _MassStatusReqID) + { + m_MassStatusReqID = _MassStatusReqID; + } + + /*! + * @brief This function moves the value in member MassStatusReqID + * @param _MassStatusReqID New value to be moved in member MassStatusReqID + */ + eProsima_user_DllExport void MassStatusReqID( + std::string&& _MassStatusReqID) + { + m_MassStatusReqID = std::move(_MassStatusReqID); + } + + /*! + * @brief This function returns a constant reference to member MassStatusReqID + * @return Constant reference to member MassStatusReqID + */ + eProsima_user_DllExport const std::string& MassStatusReqID() const + { + return m_MassStatusReqID; + } + + /*! + * @brief This function returns a reference to member MassStatusReqID + * @return Reference to member MassStatusReqID + */ + eProsima_user_DllExport std::string& MassStatusReqID() + { + return m_MassStatusReqID; + } + + + /*! + * @brief This function sets a value in member MassStatusReqType + * @param _MassStatusReqType New value for member MassStatusReqType + */ + eProsima_user_DllExport void MassStatusReqType( + int32_t _MassStatusReqType) + { + m_MassStatusReqType = _MassStatusReqType; + } + + /*! + * @brief This function returns the value of member MassStatusReqType + * @return Value of member MassStatusReqType + */ + eProsima_user_DllExport int32_t MassStatusReqType() const + { + return m_MassStatusReqType; + } + + /*! + * @brief This function returns a reference to member MassStatusReqType + * @return Reference to member MassStatusReqType + */ + eProsima_user_DllExport int32_t& MassStatusReqType() + { + return m_MassStatusReqType; + } + + + /*! + * @brief This function copies the value in member Symbol + * @param _Symbol New value to be copied in member Symbol + */ + eProsima_user_DllExport void Symbol( + const std::string& _Symbol) + { + m_Symbol = _Symbol; + } + + /*! + * @brief This function moves the value in member Symbol + * @param _Symbol New value to be moved in member Symbol + */ + eProsima_user_DllExport void Symbol( + std::string&& _Symbol) + { + m_Symbol = std::move(_Symbol); + } + + /*! + * @brief This function returns a constant reference to member Symbol + * @return Constant reference to member Symbol + */ + eProsima_user_DllExport const std::string& Symbol() const + { + return m_Symbol; + } + + /*! + * @brief This function returns a reference to member Symbol + * @return Reference to member Symbol + */ + eProsima_user_DllExport std::string& Symbol() + { + return m_Symbol; + } + + + /*! + * @brief This function copies the value in member SecurityExchange + * @param _SecurityExchange New value to be copied in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + const std::string& _SecurityExchange) + { + m_SecurityExchange = _SecurityExchange; + } + + /*! + * @brief This function moves the value in member SecurityExchange + * @param _SecurityExchange New value to be moved in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + std::string&& _SecurityExchange) + { + m_SecurityExchange = std::move(_SecurityExchange); + } + + /*! + * @brief This function returns a constant reference to member SecurityExchange + * @return Constant reference to member SecurityExchange + */ + eProsima_user_DllExport const std::string& SecurityExchange() const + { + return m_SecurityExchange; + } + + /*! + * @brief This function returns a reference to member SecurityExchange + * @return Reference to member SecurityExchange + */ + eProsima_user_DllExport std::string& SecurityExchange() + { + return m_SecurityExchange; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_MassStatusReqID; + int32_t m_MassStatusReqType{0}; + std::string m_Symbol; + std::string m_SecurityExchange; + +}; + +} // namespace DistributedATS_OrderMassStatusRequest + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUEST_HPP_ + + diff --git a/GenTools/idl/OrderMassStatusRequest.idl b/GenTools/idl/OrderMassStatusRequest.idl index 4ad6d12..6f9a397 100644 --- a/GenTools/idl/OrderMassStatusRequest.idl +++ b/GenTools/idl/OrderMassStatusRequest.idl @@ -1,13 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_OrderMassStatusRequest { - @topic + struct OrderMassStatusRequest { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string MassStatusReqID; long MassStatusReqType; string Symbol; diff --git a/GenTools/idl/OrderMassStatusRequestAdapter.cpp b/GenTools/idl/OrderMassStatusRequestAdapter.cpp index 6ef06c8..263f575 100644 --- a/GenTools/idl/OrderMassStatusRequestAdapter.cpp +++ b/GenTools/idl/OrderMassStatusRequestAdapter.cpp @@ -1,25 +1,25 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "OrderMassStatusRequestAdapter.hpp" -#include "ConvertUtils.h" +#include void OrderMassStatusRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::MassStatusReqID) ) - ddsMsg.MassStatusReqID = CORBA::string_dup(((FIX::MassStatusReqID)fixMsg.getField(FIX::FIELD::MassStatusReqID)).getString().c_str()); + ddsMsg.MassStatusReqID ( ((FIX::MassStatusReqID)fixMsg.getField(FIX::FIELD::MassStatusReqID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::MassStatusReqType) ) - ddsMsg.MassStatusReqType = FIELD_GET_REF( fixMsg,MassStatusReqType); + ddsMsg.MassStatusReqType ( FIELD_GET_REF( fixMsg,MassStatusReqType)); else - ddsMsg.MassStatusReqType = 0; + ddsMsg.MassStatusReqType ( 0 ); if (fixMsg.isSetField(FIX::FIELD::Symbol) ) - ddsMsg.Symbol = CORBA::string_dup(((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); + ddsMsg.Symbol ( ((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SecurityExchange) ) - ddsMsg.SecurityExchange = CORBA::string_dup(((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); + ddsMsg.SecurityExchange ( ((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); }; @@ -28,16 +28,16 @@ void OrderMassStatusRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, Distribu void OrderMassStatusRequestAdapter::DDS2FIX(const DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.MassStatusReqID.in(), FIX::FIELD::MassStatusReqID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.MassStatusReqID(), FIX::FIELD::MassStatusReqID, fixMsg); - FIX::MassStatusReqType fixMassStatusReqType(ddsMsg.MassStatusReqType); + FIX::MassStatusReqType fixMassStatusReqType(ddsMsg.MassStatusReqType()); fixMsg.setField(fixMassStatusReqType); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol.in(), FIX::FIELD::Symbol, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol(), FIX::FIELD::Symbol, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange.in(), FIX::FIELD::SecurityExchange, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange(), FIX::FIELD::SecurityExchange, fixMsg); }; diff --git a/GenTools/idl/OrderMassStatusRequestAdapter.hpp b/GenTools/idl/OrderMassStatusRequestAdapter.hpp index 07fa3fd..176b63e 100644 --- a/GenTools/idl/OrderMassStatusRequestAdapter.hpp +++ b/GenTools/idl/OrderMassStatusRequestAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __OrderMassStatusRequest_h__ -#define __OrderMassStatusRequest_h__ - -#include "OrderMassStatusRequestTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "OrderMassStatusRequest.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class OrderMassStatusRequestAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/OrderMassStatusRequestCdrAux.hpp b/GenTools/idl/OrderMassStatusRequestCdrAux.hpp new file mode 100644 index 0000000..0c37302 --- /dev/null +++ b/GenTools/idl/OrderMassStatusRequestCdrAux.hpp @@ -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 OrderMassStatusRequestCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUESTCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUESTCDRAUX_HPP + +#include "OrderMassStatusRequest.hpp" + +constexpr uint32_t DistributedATS_OrderMassStatusRequest_OrderMassStatusRequest_max_cdr_typesize {3408UL}; +constexpr uint32_t DistributedATS_OrderMassStatusRequest_OrderMassStatusRequest_max_key_cdr_typesize {0UL}; + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUESTCDRAUX_HPP + diff --git a/GenTools/idl/OrderMassStatusRequestCdrAux.ipp b/GenTools/idl/OrderMassStatusRequestCdrAux.ipp new file mode 100644 index 0000000..4773297 --- /dev/null +++ b/GenTools/idl/OrderMassStatusRequestCdrAux.ipp @@ -0,0 +1,220 @@ +// 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 OrderMassStatusRequestCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUESTCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUESTCDRAUX_IPP + +#include "OrderMassStatusRequestCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest& data, + size_t& current_alignment) +{ + using namespace DistributedATS_OrderMassStatusRequest; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.MassStatusReqID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.MassStatusReqType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.Symbol(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.SecurityExchange(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest& data) +{ + using namespace DistributedATS_OrderMassStatusRequest; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.MassStatusReqID() + << eprosima::fastcdr::MemberId(6) << data.MassStatusReqType() + << eprosima::fastcdr::MemberId(7) << data.Symbol() + << eprosima::fastcdr::MemberId(8) << data.SecurityExchange() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest& data) +{ + using namespace DistributedATS_OrderMassStatusRequest; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.MassStatusReqID(); + break; + + case 6: + dcdr >> data.MassStatusReqType(); + break; + + case 7: + dcdr >> data.Symbol(); + break; + + case 8: + dcdr >> data.SecurityExchange(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest& data) +{ + using namespace DistributedATS_OrderMassStatusRequest; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.MassStatusReqID(); + + scdr << data.MassStatusReqType(); + + scdr << data.Symbol(); + + scdr << data.SecurityExchange(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUESTCDRAUX_IPP + diff --git a/GenTools/idl/OrderMassStatusRequestLogger.hpp b/GenTools/idl/OrderMassStatusRequestLogger.hpp index 027393c..ded0cdf 100644 --- a/GenTools/idl/OrderMassStatusRequestLogger.hpp +++ b/GenTools/idl/OrderMassStatusRequestLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __OrderMassStatusRequestLogger_h__ -#define __OrderMassStatusRequestLogger_h__ - -#include "OrderMassStatusRequestTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,18 +10,21 @@ class OrderMassStatusRequestLogger static void log(std::ostream & out, DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : OrderMassStatusRequest { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.MassStatusReqID : " << ddsMsg.MassStatusReqID << std::endl - << "ddsMsg.MassStatusReqType : " << ddsMsg.MassStatusReqType << std::endl - << "ddsMsg.Symbol : " << ddsMsg.Symbol << std::endl - << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange << std::endl + << "ddsMsg.MassStatusReqID : " << ddsMsg.MassStatusReqID() << std::endl + << "ddsMsg.MassStatusReqType : " << ddsMsg.MassStatusReqType() << std::endl + << "ddsMsg.Symbol : " << ddsMsg.Symbol() << std::endl + << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange() << std::endl ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/OrderMassStatusRequestPubSubTypes.cxx b/GenTools/idl/OrderMassStatusRequestPubSubTypes.cxx new file mode 100644 index 0000000..7756db6 --- /dev/null +++ b/GenTools/idl/OrderMassStatusRequestPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 OrderMassStatusRequestPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "OrderMassStatusRequestPubSubTypes.hpp" + +#include +#include + +#include "OrderMassStatusRequestCdrAux.hpp" +#include "OrderMassStatusRequestTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_OrderMassStatusRequest { + OrderMassStatusRequestPubSubType::OrderMassStatusRequestPubSubType() + { + set_name("DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest"); + uint32_t type_size = DistributedATS_OrderMassStatusRequest_OrderMassStatusRequest_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_OrderMassStatusRequest_OrderMassStatusRequest_max_key_cdr_typesize > 16 ? DistributedATS_OrderMassStatusRequest_OrderMassStatusRequest_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + OrderMassStatusRequestPubSubType::~OrderMassStatusRequestPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool OrderMassStatusRequestPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const OrderMassStatusRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool OrderMassStatusRequestPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + OrderMassStatusRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t OrderMassStatusRequestPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* OrderMassStatusRequestPubSubType::create_data() + { + return reinterpret_cast(new OrderMassStatusRequest()); + } + + void OrderMassStatusRequestPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool OrderMassStatusRequestPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + OrderMassStatusRequest data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool OrderMassStatusRequestPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const OrderMassStatusRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_OrderMassStatusRequest_OrderMassStatusRequest_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_OrderMassStatusRequest_OrderMassStatusRequest_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void OrderMassStatusRequestPubSubType::register_type_object_representation() + { + register_OrderMassStatusRequest_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_OrderMassStatusRequest + + +// Include auxiliary functions like for serializing/deserializing. +#include "OrderMassStatusRequestCdrAux.ipp" diff --git a/GenTools/idl/OrderMassStatusRequestPubSubTypes.hpp b/GenTools/idl/OrderMassStatusRequestPubSubTypes.hpp new file mode 100644 index 0000000..a9057dc --- /dev/null +++ b/GenTools/idl/OrderMassStatusRequestPubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 OrderMassStatusRequestPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUEST_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUEST_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "OrderMassStatusRequest.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated OrderMassStatusRequest is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_OrderMassStatusRequest +{ + + /*! + * @brief This class represents the TopicDataType of the type OrderMassStatusRequest defined by the user in the IDL file. + * @ingroup OrderMassStatusRequest + */ + class OrderMassStatusRequestPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef OrderMassStatusRequest type; + + eProsima_user_DllExport OrderMassStatusRequestPubSubType(); + + eProsima_user_DllExport ~OrderMassStatusRequestPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_OrderMassStatusRequest + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUEST_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/OrderMassStatusRequestTypeObjectSupport.cxx b/GenTools/idl/OrderMassStatusRequestTypeObjectSupport.cxx new file mode 100644 index 0000000..68ee7b4 --- /dev/null +++ b/GenTools/idl/OrderMassStatusRequestTypeObjectSupport.cxx @@ -0,0 +1,398 @@ +// 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 OrderMassStatusRequestTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "OrderMassStatusRequestTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "OrderMassStatusRequest.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_OrderMassStatusRequest { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_OrderMassStatusRequest_type_identifier( + TypeIdentifierPair& type_ids_OrderMassStatusRequest) +{ + + ReturnCode_t return_code_OrderMassStatusRequest {eprosima::fastdds::dds::RETCODE_OK}; + return_code_OrderMassStatusRequest = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest", type_ids_OrderMassStatusRequest); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_OrderMassStatusRequest) + { + StructTypeFlag struct_flags_OrderMassStatusRequest = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_OrderMassStatusRequest = "DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest"; + eprosima::fastcdr::optional type_ann_builtin_OrderMassStatusRequest; + eprosima::fastcdr::optional ann_custom_OrderMassStatusRequest; + CompleteTypeDetail detail_OrderMassStatusRequest = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_OrderMassStatusRequest, ann_custom_OrderMassStatusRequest, type_name_OrderMassStatusRequest.to_string()); + CompleteStructHeader header_OrderMassStatusRequest; + header_OrderMassStatusRequest = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_OrderMassStatusRequest); + CompleteStructMemberSeq member_seq_OrderMassStatusRequest; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_OrderMassStatusRequest.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_OrderMassStatusRequest); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassStatusRequest, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_OrderMassStatusRequest.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_OrderMassStatusRequest); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassStatusRequest, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_OrderMassStatusRequest.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_OrderMassStatusRequest); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassStatusRequest, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_OrderMassStatusRequest.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_OrderMassStatusRequest); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassStatusRequest, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_OrderMassStatusRequest.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_OrderMassStatusRequest); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassStatusRequest, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_MassStatusReqID; + ReturnCode_t return_code_MassStatusReqID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MassStatusReqID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_MassStatusReqID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MassStatusReqID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_MassStatusReqID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_MassStatusReqID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MassStatusReqID = 0x00000005; + bool common_MassStatusReqID_ec {false}; + CommonStructMember common_MassStatusReqID {TypeObjectUtils::build_common_struct_member(member_id_MassStatusReqID, member_flags_MassStatusReqID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MassStatusReqID, common_MassStatusReqID_ec))}; + if (!common_MassStatusReqID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MassStatusReqID member TypeIdentifier inconsistent."); + return; + } + MemberName name_MassStatusReqID = "MassStatusReqID"; + eprosima::fastcdr::optional member_ann_builtin_MassStatusReqID; + ann_custom_OrderMassStatusRequest.reset(); + CompleteMemberDetail detail_MassStatusReqID = TypeObjectUtils::build_complete_member_detail(name_MassStatusReqID, member_ann_builtin_MassStatusReqID, ann_custom_OrderMassStatusRequest); + CompleteStructMember member_MassStatusReqID = TypeObjectUtils::build_complete_struct_member(common_MassStatusReqID, detail_MassStatusReqID); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassStatusRequest, member_MassStatusReqID); + } + { + TypeIdentifierPair type_ids_MassStatusReqType; + ReturnCode_t return_code_MassStatusReqType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_MassStatusReqType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_MassStatusReqType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_MassStatusReqType) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "MassStatusReqType Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_MassStatusReqType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_MassStatusReqType = 0x00000006; + bool common_MassStatusReqType_ec {false}; + CommonStructMember common_MassStatusReqType {TypeObjectUtils::build_common_struct_member(member_id_MassStatusReqType, member_flags_MassStatusReqType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_MassStatusReqType, common_MassStatusReqType_ec))}; + if (!common_MassStatusReqType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure MassStatusReqType member TypeIdentifier inconsistent."); + return; + } + MemberName name_MassStatusReqType = "MassStatusReqType"; + eprosima::fastcdr::optional member_ann_builtin_MassStatusReqType; + ann_custom_OrderMassStatusRequest.reset(); + CompleteMemberDetail detail_MassStatusReqType = TypeObjectUtils::build_complete_member_detail(name_MassStatusReqType, member_ann_builtin_MassStatusReqType, ann_custom_OrderMassStatusRequest); + CompleteStructMember member_MassStatusReqType = TypeObjectUtils::build_complete_struct_member(common_MassStatusReqType, detail_MassStatusReqType); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassStatusRequest, member_MassStatusReqType); + } + { + TypeIdentifierPair type_ids_Symbol; + ReturnCode_t return_code_Symbol {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Symbol = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Symbol); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Symbol) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Symbol)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Symbol = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Symbol = 0x00000007; + bool common_Symbol_ec {false}; + CommonStructMember common_Symbol {TypeObjectUtils::build_common_struct_member(member_id_Symbol, member_flags_Symbol, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Symbol, common_Symbol_ec))}; + if (!common_Symbol_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Symbol member TypeIdentifier inconsistent."); + return; + } + MemberName name_Symbol = "Symbol"; + eprosima::fastcdr::optional member_ann_builtin_Symbol; + ann_custom_OrderMassStatusRequest.reset(); + CompleteMemberDetail detail_Symbol = TypeObjectUtils::build_complete_member_detail(name_Symbol, member_ann_builtin_Symbol, ann_custom_OrderMassStatusRequest); + CompleteStructMember member_Symbol = TypeObjectUtils::build_complete_struct_member(common_Symbol, detail_Symbol); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassStatusRequest, member_Symbol); + } + { + TypeIdentifierPair type_ids_SecurityExchange; + ReturnCode_t return_code_SecurityExchange {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityExchange = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityExchange); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityExchange) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityExchange)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityExchange = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityExchange = 0x00000008; + bool common_SecurityExchange_ec {false}; + CommonStructMember common_SecurityExchange {TypeObjectUtils::build_common_struct_member(member_id_SecurityExchange, member_flags_SecurityExchange, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityExchange, common_SecurityExchange_ec))}; + if (!common_SecurityExchange_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityExchange member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityExchange = "SecurityExchange"; + eprosima::fastcdr::optional member_ann_builtin_SecurityExchange; + ann_custom_OrderMassStatusRequest.reset(); + CompleteMemberDetail detail_SecurityExchange = TypeObjectUtils::build_complete_member_detail(name_SecurityExchange, member_ann_builtin_SecurityExchange, ann_custom_OrderMassStatusRequest); + CompleteStructMember member_SecurityExchange = TypeObjectUtils::build_complete_struct_member(common_SecurityExchange, detail_SecurityExchange); + TypeObjectUtils::add_complete_struct_member(member_seq_OrderMassStatusRequest, member_SecurityExchange); + } + CompleteStructType struct_type_OrderMassStatusRequest = TypeObjectUtils::build_complete_struct_type(struct_flags_OrderMassStatusRequest, header_OrderMassStatusRequest, member_seq_OrderMassStatusRequest); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_OrderMassStatusRequest, type_name_OrderMassStatusRequest.to_string(), type_ids_OrderMassStatusRequest)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_OrderMassStatusRequest::OrderMassStatusRequest already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_OrderMassStatusRequest + diff --git a/GenTools/idl/OrderMassStatusRequestTypeObjectSupport.hpp b/GenTools/idl/OrderMassStatusRequestTypeObjectSupport.hpp new file mode 100644 index 0000000..fb2c1f1 --- /dev/null +++ b/GenTools/idl/OrderMassStatusRequestTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 OrderMassStatusRequestTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUEST_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUEST_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_OrderMassStatusRequest { +/** + * @brief Register OrderMassStatusRequest related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_OrderMassStatusRequest_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_OrderMassStatusRequest + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_ORDERMASSSTATUSREQUEST_ORDERMASSSTATUSREQUEST_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/QuickFixIDLBusinessMessageReject.mpc b/GenTools/idl/QuickFixIDLBusinessMessageReject.mpc deleted file mode 100644 index bfb629e..0000000 --- a/GenTools/idl/QuickFixIDLBusinessMessageReject.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(BusinessMessageReject) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - BusinessMessageReject.idl -Header.idl - -} - - IDL_Files{ - BusinessMessageRejectTypeSupport.idl - -BusinessMessageReject.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLExecutionReport.mpc b/GenTools/idl/QuickFixIDLExecutionReport.mpc deleted file mode 100644 index 56310c3..0000000 --- a/GenTools/idl/QuickFixIDLExecutionReport.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(ExecutionReport) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - ExecutionReport.idl -Header.idl - -} - - IDL_Files{ - ExecutionReportTypeSupport.idl - -ExecutionReport.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLHeartbeat.mpc b/GenTools/idl/QuickFixIDLHeartbeat.mpc deleted file mode 100644 index 9dcc197..0000000 --- a/GenTools/idl/QuickFixIDLHeartbeat.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(Heartbeat) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - Heartbeat.idl -Header.idl - -} - - IDL_Files{ - HeartbeatTypeSupport.idl - -Heartbeat.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLLogon.mpc b/GenTools/idl/QuickFixIDLLogon.mpc deleted file mode 100644 index ad212d6..0000000 --- a/GenTools/idl/QuickFixIDLLogon.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(Logon) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - Logon.idl -Header.idl - -} - - IDL_Files{ - LogonTypeSupport.idl - -Logon.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLLogout.mpc b/GenTools/idl/QuickFixIDLLogout.mpc deleted file mode 100644 index 8959485..0000000 --- a/GenTools/idl/QuickFixIDLLogout.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(Logout) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - Logout.idl -Header.idl - -} - - IDL_Files{ - LogoutTypeSupport.idl - -Logout.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLMarketDataIncrementalRefresh.mpc b/GenTools/idl/QuickFixIDLMarketDataIncrementalRefresh.mpc deleted file mode 100644 index 6276dd1..0000000 --- a/GenTools/idl/QuickFixIDLMarketDataIncrementalRefresh.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(MarketDataIncrementalRefresh) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - MarketDataIncrementalRefresh.idl -Header.idl - -} - - IDL_Files{ - MarketDataIncrementalRefreshTypeSupport.idl - -MarketDataIncrementalRefresh.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLMarketDataRequest.mpc b/GenTools/idl/QuickFixIDLMarketDataRequest.mpc deleted file mode 100644 index b28a339..0000000 --- a/GenTools/idl/QuickFixIDLMarketDataRequest.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(MarketDataRequest) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - MarketDataRequest.idl -Header.idl - -} - - IDL_Files{ - MarketDataRequestTypeSupport.idl - -MarketDataRequest.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLMarketDataSnapshotFullRefresh.mpc b/GenTools/idl/QuickFixIDLMarketDataSnapshotFullRefresh.mpc deleted file mode 100644 index c306c41..0000000 --- a/GenTools/idl/QuickFixIDLMarketDataSnapshotFullRefresh.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(MarketDataSnapshotFullRefresh) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - MarketDataSnapshotFullRefresh.idl -Header.idl - -} - - IDL_Files{ - MarketDataSnapshotFullRefreshTypeSupport.idl - -MarketDataSnapshotFullRefresh.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLNewOrderSingle.mpc b/GenTools/idl/QuickFixIDLNewOrderSingle.mpc deleted file mode 100644 index 2bdf71e..0000000 --- a/GenTools/idl/QuickFixIDLNewOrderSingle.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(NewOrderSingle) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - NewOrderSingle.idl -Header.idl - -} - - IDL_Files{ - NewOrderSingleTypeSupport.idl - -NewOrderSingle.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLOrderCancelReject.mpc b/GenTools/idl/QuickFixIDLOrderCancelReject.mpc deleted file mode 100644 index dfb533b..0000000 --- a/GenTools/idl/QuickFixIDLOrderCancelReject.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(OrderCancelReject) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - OrderCancelReject.idl -Header.idl - -} - - IDL_Files{ - OrderCancelRejectTypeSupport.idl - -OrderCancelReject.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLOrderCancelReplaceRequest.mpc b/GenTools/idl/QuickFixIDLOrderCancelReplaceRequest.mpc deleted file mode 100644 index f3f1fef..0000000 --- a/GenTools/idl/QuickFixIDLOrderCancelReplaceRequest.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(OrderCancelReplaceRequest) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - OrderCancelReplaceRequest.idl -Header.idl - -} - - IDL_Files{ - OrderCancelReplaceRequestTypeSupport.idl - -OrderCancelReplaceRequest.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLOrderCancelRequest.mpc b/GenTools/idl/QuickFixIDLOrderCancelRequest.mpc deleted file mode 100644 index 4514f30..0000000 --- a/GenTools/idl/QuickFixIDLOrderCancelRequest.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(OrderCancelRequest) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - OrderCancelRequest.idl -Header.idl - -} - - IDL_Files{ - OrderCancelRequestTypeSupport.idl - -OrderCancelRequest.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLOrderMassCancelReport.mpc b/GenTools/idl/QuickFixIDLOrderMassCancelReport.mpc deleted file mode 100644 index c6ce6a9..0000000 --- a/GenTools/idl/QuickFixIDLOrderMassCancelReport.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(OrderMassCancelReport) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - OrderMassCancelReport.idl -Header.idl - -} - - IDL_Files{ - OrderMassCancelReportTypeSupport.idl - -OrderMassCancelReport.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLOrderMassCancelRequest.mpc b/GenTools/idl/QuickFixIDLOrderMassCancelRequest.mpc deleted file mode 100644 index 91ba786..0000000 --- a/GenTools/idl/QuickFixIDLOrderMassCancelRequest.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(OrderMassCancelRequest) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - OrderMassCancelRequest.idl -Header.idl - -} - - IDL_Files{ - OrderMassCancelRequestTypeSupport.idl - -OrderMassCancelRequest.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLOrderMassStatusRequest.mpc b/GenTools/idl/QuickFixIDLOrderMassStatusRequest.mpc deleted file mode 100644 index bed47f2..0000000 --- a/GenTools/idl/QuickFixIDLOrderMassStatusRequest.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(OrderMassStatusRequest) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - OrderMassStatusRequest.idl -Header.idl - -} - - IDL_Files{ - OrderMassStatusRequestTypeSupport.idl - -OrderMassStatusRequest.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLSecurityList.mpc b/GenTools/idl/QuickFixIDLSecurityList.mpc deleted file mode 100644 index 9f41cb2..0000000 --- a/GenTools/idl/QuickFixIDLSecurityList.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(SecurityList) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - SecurityList.idl -Header.idl - -} - - IDL_Files{ - SecurityListTypeSupport.idl - -SecurityList.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/QuickFixIDLSecurityListRequest.mpc b/GenTools/idl/QuickFixIDLSecurityListRequest.mpc deleted file mode 100644 index 99daa64..0000000 --- a/GenTools/idl/QuickFixIDLSecurityListRequest.mpc +++ /dev/null @@ -1,36 +0,0 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -project(SecurityListRequest) : dcps { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - libout = $(DATS_HOME)/lib - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - TypeSupport_Files{ - SecurityListRequest.idl -Header.idl - -} - - IDL_Files{ - SecurityListRequestTypeSupport.idl - -SecurityListRequest.idl -Header.idl -HeaderTypeSupport.idl - -} - - Header_Files { - - } - Source_Files { - - } -} - diff --git a/GenTools/idl/SecurityList.hpp b/GenTools/idl/SecurityList.hpp new file mode 100644 index 0000000..2d5690e --- /dev/null +++ b/GenTools/idl/SecurityList.hpp @@ -0,0 +1,792 @@ +// 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 SecurityList.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLIST_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLIST_HPP + +#include +#include +#include +#include + +#include +#include "Header.hpp" + +#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(SECURITYLIST_SOURCE) +#define SECURITYLIST_DllAPI __declspec( dllexport ) +#else +#define SECURITYLIST_DllAPI __declspec( dllimport ) +#endif // SECURITYLIST_SOURCE +#else +#define SECURITYLIST_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define SECURITYLIST_DllAPI +#endif // _WIN32 + +namespace DistributedATS_SecurityList { + +/*! + * @brief This class represents the structure NoRelatedSym defined by the user in the IDL file. + * @ingroup SecurityList + */ +class NoRelatedSym +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport NoRelatedSym() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~NoRelatedSym() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object NoRelatedSym that will be copied. + */ + eProsima_user_DllExport NoRelatedSym( + const NoRelatedSym& x) + { + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object NoRelatedSym that will be copied. + */ + eProsima_user_DllExport NoRelatedSym( + NoRelatedSym&& x) noexcept + { + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object NoRelatedSym that will be copied. + */ + eProsima_user_DllExport NoRelatedSym& operator =( + const NoRelatedSym& x) + { + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object NoRelatedSym that will be copied. + */ + eProsima_user_DllExport NoRelatedSym& operator =( + NoRelatedSym&& x) noexcept + { + + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x NoRelatedSym object to compare. + */ + eProsima_user_DllExport bool operator ==( + const NoRelatedSym& x) const + { + return (m_Symbol == x.m_Symbol && + m_SecurityExchange == x.m_SecurityExchange && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x NoRelatedSym object to compare. + */ + eProsima_user_DllExport bool operator !=( + const NoRelatedSym& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member Symbol + * @param _Symbol New value to be copied in member Symbol + */ + eProsima_user_DllExport void Symbol( + const std::string& _Symbol) + { + m_Symbol = _Symbol; + } + + /*! + * @brief This function moves the value in member Symbol + * @param _Symbol New value to be moved in member Symbol + */ + eProsima_user_DllExport void Symbol( + std::string&& _Symbol) + { + m_Symbol = std::move(_Symbol); + } + + /*! + * @brief This function returns a constant reference to member Symbol + * @return Constant reference to member Symbol + */ + eProsima_user_DllExport const std::string& Symbol() const + { + return m_Symbol; + } + + /*! + * @brief This function returns a reference to member Symbol + * @return Reference to member Symbol + */ + eProsima_user_DllExport std::string& Symbol() + { + return m_Symbol; + } + + + /*! + * @brief This function copies the value in member SecurityExchange + * @param _SecurityExchange New value to be copied in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + const std::string& _SecurityExchange) + { + m_SecurityExchange = _SecurityExchange; + } + + /*! + * @brief This function moves the value in member SecurityExchange + * @param _SecurityExchange New value to be moved in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + std::string&& _SecurityExchange) + { + m_SecurityExchange = std::move(_SecurityExchange); + } + + /*! + * @brief This function returns a constant reference to member SecurityExchange + * @return Constant reference to member SecurityExchange + */ + eProsima_user_DllExport const std::string& SecurityExchange() const + { + return m_SecurityExchange; + } + + /*! + * @brief This function returns a reference to member SecurityExchange + * @return Reference to member SecurityExchange + */ + eProsima_user_DllExport std::string& SecurityExchange() + { + return m_SecurityExchange; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + std::string m_Symbol; + std::string m_SecurityExchange; + std::string m_Text; + +}; +typedef std::vector NoRelatedSymSeq; + +/*! + * @brief This class represents the structure SecurityList defined by the user in the IDL file. + * @ingroup SecurityList + */ +class SecurityList +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport SecurityList() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~SecurityList() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object SecurityList that will be copied. + */ + eProsima_user_DllExport SecurityList( + const SecurityList& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_SecurityReqID = x.m_SecurityReqID; + + m_SecurityResponseID = x.m_SecurityResponseID; + + m_SecurityRequestResult = x.m_SecurityRequestResult; + + m_c_NoRelatedSym = x.m_c_NoRelatedSym; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object SecurityList that will be copied. + */ + eProsima_user_DllExport SecurityList( + SecurityList&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_SecurityReqID = std::move(x.m_SecurityReqID); + m_SecurityResponseID = std::move(x.m_SecurityResponseID); + m_SecurityRequestResult = x.m_SecurityRequestResult; + m_c_NoRelatedSym = std::move(x.m_c_NoRelatedSym); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object SecurityList that will be copied. + */ + eProsima_user_DllExport SecurityList& operator =( + const SecurityList& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_SecurityReqID = x.m_SecurityReqID; + + m_SecurityResponseID = x.m_SecurityResponseID; + + m_SecurityRequestResult = x.m_SecurityRequestResult; + + m_c_NoRelatedSym = x.m_c_NoRelatedSym; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object SecurityList that will be copied. + */ + eProsima_user_DllExport SecurityList& operator =( + SecurityList&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_SecurityReqID = std::move(x.m_SecurityReqID); + m_SecurityResponseID = std::move(x.m_SecurityResponseID); + m_SecurityRequestResult = x.m_SecurityRequestResult; + m_c_NoRelatedSym = std::move(x.m_c_NoRelatedSym); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x SecurityList object to compare. + */ + eProsima_user_DllExport bool operator ==( + const SecurityList& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_SecurityReqID == x.m_SecurityReqID && + m_SecurityResponseID == x.m_SecurityResponseID && + m_SecurityRequestResult == x.m_SecurityRequestResult && + m_c_NoRelatedSym == x.m_c_NoRelatedSym); + } + + /*! + * @brief Comparison operator. + * @param x SecurityList object to compare. + */ + eProsima_user_DllExport bool operator !=( + const SecurityList& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member SecurityReqID + * @param _SecurityReqID New value to be copied in member SecurityReqID + */ + eProsima_user_DllExport void SecurityReqID( + const std::string& _SecurityReqID) + { + m_SecurityReqID = _SecurityReqID; + } + + /*! + * @brief This function moves the value in member SecurityReqID + * @param _SecurityReqID New value to be moved in member SecurityReqID + */ + eProsima_user_DllExport void SecurityReqID( + std::string&& _SecurityReqID) + { + m_SecurityReqID = std::move(_SecurityReqID); + } + + /*! + * @brief This function returns a constant reference to member SecurityReqID + * @return Constant reference to member SecurityReqID + */ + eProsima_user_DllExport const std::string& SecurityReqID() const + { + return m_SecurityReqID; + } + + /*! + * @brief This function returns a reference to member SecurityReqID + * @return Reference to member SecurityReqID + */ + eProsima_user_DllExport std::string& SecurityReqID() + { + return m_SecurityReqID; + } + + + /*! + * @brief This function copies the value in member SecurityResponseID + * @param _SecurityResponseID New value to be copied in member SecurityResponseID + */ + eProsima_user_DllExport void SecurityResponseID( + const std::string& _SecurityResponseID) + { + m_SecurityResponseID = _SecurityResponseID; + } + + /*! + * @brief This function moves the value in member SecurityResponseID + * @param _SecurityResponseID New value to be moved in member SecurityResponseID + */ + eProsima_user_DllExport void SecurityResponseID( + std::string&& _SecurityResponseID) + { + m_SecurityResponseID = std::move(_SecurityResponseID); + } + + /*! + * @brief This function returns a constant reference to member SecurityResponseID + * @return Constant reference to member SecurityResponseID + */ + eProsima_user_DllExport const std::string& SecurityResponseID() const + { + return m_SecurityResponseID; + } + + /*! + * @brief This function returns a reference to member SecurityResponseID + * @return Reference to member SecurityResponseID + */ + eProsima_user_DllExport std::string& SecurityResponseID() + { + return m_SecurityResponseID; + } + + + /*! + * @brief This function sets a value in member SecurityRequestResult + * @param _SecurityRequestResult New value for member SecurityRequestResult + */ + eProsima_user_DllExport void SecurityRequestResult( + int32_t _SecurityRequestResult) + { + m_SecurityRequestResult = _SecurityRequestResult; + } + + /*! + * @brief This function returns the value of member SecurityRequestResult + * @return Value of member SecurityRequestResult + */ + eProsima_user_DllExport int32_t SecurityRequestResult() const + { + return m_SecurityRequestResult; + } + + /*! + * @brief This function returns a reference to member SecurityRequestResult + * @return Reference to member SecurityRequestResult + */ + eProsima_user_DllExport int32_t& SecurityRequestResult() + { + return m_SecurityRequestResult; + } + + + /*! + * @brief This function copies the value in member c_NoRelatedSym + * @param _c_NoRelatedSym New value to be copied in member c_NoRelatedSym + */ + eProsima_user_DllExport void c_NoRelatedSym( + const NoRelatedSymSeq& _c_NoRelatedSym) + { + m_c_NoRelatedSym = _c_NoRelatedSym; + } + + /*! + * @brief This function moves the value in member c_NoRelatedSym + * @param _c_NoRelatedSym New value to be moved in member c_NoRelatedSym + */ + eProsima_user_DllExport void c_NoRelatedSym( + NoRelatedSymSeq&& _c_NoRelatedSym) + { + m_c_NoRelatedSym = std::move(_c_NoRelatedSym); + } + + /*! + * @brief This function returns a constant reference to member c_NoRelatedSym + * @return Constant reference to member c_NoRelatedSym + */ + eProsima_user_DllExport const NoRelatedSymSeq& c_NoRelatedSym() const + { + return m_c_NoRelatedSym; + } + + /*! + * @brief This function returns a reference to member c_NoRelatedSym + * @return Reference to member c_NoRelatedSym + */ + eProsima_user_DllExport NoRelatedSymSeq& c_NoRelatedSym() + { + return m_c_NoRelatedSym; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_SecurityReqID; + std::string m_SecurityResponseID; + int32_t m_SecurityRequestResult{0}; + NoRelatedSymSeq m_c_NoRelatedSym; + +}; + +} // namespace DistributedATS_SecurityList + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_SECURITYLIST_SECURITYLIST_HPP_ + + diff --git a/GenTools/idl/SecurityList.idl b/GenTools/idl/SecurityList.idl index 3f4c967..d0d3cfb 100644 --- a/GenTools/idl/SecurityList.idl +++ b/GenTools/idl/SecurityList.idl @@ -1,4 +1,4 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_SecurityList @@ -12,10 +12,17 @@ module DistributedATS_SecurityList }; typedef sequence NoRelatedSymSeq; - @topic + struct SecurityList { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string SecurityReqID; string SecurityResponseID; long SecurityRequestResult; diff --git a/GenTools/idl/SecurityListAdapter.cpp b/GenTools/idl/SecurityListAdapter.cpp index 4404bd7..579f1ac 100644 --- a/GenTools/idl/SecurityListAdapter.cpp +++ b/GenTools/idl/SecurityListAdapter.cpp @@ -1,28 +1,28 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "SecurityListAdapter.hpp" -#include "ConvertUtils.h" +#include void SecurityListAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_SecurityList::SecurityList& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::SecurityReqID) ) - ddsMsg.SecurityReqID = CORBA::string_dup(((FIX::SecurityReqID)fixMsg.getField(FIX::FIELD::SecurityReqID)).getString().c_str()); + ddsMsg.SecurityReqID ( ((FIX::SecurityReqID)fixMsg.getField(FIX::FIELD::SecurityReqID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SecurityResponseID) ) - ddsMsg.SecurityResponseID = CORBA::string_dup(((FIX::SecurityResponseID)fixMsg.getField(FIX::FIELD::SecurityResponseID)).getString().c_str()); + ddsMsg.SecurityResponseID ( ((FIX::SecurityResponseID)fixMsg.getField(FIX::FIELD::SecurityResponseID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SecurityRequestResult) ) - ddsMsg.SecurityRequestResult = FIELD_GET_REF( fixMsg,SecurityRequestResult); + ddsMsg.SecurityRequestResult ( FIELD_GET_REF( fixMsg,SecurityRequestResult)); else - ddsMsg.SecurityRequestResult = 0; + ddsMsg.SecurityRequestResult ( 0 ); // There is a group FIX::NoRelatedSym NoRelatedSym_group_cnt = FIELD_GET_REF( fixMsg,NoRelatedSym); - ddsMsg.c_NoRelatedSym.length(NoRelatedSym_group_cnt.getValue()); + ddsMsg.c_NoRelatedSym().resize(NoRelatedSym_group_cnt.getValue()); int NoRelatedSym_group_cnt_index = 0; while ( NoRelatedSym_group_cnt_index < NoRelatedSym_group_cnt.getValue()) @@ -31,13 +31,13 @@ void SecurityListAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_Sec ; fixMsg.getGroup(NoRelatedSym_group_cnt_index+1, grp); if (grp.isSetField(FIX::FIELD::Symbol) ) - ddsMsg.c_NoRelatedSym[NoRelatedSym_group_cnt_index].Symbol = CORBA::string_dup(((FIX::Symbol)grp.getField(FIX::FIELD::Symbol)).getString().c_str()); + ddsMsg.c_NoRelatedSym()[NoRelatedSym_group_cnt_index].Symbol ( ((FIX::Symbol)grp.getField(FIX::FIELD::Symbol)).getString().c_str()); if (grp.isSetField(FIX::FIELD::SecurityExchange) ) - ddsMsg.c_NoRelatedSym[NoRelatedSym_group_cnt_index].SecurityExchange = CORBA::string_dup(((FIX::SecurityExchange)grp.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); + ddsMsg.c_NoRelatedSym()[NoRelatedSym_group_cnt_index].SecurityExchange ( ((FIX::SecurityExchange)grp.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); if (grp.isSetField(FIX::FIELD::Text) ) - ddsMsg.c_NoRelatedSym[NoRelatedSym_group_cnt_index].Text = CORBA::string_dup(((FIX::Text)grp.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.c_NoRelatedSym()[NoRelatedSym_group_cnt_index].Text ( ((FIX::Text)grp.getField(FIX::FIELD::Text)).getString().c_str()); NoRelatedSym_group_cnt_index++; }; @@ -48,24 +48,24 @@ void SecurityListAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_Sec void SecurityListAdapter::DDS2FIX(const DistributedATS_SecurityList::SecurityList& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityReqID.in(), FIX::FIELD::SecurityReqID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityReqID(), FIX::FIELD::SecurityReqID, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityResponseID.in(), FIX::FIELD::SecurityResponseID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityResponseID(), FIX::FIELD::SecurityResponseID, fixMsg); - FIX::SecurityRequestResult fixSecurityRequestResult(ddsMsg.SecurityRequestResult); + FIX::SecurityRequestResult fixSecurityRequestResult(ddsMsg.SecurityRequestResult()); fixMsg.setField(fixSecurityRequestResult); - for ( long NoRelatedSym_group_cnt_index = 0; NoRelatedSym_group_cnt_index - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class SecurityListAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_SecurityList::SecurityList& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_SecurityList::SecurityList& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/SecurityListCdrAux.hpp b/GenTools/idl/SecurityListCdrAux.hpp new file mode 100644 index 0000000..f445a2b --- /dev/null +++ b/GenTools/idl/SecurityListCdrAux.hpp @@ -0,0 +1,55 @@ +// 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 SecurityListCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLISTCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLISTCDRAUX_HPP + +#include "SecurityList.hpp" + +constexpr uint32_t DistributedATS_SecurityList_SecurityList_max_cdr_typesize {3156UL}; +constexpr uint32_t DistributedATS_SecurityList_SecurityList_max_key_cdr_typesize {0UL}; + + + +constexpr uint32_t DistributedATS_SecurityList_NoRelatedSym_max_cdr_typesize {784UL}; +constexpr uint32_t DistributedATS_SecurityList_NoRelatedSym_max_key_cdr_typesize {0UL}; + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_SecurityList::NoRelatedSym& data); + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_SecurityList::SecurityList& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLISTCDRAUX_HPP + diff --git a/GenTools/idl/SecurityListCdrAux.ipp b/GenTools/idl/SecurityListCdrAux.ipp new file mode 100644 index 0000000..f4c773c --- /dev/null +++ b/GenTools/idl/SecurityListCdrAux.ipp @@ -0,0 +1,326 @@ +// 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 SecurityListCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLISTCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLISTCDRAUX_IPP + +#include "SecurityListCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_SecurityList::NoRelatedSym& data, + size_t& current_alignment) +{ + using namespace DistributedATS_SecurityList; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.Symbol(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.SecurityExchange(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_SecurityList::NoRelatedSym& data) +{ + using namespace DistributedATS_SecurityList; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.Symbol() + << eprosima::fastcdr::MemberId(1) << data.SecurityExchange() + << eprosima::fastcdr::MemberId(2) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_SecurityList::NoRelatedSym& data) +{ + using namespace DistributedATS_SecurityList; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.Symbol(); + break; + + case 1: + dcdr >> data.SecurityExchange(); + break; + + case 2: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_SecurityList::NoRelatedSym& data) +{ + using namespace DistributedATS_SecurityList; + + static_cast(scdr); + static_cast(data); + scdr << data.Symbol(); + + scdr << data.SecurityExchange(); + + scdr << data.Text(); + +} + + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_SecurityList::SecurityList& data, + size_t& current_alignment) +{ + using namespace DistributedATS_SecurityList; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.SecurityReqID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.SecurityResponseID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.SecurityRequestResult(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.c_NoRelatedSym(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_SecurityList::SecurityList& data) +{ + using namespace DistributedATS_SecurityList; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.SecurityReqID() + << eprosima::fastcdr::MemberId(6) << data.SecurityResponseID() + << eprosima::fastcdr::MemberId(7) << data.SecurityRequestResult() + << eprosima::fastcdr::MemberId(8) << data.c_NoRelatedSym() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_SecurityList::SecurityList& data) +{ + using namespace DistributedATS_SecurityList; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.SecurityReqID(); + break; + + case 6: + dcdr >> data.SecurityResponseID(); + break; + + case 7: + dcdr >> data.SecurityRequestResult(); + break; + + case 8: + dcdr >> data.c_NoRelatedSym(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_SecurityList::SecurityList& data) +{ + using namespace DistributedATS_SecurityList; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.SecurityReqID(); + + scdr << data.SecurityResponseID(); + + scdr << data.SecurityRequestResult(); + + scdr << data.c_NoRelatedSym(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLISTCDRAUX_IPP + diff --git a/GenTools/idl/SecurityListLogger.hpp b/GenTools/idl/SecurityListLogger.hpp index 6a622be..212ad27 100644 --- a/GenTools/idl/SecurityListLogger.hpp +++ b/GenTools/idl/SecurityListLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __SecurityListLogger_h__ -#define __SecurityListLogger_h__ - -#include "SecurityListTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,23 +10,29 @@ class SecurityListLogger static void log(std::ostream & out, DistributedATS_SecurityList::SecurityList& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : SecurityList { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.SecurityReqID : " << ddsMsg.SecurityReqID << std::endl - << "ddsMsg.SecurityResponseID : " << ddsMsg.SecurityResponseID << std::endl - << "ddsMsg.SecurityRequestResult : " << ddsMsg.SecurityRequestResult << std::endl + << "ddsMsg.SecurityReqID : " << ddsMsg.SecurityReqID() << std::endl + << "ddsMsg.SecurityResponseID : " << ddsMsg.SecurityResponseID() << std::endl + << "ddsMsg.SecurityRequestResult : " << ddsMsg.SecurityRequestResult() << std::endl ;out << "ddsMsg.c_NoRelatedSym" << std::endl; out << "{" << std::endl; - for ( int tt = 0; tt < ddsMsg.c_NoRelatedSym.length(); tt++) + for ( int tt = 0; tt < ddsMsg.c_NoRelatedSym().size(); tt++) { - ;out << "ddsMsg.c_NoRelatedSym[" << tt << "].Symbol : " << ddsMsg.c_NoRelatedSym[tt].Symbol << std::endl; - ;out << "ddsMsg.c_NoRelatedSym[" << tt << "].SecurityExchange : " << ddsMsg.c_NoRelatedSym[tt].SecurityExchange << std::endl; - ;out << "ddsMsg.c_NoRelatedSym[" << tt << "].Text : " << ddsMsg.c_NoRelatedSym[tt].Text << std::endl; + ;out << "ddsMsg.c_NoRelatedSym()[" << tt << "].Symbol : " << ddsMsg.c_NoRelatedSym()[tt].Symbol() << std::endl; + ;out << "ddsMsg.c_NoRelatedSym()[" << tt << "].SecurityExchange : " << ddsMsg.c_NoRelatedSym()[tt].SecurityExchange() << std::endl; + ;out << "ddsMsg.c_NoRelatedSym()[" << tt << "].Text : " << ddsMsg.c_NoRelatedSym()[tt].Text() << std::endl; }; ;out << "}" << std::endl; @@ -37,6 +40,3 @@ class SecurityListLogger out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/SecurityListPubSubTypes.cxx b/GenTools/idl/SecurityListPubSubTypes.cxx new file mode 100644 index 0000000..9948082 --- /dev/null +++ b/GenTools/idl/SecurityListPubSubTypes.cxx @@ -0,0 +1,403 @@ +// 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 SecurityListPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "SecurityListPubSubTypes.hpp" + +#include +#include + +#include "SecurityListCdrAux.hpp" +#include "SecurityListTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_SecurityList { + NoRelatedSymPubSubType::NoRelatedSymPubSubType() + { + set_name("DistributedATS_SecurityList::NoRelatedSym"); + uint32_t type_size = DistributedATS_SecurityList_NoRelatedSym_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_SecurityList_NoRelatedSym_max_key_cdr_typesize > 16 ? DistributedATS_SecurityList_NoRelatedSym_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + NoRelatedSymPubSubType::~NoRelatedSymPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool NoRelatedSymPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const NoRelatedSym* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool NoRelatedSymPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + NoRelatedSym* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t NoRelatedSymPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* NoRelatedSymPubSubType::create_data() + { + return reinterpret_cast(new NoRelatedSym()); + } + + void NoRelatedSymPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool NoRelatedSymPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + NoRelatedSym data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool NoRelatedSymPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const NoRelatedSym* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_SecurityList_NoRelatedSym_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_SecurityList_NoRelatedSym_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void NoRelatedSymPubSubType::register_type_object_representation() + { + register_NoRelatedSym_type_identifier(type_identifiers_); + } + + SecurityListPubSubType::SecurityListPubSubType() + { + set_name("DistributedATS_SecurityList::SecurityList"); + uint32_t type_size = DistributedATS_SecurityList_SecurityList_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_SecurityList_SecurityList_max_key_cdr_typesize > 16 ? DistributedATS_SecurityList_SecurityList_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + SecurityListPubSubType::~SecurityListPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool SecurityListPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const SecurityList* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool SecurityListPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + SecurityList* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t SecurityListPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* SecurityListPubSubType::create_data() + { + return reinterpret_cast(new SecurityList()); + } + + void SecurityListPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool SecurityListPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + SecurityList data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool SecurityListPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const SecurityList* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_SecurityList_SecurityList_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_SecurityList_SecurityList_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void SecurityListPubSubType::register_type_object_representation() + { + register_SecurityList_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_SecurityList + + +// Include auxiliary functions like for serializing/deserializing. +#include "SecurityListCdrAux.ipp" diff --git a/GenTools/idl/SecurityListPubSubTypes.hpp b/GenTools/idl/SecurityListPubSubTypes.hpp new file mode 100644 index 0000000..26fcb6f --- /dev/null +++ b/GenTools/idl/SecurityListPubSubTypes.hpp @@ -0,0 +1,209 @@ +// 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 SecurityListPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLIST_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLIST_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "SecurityList.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated SecurityList is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_SecurityList +{ + + /*! + * @brief This class represents the TopicDataType of the type NoRelatedSym defined by the user in the IDL file. + * @ingroup SecurityList + */ + class NoRelatedSymPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef NoRelatedSym type; + + eProsima_user_DllExport NoRelatedSymPubSubType(); + + eProsima_user_DllExport ~NoRelatedSymPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; + typedef std::vector NoRelatedSymSeq; + + /*! + * @brief This class represents the TopicDataType of the type SecurityList defined by the user in the IDL file. + * @ingroup SecurityList + */ + class SecurityListPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef SecurityList type; + + eProsima_user_DllExport SecurityListPubSubType(); + + eProsima_user_DllExport ~SecurityListPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_SecurityList + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLIST_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/SecurityListRequest.hpp b/GenTools/idl/SecurityListRequest.hpp new file mode 100644 index 0000000..2b2c58d --- /dev/null +++ b/GenTools/idl/SecurityListRequest.hpp @@ -0,0 +1,608 @@ +// 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 SecurityListRequest.hpp + * This header file contains the declaration of the described types in the IDL file. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUEST_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUEST_HPP + +#include +#include +#include +#include +#include "Header.hpp" + +#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(SECURITYLISTREQUEST_SOURCE) +#define SECURITYLISTREQUEST_DllAPI __declspec( dllexport ) +#else +#define SECURITYLISTREQUEST_DllAPI __declspec( dllimport ) +#endif // SECURITYLISTREQUEST_SOURCE +#else +#define SECURITYLISTREQUEST_DllAPI +#endif // EPROSIMA_USER_DLL_EXPORT +#else +#define SECURITYLISTREQUEST_DllAPI +#endif // _WIN32 + +namespace DistributedATS_SecurityListRequest { + +/*! + * @brief This class represents the structure SecurityListRequest defined by the user in the IDL file. + * @ingroup SecurityListRequest + */ +class SecurityListRequest +{ +public: + + /*! + * @brief Default constructor. + */ + eProsima_user_DllExport SecurityListRequest() + { + } + + /*! + * @brief Default destructor. + */ + eProsima_user_DllExport ~SecurityListRequest() + { + } + + /*! + * @brief Copy constructor. + * @param x Reference to the object SecurityListRequest that will be copied. + */ + eProsima_user_DllExport SecurityListRequest( + const SecurityListRequest& x) + { + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_SecurityReqID = x.m_SecurityReqID; + + m_SecurityListRequestType = x.m_SecurityListRequestType; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_Text = x.m_Text; + + } + + /*! + * @brief Move constructor. + * @param x Reference to the object SecurityListRequest that will be copied. + */ + eProsima_user_DllExport SecurityListRequest( + SecurityListRequest&& x) noexcept + { + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_SecurityReqID = std::move(x.m_SecurityReqID); + m_SecurityListRequestType = x.m_SecurityListRequestType; + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_Text = std::move(x.m_Text); + } + + /*! + * @brief Copy assignment. + * @param x Reference to the object SecurityListRequest that will be copied. + */ + eProsima_user_DllExport SecurityListRequest& operator =( + const SecurityListRequest& x) + { + + m_fix_header = x.m_fix_header; + + m_DATS_Source = x.m_DATS_Source; + + m_DATS_Destination = x.m_DATS_Destination; + + m_DATS_SourceUser = x.m_DATS_SourceUser; + + m_DATS_DestinationUser = x.m_DATS_DestinationUser; + + m_SecurityReqID = x.m_SecurityReqID; + + m_SecurityListRequestType = x.m_SecurityListRequestType; + + m_Symbol = x.m_Symbol; + + m_SecurityExchange = x.m_SecurityExchange; + + m_Text = x.m_Text; + + return *this; + } + + /*! + * @brief Move assignment. + * @param x Reference to the object SecurityListRequest that will be copied. + */ + eProsima_user_DllExport SecurityListRequest& operator =( + SecurityListRequest&& x) noexcept + { + + m_fix_header = std::move(x.m_fix_header); + m_DATS_Source = std::move(x.m_DATS_Source); + m_DATS_Destination = std::move(x.m_DATS_Destination); + m_DATS_SourceUser = std::move(x.m_DATS_SourceUser); + m_DATS_DestinationUser = std::move(x.m_DATS_DestinationUser); + m_SecurityReqID = std::move(x.m_SecurityReqID); + m_SecurityListRequestType = x.m_SecurityListRequestType; + m_Symbol = std::move(x.m_Symbol); + m_SecurityExchange = std::move(x.m_SecurityExchange); + m_Text = std::move(x.m_Text); + return *this; + } + + /*! + * @brief Comparison operator. + * @param x SecurityListRequest object to compare. + */ + eProsima_user_DllExport bool operator ==( + const SecurityListRequest& x) const + { + return (m_fix_header == x.m_fix_header && + m_DATS_Source == x.m_DATS_Source && + m_DATS_Destination == x.m_DATS_Destination && + m_DATS_SourceUser == x.m_DATS_SourceUser && + m_DATS_DestinationUser == x.m_DATS_DestinationUser && + m_SecurityReqID == x.m_SecurityReqID && + m_SecurityListRequestType == x.m_SecurityListRequestType && + m_Symbol == x.m_Symbol && + m_SecurityExchange == x.m_SecurityExchange && + m_Text == x.m_Text); + } + + /*! + * @brief Comparison operator. + * @param x SecurityListRequest object to compare. + */ + eProsima_user_DllExport bool operator !=( + const SecurityListRequest& x) const + { + return !(*this == x); + } + + /*! + * @brief This function copies the value in member fix_header + * @param _fix_header New value to be copied in member fix_header + */ + eProsima_user_DllExport void fix_header( + const DistributedATS::Header& _fix_header) + { + m_fix_header = _fix_header; + } + + /*! + * @brief This function moves the value in member fix_header + * @param _fix_header New value to be moved in member fix_header + */ + eProsima_user_DllExport void fix_header( + DistributedATS::Header&& _fix_header) + { + m_fix_header = std::move(_fix_header); + } + + /*! + * @brief This function returns a constant reference to member fix_header + * @return Constant reference to member fix_header + */ + eProsima_user_DllExport const DistributedATS::Header& fix_header() const + { + return m_fix_header; + } + + /*! + * @brief This function returns a reference to member fix_header + * @return Reference to member fix_header + */ + eProsima_user_DllExport DistributedATS::Header& fix_header() + { + return m_fix_header; + } + + + /*! + * @brief This function copies the value in member DATS_Source + * @param _DATS_Source New value to be copied in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + const std::string& _DATS_Source) + { + m_DATS_Source = _DATS_Source; + } + + /*! + * @brief This function moves the value in member DATS_Source + * @param _DATS_Source New value to be moved in member DATS_Source + */ + eProsima_user_DllExport void DATS_Source( + std::string&& _DATS_Source) + { + m_DATS_Source = std::move(_DATS_Source); + } + + /*! + * @brief This function returns a constant reference to member DATS_Source + * @return Constant reference to member DATS_Source + */ + eProsima_user_DllExport const std::string& DATS_Source() const + { + return m_DATS_Source; + } + + /*! + * @brief This function returns a reference to member DATS_Source + * @return Reference to member DATS_Source + */ + eProsima_user_DllExport std::string& DATS_Source() + { + return m_DATS_Source; + } + + + /*! + * @brief This function copies the value in member DATS_Destination + * @param _DATS_Destination New value to be copied in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + const std::string& _DATS_Destination) + { + m_DATS_Destination = _DATS_Destination; + } + + /*! + * @brief This function moves the value in member DATS_Destination + * @param _DATS_Destination New value to be moved in member DATS_Destination + */ + eProsima_user_DllExport void DATS_Destination( + std::string&& _DATS_Destination) + { + m_DATS_Destination = std::move(_DATS_Destination); + } + + /*! + * @brief This function returns a constant reference to member DATS_Destination + * @return Constant reference to member DATS_Destination + */ + eProsima_user_DllExport const std::string& DATS_Destination() const + { + return m_DATS_Destination; + } + + /*! + * @brief This function returns a reference to member DATS_Destination + * @return Reference to member DATS_Destination + */ + eProsima_user_DllExport std::string& DATS_Destination() + { + return m_DATS_Destination; + } + + + /*! + * @brief This function copies the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be copied in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + const std::string& _DATS_SourceUser) + { + m_DATS_SourceUser = _DATS_SourceUser; + } + + /*! + * @brief This function moves the value in member DATS_SourceUser + * @param _DATS_SourceUser New value to be moved in member DATS_SourceUser + */ + eProsima_user_DllExport void DATS_SourceUser( + std::string&& _DATS_SourceUser) + { + m_DATS_SourceUser = std::move(_DATS_SourceUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_SourceUser + * @return Constant reference to member DATS_SourceUser + */ + eProsima_user_DllExport const std::string& DATS_SourceUser() const + { + return m_DATS_SourceUser; + } + + /*! + * @brief This function returns a reference to member DATS_SourceUser + * @return Reference to member DATS_SourceUser + */ + eProsima_user_DllExport std::string& DATS_SourceUser() + { + return m_DATS_SourceUser; + } + + + /*! + * @brief This function copies the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be copied in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + const std::string& _DATS_DestinationUser) + { + m_DATS_DestinationUser = _DATS_DestinationUser; + } + + /*! + * @brief This function moves the value in member DATS_DestinationUser + * @param _DATS_DestinationUser New value to be moved in member DATS_DestinationUser + */ + eProsima_user_DllExport void DATS_DestinationUser( + std::string&& _DATS_DestinationUser) + { + m_DATS_DestinationUser = std::move(_DATS_DestinationUser); + } + + /*! + * @brief This function returns a constant reference to member DATS_DestinationUser + * @return Constant reference to member DATS_DestinationUser + */ + eProsima_user_DllExport const std::string& DATS_DestinationUser() const + { + return m_DATS_DestinationUser; + } + + /*! + * @brief This function returns a reference to member DATS_DestinationUser + * @return Reference to member DATS_DestinationUser + */ + eProsima_user_DllExport std::string& DATS_DestinationUser() + { + return m_DATS_DestinationUser; + } + + + /*! + * @brief This function copies the value in member SecurityReqID + * @param _SecurityReqID New value to be copied in member SecurityReqID + */ + eProsima_user_DllExport void SecurityReqID( + const std::string& _SecurityReqID) + { + m_SecurityReqID = _SecurityReqID; + } + + /*! + * @brief This function moves the value in member SecurityReqID + * @param _SecurityReqID New value to be moved in member SecurityReqID + */ + eProsima_user_DllExport void SecurityReqID( + std::string&& _SecurityReqID) + { + m_SecurityReqID = std::move(_SecurityReqID); + } + + /*! + * @brief This function returns a constant reference to member SecurityReqID + * @return Constant reference to member SecurityReqID + */ + eProsima_user_DllExport const std::string& SecurityReqID() const + { + return m_SecurityReqID; + } + + /*! + * @brief This function returns a reference to member SecurityReqID + * @return Reference to member SecurityReqID + */ + eProsima_user_DllExport std::string& SecurityReqID() + { + return m_SecurityReqID; + } + + + /*! + * @brief This function sets a value in member SecurityListRequestType + * @param _SecurityListRequestType New value for member SecurityListRequestType + */ + eProsima_user_DllExport void SecurityListRequestType( + int32_t _SecurityListRequestType) + { + m_SecurityListRequestType = _SecurityListRequestType; + } + + /*! + * @brief This function returns the value of member SecurityListRequestType + * @return Value of member SecurityListRequestType + */ + eProsima_user_DllExport int32_t SecurityListRequestType() const + { + return m_SecurityListRequestType; + } + + /*! + * @brief This function returns a reference to member SecurityListRequestType + * @return Reference to member SecurityListRequestType + */ + eProsima_user_DllExport int32_t& SecurityListRequestType() + { + return m_SecurityListRequestType; + } + + + /*! + * @brief This function copies the value in member Symbol + * @param _Symbol New value to be copied in member Symbol + */ + eProsima_user_DllExport void Symbol( + const std::string& _Symbol) + { + m_Symbol = _Symbol; + } + + /*! + * @brief This function moves the value in member Symbol + * @param _Symbol New value to be moved in member Symbol + */ + eProsima_user_DllExport void Symbol( + std::string&& _Symbol) + { + m_Symbol = std::move(_Symbol); + } + + /*! + * @brief This function returns a constant reference to member Symbol + * @return Constant reference to member Symbol + */ + eProsima_user_DllExport const std::string& Symbol() const + { + return m_Symbol; + } + + /*! + * @brief This function returns a reference to member Symbol + * @return Reference to member Symbol + */ + eProsima_user_DllExport std::string& Symbol() + { + return m_Symbol; + } + + + /*! + * @brief This function copies the value in member SecurityExchange + * @param _SecurityExchange New value to be copied in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + const std::string& _SecurityExchange) + { + m_SecurityExchange = _SecurityExchange; + } + + /*! + * @brief This function moves the value in member SecurityExchange + * @param _SecurityExchange New value to be moved in member SecurityExchange + */ + eProsima_user_DllExport void SecurityExchange( + std::string&& _SecurityExchange) + { + m_SecurityExchange = std::move(_SecurityExchange); + } + + /*! + * @brief This function returns a constant reference to member SecurityExchange + * @return Constant reference to member SecurityExchange + */ + eProsima_user_DllExport const std::string& SecurityExchange() const + { + return m_SecurityExchange; + } + + /*! + * @brief This function returns a reference to member SecurityExchange + * @return Reference to member SecurityExchange + */ + eProsima_user_DllExport std::string& SecurityExchange() + { + return m_SecurityExchange; + } + + + /*! + * @brief This function copies the value in member Text + * @param _Text New value to be copied in member Text + */ + eProsima_user_DllExport void Text( + const std::string& _Text) + { + m_Text = _Text; + } + + /*! + * @brief This function moves the value in member Text + * @param _Text New value to be moved in member Text + */ + eProsima_user_DllExport void Text( + std::string&& _Text) + { + m_Text = std::move(_Text); + } + + /*! + * @brief This function returns a constant reference to member Text + * @return Constant reference to member Text + */ + eProsima_user_DllExport const std::string& Text() const + { + return m_Text; + } + + /*! + * @brief This function returns a reference to member Text + * @return Reference to member Text + */ + eProsima_user_DllExport std::string& Text() + { + return m_Text; + } + + + +private: + + DistributedATS::Header m_fix_header; + std::string m_DATS_Source; + std::string m_DATS_Destination; + std::string m_DATS_SourceUser; + std::string m_DATS_DestinationUser; + std::string m_SecurityReqID; + int32_t m_SecurityListRequestType{0}; + std::string m_Symbol; + std::string m_SecurityExchange; + std::string m_Text; + +}; + +} // namespace DistributedATS_SecurityListRequest + +#endif // _FAST_DDS_GENERATED_DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUEST_HPP_ + + diff --git a/GenTools/idl/SecurityListRequest.idl b/GenTools/idl/SecurityListRequest.idl index 3bcfed1..aede8a6 100644 --- a/GenTools/idl/SecurityListRequest.idl +++ b/GenTools/idl/SecurityListRequest.idl @@ -1,13 +1,20 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "Header.idl" module DistributedATS_SecurityListRequest { - @topic + struct SecurityListRequest { - DistributedATS::Header m_Header; + string DATS_Source; + string DATS_Destination; + string DATS_SourceUser; + string DATS_DestinationUser; + + + DistributedATS::Header fix_header; + string SecurityReqID; long SecurityListRequestType; string Symbol; diff --git a/GenTools/idl/SecurityListRequestAdapter.cpp b/GenTools/idl/SecurityListRequestAdapter.cpp index b6f5ed9..adaf58e 100644 --- a/GenTools/idl/SecurityListRequestAdapter.cpp +++ b/GenTools/idl/SecurityListRequestAdapter.cpp @@ -1,28 +1,28 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ #include "SecurityListRequestAdapter.hpp" -#include "ConvertUtils.h" +#include void SecurityListRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, DistributedATS_SecurityListRequest::SecurityListRequest& ddsMsg ) { - HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.m_Header); + HeaderAdapter::FIX2DDS(fixMsg.getHeader(), ddsMsg.fix_header()); if (fixMsg.isSetField(FIX::FIELD::SecurityReqID) ) - ddsMsg.SecurityReqID = CORBA::string_dup(((FIX::SecurityReqID)fixMsg.getField(FIX::FIELD::SecurityReqID)).getString().c_str()); + ddsMsg.SecurityReqID ( ((FIX::SecurityReqID)fixMsg.getField(FIX::FIELD::SecurityReqID)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SecurityListRequestType) ) - ddsMsg.SecurityListRequestType = FIELD_GET_REF( fixMsg,SecurityListRequestType); + ddsMsg.SecurityListRequestType ( FIELD_GET_REF( fixMsg,SecurityListRequestType)); else - ddsMsg.SecurityListRequestType = 0; + ddsMsg.SecurityListRequestType ( 0 ); if (fixMsg.isSetField(FIX::FIELD::Symbol) ) - ddsMsg.Symbol = CORBA::string_dup(((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); + ddsMsg.Symbol ( ((FIX::Symbol)fixMsg.getField(FIX::FIELD::Symbol)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::SecurityExchange) ) - ddsMsg.SecurityExchange = CORBA::string_dup(((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); + ddsMsg.SecurityExchange ( ((FIX::SecurityExchange)fixMsg.getField(FIX::FIELD::SecurityExchange)).getString().c_str()); if (fixMsg.isSetField(FIX::FIELD::Text) ) - ddsMsg.Text = CORBA::string_dup(((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); + ddsMsg.Text ( ((FIX::Text)fixMsg.getField(FIX::FIELD::Text)).getString().c_str()); }; @@ -31,18 +31,18 @@ void SecurityListRequestAdapter::FIX2DDS(const FIX::Message& fixMsg, Distributed void SecurityListRequestAdapter::DDS2FIX(const DistributedATS_SecurityListRequest::SecurityListRequest& ddsMsg, FIX::Message& fixMsg) { - HeaderAdapter::DDS2FIX(ddsMsg.m_Header, fixMsg.getHeader()); + HeaderAdapter::DDS2FIX(ddsMsg.fix_header(), fixMsg.getHeader()); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityReqID.in(), FIX::FIELD::SecurityReqID, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityReqID(), FIX::FIELD::SecurityReqID, fixMsg); - FIX::SecurityListRequestType fixSecurityListRequestType(ddsMsg.SecurityListRequestType); + FIX::SecurityListRequestType fixSecurityListRequestType(ddsMsg.SecurityListRequestType()); fixMsg.setField(fixSecurityListRequestType); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol.in(), FIX::FIELD::Symbol, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Symbol(), FIX::FIELD::Symbol, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange.in(), FIX::FIELD::SecurityExchange, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.SecurityExchange(), FIX::FIELD::SecurityExchange, fixMsg); - DistributedATS::convert_dds_string_to_fix(ddsMsg.Text.in(), FIX::FIELD::Text, fixMsg); + DistributedATS::convert_dds_string_to_fix(ddsMsg.Text(), FIX::FIELD::Text, fixMsg); }; diff --git a/GenTools/idl/SecurityListRequestAdapter.hpp b/GenTools/idl/SecurityListRequestAdapter.hpp index 6d0601b..87006b2 100644 --- a/GenTools/idl/SecurityListRequestAdapter.hpp +++ b/GenTools/idl/SecurityListRequestAdapter.hpp @@ -1,12 +1,8 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __SecurityListRequest_h__ -#define __SecurityListRequest_h__ - -#include "SecurityListRequestTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once +#include "SecurityListRequest.hpp" #include - using namespace DistributedATS; - #include "HeaderAdapter.hpp" @@ -16,6 +12,4 @@ class SecurityListRequestAdapter static void FIX2DDS(const FIX::Message&, DistributedATS_SecurityListRequest::SecurityListRequest& ddsMsg ) __attribute__ ((visibility ("default"))); static void DDS2FIX(const DistributedATS_SecurityListRequest::SecurityListRequest& ddsMsg, FIX::Message&) __attribute__ ((visibility ("default"))); -}; -#endif - +}; \ No newline at end of file diff --git a/GenTools/idl/SecurityListRequestCdrAux.hpp b/GenTools/idl/SecurityListRequestCdrAux.hpp new file mode 100644 index 0000000..2e1e8cc --- /dev/null +++ b/GenTools/idl/SecurityListRequestCdrAux.hpp @@ -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 SecurityListRequestCdrAux.hpp + * This source file contains some definitions of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUESTCDRAUX_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUESTCDRAUX_HPP + +#include "SecurityListRequest.hpp" + +constexpr uint32_t DistributedATS_SecurityListRequest_SecurityListRequest_max_cdr_typesize {3668UL}; +constexpr uint32_t DistributedATS_SecurityListRequest_SecurityListRequest_max_key_cdr_typesize {0UL}; + + +namespace eprosima { +namespace fastcdr { + +class Cdr; +class CdrSizeCalculator; + +eProsima_user_DllExport void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_SecurityListRequest::SecurityListRequest& data); + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUESTCDRAUX_HPP + diff --git a/GenTools/idl/SecurityListRequestCdrAux.ipp b/GenTools/idl/SecurityListRequestCdrAux.ipp new file mode 100644 index 0000000..c87b63e --- /dev/null +++ b/GenTools/idl/SecurityListRequestCdrAux.ipp @@ -0,0 +1,231 @@ +// 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 SecurityListRequestCdrAux.ipp + * This source file contains some declarations of CDR related functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUESTCDRAUX_IPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUESTCDRAUX_IPP + +#include "SecurityListRequestCdrAux.hpp" + +#include +#include + + +#include +using namespace eprosima::fastcdr::exception; + +namespace eprosima { +namespace fastcdr { + +template<> +eProsima_user_DllExport size_t calculate_serialized_size( + eprosima::fastcdr::CdrSizeCalculator& calculator, + const DistributedATS_SecurityListRequest::SecurityListRequest& data, + size_t& current_alignment) +{ + using namespace DistributedATS_SecurityListRequest; + + static_cast(data); + + eprosima::fastcdr::EncodingAlgorithmFlag previous_encoding = calculator.get_encoding(); + size_t calculated_size {calculator.begin_calculate_type_serialized_size( + eprosima::fastcdr::CdrVersion::XCDRv2 == calculator.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + current_alignment)}; + + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(0), + data.fix_header(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(1), + data.DATS_Source(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(2), + data.DATS_Destination(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(3), + data.DATS_SourceUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(4), + data.DATS_DestinationUser(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(5), + data.SecurityReqID(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(6), + data.SecurityListRequestType(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(7), + data.Symbol(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(8), + data.SecurityExchange(), current_alignment); + + calculated_size += calculator.calculate_member_serialized_size(eprosima::fastcdr::MemberId(9), + data.Text(), current_alignment); + + + calculated_size += calculator.end_calculate_type_serialized_size(previous_encoding, current_alignment); + + return calculated_size; +} + +template<> +eProsima_user_DllExport void serialize( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_SecurityListRequest::SecurityListRequest& data) +{ + using namespace DistributedATS_SecurityListRequest; + + eprosima::fastcdr::Cdr::state current_state(scdr); + scdr.begin_serialize_type(current_state, + eprosima::fastcdr::CdrVersion::XCDRv2 == scdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR); + + scdr + << eprosima::fastcdr::MemberId(0) << data.fix_header() + << eprosima::fastcdr::MemberId(1) << data.DATS_Source() + << eprosima::fastcdr::MemberId(2) << data.DATS_Destination() + << eprosima::fastcdr::MemberId(3) << data.DATS_SourceUser() + << eprosima::fastcdr::MemberId(4) << data.DATS_DestinationUser() + << eprosima::fastcdr::MemberId(5) << data.SecurityReqID() + << eprosima::fastcdr::MemberId(6) << data.SecurityListRequestType() + << eprosima::fastcdr::MemberId(7) << data.Symbol() + << eprosima::fastcdr::MemberId(8) << data.SecurityExchange() + << eprosima::fastcdr::MemberId(9) << data.Text() +; + scdr.end_serialize_type(current_state); +} + +template<> +eProsima_user_DllExport void deserialize( + eprosima::fastcdr::Cdr& cdr, + DistributedATS_SecurityListRequest::SecurityListRequest& data) +{ + using namespace DistributedATS_SecurityListRequest; + + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2 : + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR, + [&data](eprosima::fastcdr::Cdr& dcdr, const eprosima::fastcdr::MemberId& mid) -> bool + { + bool ret_value = true; + switch (mid.id) + { + case 0: + dcdr >> data.fix_header(); + break; + + case 1: + dcdr >> data.DATS_Source(); + break; + + case 2: + dcdr >> data.DATS_Destination(); + break; + + case 3: + dcdr >> data.DATS_SourceUser(); + break; + + case 4: + dcdr >> data.DATS_DestinationUser(); + break; + + case 5: + dcdr >> data.SecurityReqID(); + break; + + case 6: + dcdr >> data.SecurityListRequestType(); + break; + + case 7: + dcdr >> data.Symbol(); + break; + + case 8: + dcdr >> data.SecurityExchange(); + break; + + case 9: + dcdr >> data.Text(); + break; + + default: + ret_value = false; + break; + } + return ret_value; + }); +} + +void serialize_key( + eprosima::fastcdr::Cdr& scdr, + const DistributedATS_SecurityListRequest::SecurityListRequest& data) +{ + using namespace DistributedATS_SecurityListRequest; + extern void serialize_key( + Cdr& scdr, + const DistributedATS::Header& data); + + + + + + + + + + + + static_cast(scdr); + static_cast(data); + serialize_key(scdr, data.fix_header()); + + scdr << data.DATS_Source(); + + scdr << data.DATS_Destination(); + + scdr << data.DATS_SourceUser(); + + scdr << data.DATS_DestinationUser(); + + scdr << data.SecurityReqID(); + + scdr << data.SecurityListRequestType(); + + scdr << data.Symbol(); + + scdr << data.SecurityExchange(); + + scdr << data.Text(); + +} + + + +} // namespace fastcdr +} // namespace eprosima + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUESTCDRAUX_IPP + diff --git a/GenTools/idl/SecurityListRequestLogger.hpp b/GenTools/idl/SecurityListRequestLogger.hpp index 153265c..961eab9 100644 --- a/GenTools/idl/SecurityListRequestLogger.hpp +++ b/GenTools/idl/SecurityListRequestLogger.hpp @@ -1,8 +1,5 @@ -// Don't modify, automatically generated file by QuickFIX2OpenDDS.py -#ifndef __SecurityListRequestLogger_h__ -#define __SecurityListRequestLogger_h__ - -#include "SecurityListRequestTypeSupportImpl.h" +/* Don't modify, automatically generated file by QuickFIX2FastDDS.py*/ +#pragma once #include "HeaderLogger.hpp" ; @@ -13,19 +10,22 @@ class SecurityListRequestLogger static void log(std::ostream & out, DistributedATS_SecurityListRequest::SecurityListRequest& ddsMsg ) __attribute__ ((visibility ("default"))) { ;out<< "Message : SecurityListRequest { " << std::endl; - HeaderLogger::log(out, ddsMsg.m_Header); + ;out + << "ddsMsg.DATS_Source : " << ddsMsg.DATS_Source() << std::endl + << "ddsMsg.DATS_Destination : " << ddsMsg.DATS_Destination() << std::endl + << "ddsMsg.DATS_SourceUser : " << ddsMsg.DATS_SourceUser() << std::endl + << "ddsMsg.DATS_DestinationUser : " << ddsMsg.DATS_DestinationUser() << std::endl; + + HeaderLogger::log(out, ddsMsg.fix_header()); ;out - << "ddsMsg.SecurityReqID : " << ddsMsg.SecurityReqID << std::endl - << "ddsMsg.SecurityListRequestType : " << ddsMsg.SecurityListRequestType << std::endl - << "ddsMsg.Symbol : " << ddsMsg.Symbol << std::endl - << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange << std::endl - << "ddsMsg.Text : " << ddsMsg.Text << std::endl + << "ddsMsg.SecurityReqID : " << ddsMsg.SecurityReqID() << std::endl + << "ddsMsg.SecurityListRequestType : " << ddsMsg.SecurityListRequestType() << std::endl + << "ddsMsg.Symbol : " << ddsMsg.Symbol() << std::endl + << "ddsMsg.SecurityExchange : " << ddsMsg.SecurityExchange() << std::endl + << "ddsMsg.Text : " << ddsMsg.Text() << std::endl ; out << "}"; out << std::endl;}; }; - -#endif - diff --git a/GenTools/idl/SecurityListRequestPubSubTypes.cxx b/GenTools/idl/SecurityListRequestPubSubTypes.cxx new file mode 100644 index 0000000..d3a2599 --- /dev/null +++ b/GenTools/idl/SecurityListRequestPubSubTypes.cxx @@ -0,0 +1,221 @@ +// 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 SecurityListRequestPubSubTypes.cpp + * This header file contains the implementation of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "SecurityListRequestPubSubTypes.hpp" + +#include +#include + +#include "SecurityListRequestCdrAux.hpp" +#include "SecurityListRequestTypeObjectSupport.hpp" + +using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; +using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; +using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; + +namespace DistributedATS_SecurityListRequest { + SecurityListRequestPubSubType::SecurityListRequestPubSubType() + { + set_name("DistributedATS_SecurityListRequest::SecurityListRequest"); + uint32_t type_size = DistributedATS_SecurityListRequest_SecurityListRequest_max_cdr_typesize; + type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ + max_serialized_type_size = type_size + 4; /*encapsulation*/ + is_compute_key_provided = false; + uint32_t key_length = DistributedATS_SecurityListRequest_SecurityListRequest_max_key_cdr_typesize > 16 ? DistributedATS_SecurityListRequest_SecurityListRequest_max_key_cdr_typesize : 16; + key_buffer_ = reinterpret_cast(malloc(key_length)); + memset(key_buffer_, 0, key_length); + } + + SecurityListRequestPubSubType::~SecurityListRequestPubSubType() + { + if (key_buffer_ != nullptr) + { + free(key_buffer_); + } + } + + bool SecurityListRequestPubSubType::serialize( + const void* const data, + SerializedPayload_t& payload, + DataRepresentationId_t data_representation) + { + const SecurityListRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); + payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + ser.set_encoding_flag( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : + eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); + + try + { + // Serialize encapsulation + ser.serialize_encapsulation(); + // Serialize the object. + ser << *p_type; + ser.set_dds_cdr_options({0,0}); + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + // Get the serialized length + payload.length = static_cast(ser.get_serialized_data_length()); + return true; + } + + bool SecurityListRequestPubSubType::deserialize( + SerializedPayload_t& payload, + void* data) + { + try + { + // Convert DATA to pointer of your type + SecurityListRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); + + // Object that deserializes the data. + eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); + + // Deserialize encapsulation. + deser.read_encapsulation(); + payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; + + // Deserialize the object. + deser >> *p_type; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return false; + } + + return true; + } + + uint32_t SecurityListRequestPubSubType::calculate_serialized_size( + const void* const data, + DataRepresentationId_t data_representation) + { + try + { + eprosima::fastcdr::CdrSizeCalculator calculator( + data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? + eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); + size_t current_alignment {0}; + return static_cast(calculator.calculate_serialized_size( + *static_cast(data), current_alignment)) + + 4u /*encapsulation*/; + } + catch (eprosima::fastcdr::exception::Exception& /*exception*/) + { + return 0; + } + } + + void* SecurityListRequestPubSubType::create_data() + { + return reinterpret_cast(new SecurityListRequest()); + } + + void SecurityListRequestPubSubType::delete_data( + void* data) + { + delete(reinterpret_cast(data)); + } + + bool SecurityListRequestPubSubType::compute_key( + SerializedPayload_t& payload, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + SecurityListRequest data; + if (deserialize(payload, static_cast(&data))) + { + return compute_key(static_cast(&data), handle, force_md5); + } + + return false; + } + + bool SecurityListRequestPubSubType::compute_key( + const void* const data, + InstanceHandle_t& handle, + bool force_md5) + { + if (!is_compute_key_provided) + { + return false; + } + + const SecurityListRequest* p_type = static_cast(data); + + // Object that manages the raw buffer. + eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), + DistributedATS_SecurityListRequest_SecurityListRequest_max_key_cdr_typesize); + + // Object that serializes the data. + eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); + ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); + eprosima::fastcdr::serialize_key(ser, *p_type); + if (force_md5 || DistributedATS_SecurityListRequest_SecurityListRequest_max_key_cdr_typesize > 16) + { + md5_.init(); + md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); + md5_.finalize(); + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = md5_.digest[i]; + } + } + else + { + for (uint8_t i = 0; i < 16; ++i) + { + handle.value[i] = key_buffer_[i]; + } + } + return true; + } + + void SecurityListRequestPubSubType::register_type_object_representation() + { + register_SecurityListRequest_type_identifier(type_identifiers_); + } + +} // namespace DistributedATS_SecurityListRequest + + +// Include auxiliary functions like for serializing/deserializing. +#include "SecurityListRequestCdrAux.ipp" diff --git a/GenTools/idl/SecurityListRequestPubSubTypes.hpp b/GenTools/idl/SecurityListRequestPubSubTypes.hpp new file mode 100644 index 0000000..455fc4c --- /dev/null +++ b/GenTools/idl/SecurityListRequestPubSubTypes.hpp @@ -0,0 +1,127 @@ +// 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 SecurityListRequestPubSubTypes.hpp + * This header file contains the declaration of the serialization functions. + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUEST_PUBSUBTYPES_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUEST_PUBSUBTYPES_HPP + +#include +#include +#include +#include +#include + +#include "SecurityListRequest.hpp" + +#include "HeaderPubSubTypes.hpp" + +#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3) +#error \ + Generated SecurityListRequest is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen. +#endif // FASTDDS_GEN_API_VER + +namespace DistributedATS_SecurityListRequest +{ + + /*! + * @brief This class represents the TopicDataType of the type SecurityListRequest defined by the user in the IDL file. + * @ingroup SecurityListRequest + */ + class SecurityListRequestPubSubType : public eprosima::fastdds::dds::TopicDataType + { + public: + + typedef SecurityListRequest type; + + eProsima_user_DllExport SecurityListRequestPubSubType(); + + eProsima_user_DllExport ~SecurityListRequestPubSubType() override; + + eProsima_user_DllExport bool serialize( + const void* const data, + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool deserialize( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + void* data) override; + + eProsima_user_DllExport uint32_t calculate_serialized_size( + const void* const data, + eprosima::fastdds::dds::DataRepresentationId_t data_representation) override; + + eProsima_user_DllExport bool compute_key( + eprosima::fastdds::rtps::SerializedPayload_t& payload, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport bool compute_key( + const void* const data, + eprosima::fastdds::rtps::InstanceHandle_t& ihandle, + bool force_md5 = false) override; + + eProsima_user_DllExport void* create_data() override; + + eProsima_user_DllExport void delete_data( + void* data) override; + + //Register TypeObject representation in Fast DDS TypeObjectRegistry + eProsima_user_DllExport void register_type_object_representation() override; + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + eProsima_user_DllExport inline bool is_bounded() const override + { + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED + + #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + eProsima_user_DllExport inline bool is_plain( + eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override + { + static_cast(data_representation); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN + + #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + eProsima_user_DllExport inline bool construct_sample( + void* memory) const override + { + static_cast(memory); + return false; + } + + #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE + + private: + + eprosima::fastdds::MD5 md5_; + unsigned char* key_buffer_; + + }; +} // namespace DistributedATS_SecurityListRequest + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUEST_PUBSUBTYPES_HPP + diff --git a/GenTools/idl/SecurityListRequestTypeObjectSupport.cxx b/GenTools/idl/SecurityListRequestTypeObjectSupport.cxx new file mode 100644 index 0000000..a27ca4e --- /dev/null +++ b/GenTools/idl/SecurityListRequestTypeObjectSupport.cxx @@ -0,0 +1,436 @@ +// 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 SecurityListRequestTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "SecurityListRequestTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "SecurityListRequest.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_SecurityListRequest { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_SecurityListRequest_type_identifier( + TypeIdentifierPair& type_ids_SecurityListRequest) +{ + + ReturnCode_t return_code_SecurityListRequest {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityListRequest = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_SecurityListRequest::SecurityListRequest", type_ids_SecurityListRequest); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityListRequest) + { + StructTypeFlag struct_flags_SecurityListRequest = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_SecurityListRequest = "DistributedATS_SecurityListRequest::SecurityListRequest"; + eprosima::fastcdr::optional type_ann_builtin_SecurityListRequest; + eprosima::fastcdr::optional ann_custom_SecurityListRequest; + CompleteTypeDetail detail_SecurityListRequest = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_SecurityListRequest, ann_custom_SecurityListRequest, type_name_SecurityListRequest.to_string()); + CompleteStructHeader header_SecurityListRequest; + header_SecurityListRequest = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_SecurityListRequest); + CompleteStructMemberSeq member_seq_SecurityListRequest; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_SecurityListRequest.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_SecurityListRequest); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityListRequest, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_SecurityListRequest.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_SecurityListRequest); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityListRequest, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_SecurityListRequest.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_SecurityListRequest); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityListRequest, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_SecurityListRequest.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_SecurityListRequest); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityListRequest, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_SecurityListRequest.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_SecurityListRequest); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityListRequest, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_SecurityReqID; + ReturnCode_t return_code_SecurityReqID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityReqID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityReqID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityReqID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityReqID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityReqID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityReqID = 0x00000005; + bool common_SecurityReqID_ec {false}; + CommonStructMember common_SecurityReqID {TypeObjectUtils::build_common_struct_member(member_id_SecurityReqID, member_flags_SecurityReqID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityReqID, common_SecurityReqID_ec))}; + if (!common_SecurityReqID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityReqID member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityReqID = "SecurityReqID"; + eprosima::fastcdr::optional member_ann_builtin_SecurityReqID; + ann_custom_SecurityListRequest.reset(); + CompleteMemberDetail detail_SecurityReqID = TypeObjectUtils::build_complete_member_detail(name_SecurityReqID, member_ann_builtin_SecurityReqID, ann_custom_SecurityListRequest); + CompleteStructMember member_SecurityReqID = TypeObjectUtils::build_complete_struct_member(common_SecurityReqID, detail_SecurityReqID); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityListRequest, member_SecurityReqID); + } + { + TypeIdentifierPair type_ids_SecurityListRequestType; + ReturnCode_t return_code_SecurityListRequestType {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityListRequestType = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_SecurityListRequestType); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityListRequestType) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "SecurityListRequestType Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_SecurityListRequestType = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityListRequestType = 0x00000006; + bool common_SecurityListRequestType_ec {false}; + CommonStructMember common_SecurityListRequestType {TypeObjectUtils::build_common_struct_member(member_id_SecurityListRequestType, member_flags_SecurityListRequestType, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityListRequestType, common_SecurityListRequestType_ec))}; + if (!common_SecurityListRequestType_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityListRequestType member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityListRequestType = "SecurityListRequestType"; + eprosima::fastcdr::optional member_ann_builtin_SecurityListRequestType; + ann_custom_SecurityListRequest.reset(); + CompleteMemberDetail detail_SecurityListRequestType = TypeObjectUtils::build_complete_member_detail(name_SecurityListRequestType, member_ann_builtin_SecurityListRequestType, ann_custom_SecurityListRequest); + CompleteStructMember member_SecurityListRequestType = TypeObjectUtils::build_complete_struct_member(common_SecurityListRequestType, detail_SecurityListRequestType); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityListRequest, member_SecurityListRequestType); + } + { + TypeIdentifierPair type_ids_Symbol; + ReturnCode_t return_code_Symbol {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Symbol = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Symbol); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Symbol) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Symbol)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Symbol = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Symbol = 0x00000007; + bool common_Symbol_ec {false}; + CommonStructMember common_Symbol {TypeObjectUtils::build_common_struct_member(member_id_Symbol, member_flags_Symbol, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Symbol, common_Symbol_ec))}; + if (!common_Symbol_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Symbol member TypeIdentifier inconsistent."); + return; + } + MemberName name_Symbol = "Symbol"; + eprosima::fastcdr::optional member_ann_builtin_Symbol; + ann_custom_SecurityListRequest.reset(); + CompleteMemberDetail detail_Symbol = TypeObjectUtils::build_complete_member_detail(name_Symbol, member_ann_builtin_Symbol, ann_custom_SecurityListRequest); + CompleteStructMember member_Symbol = TypeObjectUtils::build_complete_struct_member(common_Symbol, detail_Symbol); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityListRequest, member_Symbol); + } + { + TypeIdentifierPair type_ids_SecurityExchange; + ReturnCode_t return_code_SecurityExchange {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityExchange = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityExchange); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityExchange) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityExchange)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityExchange = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityExchange = 0x00000008; + bool common_SecurityExchange_ec {false}; + CommonStructMember common_SecurityExchange {TypeObjectUtils::build_common_struct_member(member_id_SecurityExchange, member_flags_SecurityExchange, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityExchange, common_SecurityExchange_ec))}; + if (!common_SecurityExchange_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityExchange member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityExchange = "SecurityExchange"; + eprosima::fastcdr::optional member_ann_builtin_SecurityExchange; + ann_custom_SecurityListRequest.reset(); + CompleteMemberDetail detail_SecurityExchange = TypeObjectUtils::build_complete_member_detail(name_SecurityExchange, member_ann_builtin_SecurityExchange, ann_custom_SecurityListRequest); + CompleteStructMember member_SecurityExchange = TypeObjectUtils::build_complete_struct_member(common_SecurityExchange, detail_SecurityExchange); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityListRequest, member_SecurityExchange); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x00000009; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_SecurityListRequest.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_SecurityListRequest); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityListRequest, member_Text); + } + CompleteStructType struct_type_SecurityListRequest = TypeObjectUtils::build_complete_struct_type(struct_flags_SecurityListRequest, header_SecurityListRequest, member_seq_SecurityListRequest); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_SecurityListRequest, type_name_SecurityListRequest.to_string(), type_ids_SecurityListRequest)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_SecurityListRequest::SecurityListRequest already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_SecurityListRequest + diff --git a/GenTools/idl/SecurityListRequestTypeObjectSupport.hpp b/GenTools/idl/SecurityListRequestTypeObjectSupport.hpp new file mode 100644 index 0000000..fe6bf14 --- /dev/null +++ b/GenTools/idl/SecurityListRequestTypeObjectSupport.hpp @@ -0,0 +1,60 @@ +// 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 SecurityListRequestTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUEST_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUEST_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_SecurityListRequest { +/** + * @brief Register SecurityListRequest related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_SecurityListRequest_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_SecurityListRequest + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLISTREQUEST_SECURITYLISTREQUEST_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/idl/SecurityListTypeObjectSupport.cxx b/GenTools/idl/SecurityListTypeObjectSupport.cxx new file mode 100644 index 0000000..9a7d36a --- /dev/null +++ b/GenTools/idl/SecurityListTypeObjectSupport.cxx @@ -0,0 +1,611 @@ +// 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 SecurityListTypeObjectSupport.cxx + * Source file containing the implementation to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#include "SecurityListTypeObjectSupport.hpp" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "SecurityList.hpp" + +#include "Header.hpp" + +using namespace eprosima::fastdds::dds::xtypes; + +namespace DistributedATS_SecurityList { +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_NoRelatedSym_type_identifier( + TypeIdentifierPair& type_ids_NoRelatedSym) +{ + + ReturnCode_t return_code_NoRelatedSym {eprosima::fastdds::dds::RETCODE_OK}; + return_code_NoRelatedSym = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_SecurityList::NoRelatedSym", type_ids_NoRelatedSym); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoRelatedSym) + { + StructTypeFlag struct_flags_NoRelatedSym = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_NoRelatedSym = "DistributedATS_SecurityList::NoRelatedSym"; + eprosima::fastcdr::optional type_ann_builtin_NoRelatedSym; + eprosima::fastcdr::optional ann_custom_NoRelatedSym; + CompleteTypeDetail detail_NoRelatedSym = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_NoRelatedSym, ann_custom_NoRelatedSym, type_name_NoRelatedSym.to_string()); + CompleteStructHeader header_NoRelatedSym; + header_NoRelatedSym = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_NoRelatedSym); + CompleteStructMemberSeq member_seq_NoRelatedSym; + { + TypeIdentifierPair type_ids_Symbol; + ReturnCode_t return_code_Symbol {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Symbol = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Symbol); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Symbol) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Symbol)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Symbol = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Symbol = 0x00000000; + bool common_Symbol_ec {false}; + CommonStructMember common_Symbol {TypeObjectUtils::build_common_struct_member(member_id_Symbol, member_flags_Symbol, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Symbol, common_Symbol_ec))}; + if (!common_Symbol_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Symbol member TypeIdentifier inconsistent."); + return; + } + MemberName name_Symbol = "Symbol"; + eprosima::fastcdr::optional member_ann_builtin_Symbol; + ann_custom_NoRelatedSym.reset(); + CompleteMemberDetail detail_Symbol = TypeObjectUtils::build_complete_member_detail(name_Symbol, member_ann_builtin_Symbol, ann_custom_NoRelatedSym); + CompleteStructMember member_Symbol = TypeObjectUtils::build_complete_struct_member(common_Symbol, detail_Symbol); + TypeObjectUtils::add_complete_struct_member(member_seq_NoRelatedSym, member_Symbol); + } + { + TypeIdentifierPair type_ids_SecurityExchange; + ReturnCode_t return_code_SecurityExchange {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityExchange = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityExchange); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityExchange) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityExchange)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityExchange = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityExchange = 0x00000001; + bool common_SecurityExchange_ec {false}; + CommonStructMember common_SecurityExchange {TypeObjectUtils::build_common_struct_member(member_id_SecurityExchange, member_flags_SecurityExchange, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityExchange, common_SecurityExchange_ec))}; + if (!common_SecurityExchange_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityExchange member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityExchange = "SecurityExchange"; + eprosima::fastcdr::optional member_ann_builtin_SecurityExchange; + ann_custom_NoRelatedSym.reset(); + CompleteMemberDetail detail_SecurityExchange = TypeObjectUtils::build_complete_member_detail(name_SecurityExchange, member_ann_builtin_SecurityExchange, ann_custom_NoRelatedSym); + CompleteStructMember member_SecurityExchange = TypeObjectUtils::build_complete_struct_member(common_SecurityExchange, detail_SecurityExchange); + TypeObjectUtils::add_complete_struct_member(member_seq_NoRelatedSym, member_SecurityExchange); + } + { + TypeIdentifierPair type_ids_Text; + ReturnCode_t return_code_Text {eprosima::fastdds::dds::RETCODE_OK}; + return_code_Text = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_Text); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_Text) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_Text)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_Text = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_Text = 0x00000002; + bool common_Text_ec {false}; + CommonStructMember common_Text {TypeObjectUtils::build_common_struct_member(member_id_Text, member_flags_Text, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_Text, common_Text_ec))}; + if (!common_Text_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure Text member TypeIdentifier inconsistent."); + return; + } + MemberName name_Text = "Text"; + eprosima::fastcdr::optional member_ann_builtin_Text; + ann_custom_NoRelatedSym.reset(); + CompleteMemberDetail detail_Text = TypeObjectUtils::build_complete_member_detail(name_Text, member_ann_builtin_Text, ann_custom_NoRelatedSym); + CompleteStructMember member_Text = TypeObjectUtils::build_complete_struct_member(common_Text, detail_Text); + TypeObjectUtils::add_complete_struct_member(member_seq_NoRelatedSym, member_Text); + } + CompleteStructType struct_type_NoRelatedSym = TypeObjectUtils::build_complete_struct_type(struct_flags_NoRelatedSym, header_NoRelatedSym, member_seq_NoRelatedSym); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_NoRelatedSym, type_name_NoRelatedSym.to_string(), type_ids_NoRelatedSym)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_SecurityList::NoRelatedSym already registered in TypeObjectRegistry for a different type."); + } + } +} +void register_NoRelatedSymSeq_type_identifier( + TypeIdentifierPair& type_ids_NoRelatedSymSeq) +{ + ReturnCode_t return_code_NoRelatedSymSeq {eprosima::fastdds::dds::RETCODE_OK}; + return_code_NoRelatedSymSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_SecurityList::NoRelatedSymSeq", type_ids_NoRelatedSymSeq); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoRelatedSymSeq) + { + AliasTypeFlag alias_flags_NoRelatedSymSeq = 0; + QualifiedTypeName type_name_NoRelatedSymSeq = "DistributedATS_SecurityList::NoRelatedSymSeq"; + eprosima::fastcdr::optional type_ann_builtin_NoRelatedSymSeq; + eprosima::fastcdr::optional ann_custom_NoRelatedSymSeq; + CompleteTypeDetail detail_NoRelatedSymSeq = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_NoRelatedSymSeq, ann_custom_NoRelatedSymSeq, type_name_NoRelatedSymSeq.to_string()); + CompleteAliasHeader header_NoRelatedSymSeq = TypeObjectUtils::build_complete_alias_header(detail_NoRelatedSymSeq); + AliasMemberFlag related_flags_NoRelatedSymSeq = 0; + return_code_NoRelatedSymSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded", type_ids_NoRelatedSymSeq); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoRelatedSymSeq) + { + return_code_NoRelatedSymSeq = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_SecurityList::NoRelatedSym", type_ids_NoRelatedSymSeq); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_NoRelatedSymSeq) + { + DistributedATS_SecurityList::register_NoRelatedSym_type_identifier(type_ids_NoRelatedSymSeq); + } + bool element_identifier_anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded_ec {false}; + TypeIdentifier* element_identifier_anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded {new TypeIdentifier(TypeObjectUtils::retrieve_complete_type_identifier(type_ids_NoRelatedSymSeq, element_identifier_anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded_ec))}; + if (!element_identifier_anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Sequence element TypeIdentifier inconsistent."); + return; + } + EquivalenceKind equiv_kind_anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded = EK_COMPLETE; + if (TK_NONE == type_ids_NoRelatedSymSeq.type_identifier2()._d()) + { + equiv_kind_anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded = EK_BOTH; + } + CollectionElementFlag element_flags_anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded = 0; + PlainCollectionHeader header_anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded = TypeObjectUtils::build_plain_collection_header(equiv_kind_anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded, element_flags_anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded); + { + SBound bound = 0; + PlainSequenceSElemDefn seq_sdefn = TypeObjectUtils::build_plain_sequence_s_elem_defn(header_anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded, bound, + eprosima::fastcdr::external(element_identifier_anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded)); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_sequence_type_identifier(seq_sdefn, "anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded", type_ids_NoRelatedSymSeq)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_sequence_DistributedATS_SecurityList_NoRelatedSym_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + bool common_NoRelatedSymSeq_ec {false}; + CommonAliasBody common_NoRelatedSymSeq {TypeObjectUtils::build_common_alias_body(related_flags_NoRelatedSymSeq, + TypeObjectUtils::retrieve_complete_type_identifier(type_ids_NoRelatedSymSeq, common_NoRelatedSymSeq_ec))}; + if (!common_NoRelatedSymSeq_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "DistributedATS_SecurityList::NoRelatedSymSeq related TypeIdentifier inconsistent."); + return; + } + eprosima::fastcdr::optional member_ann_builtin_NoRelatedSymSeq; + ann_custom_NoRelatedSymSeq.reset(); + CompleteAliasBody body_NoRelatedSymSeq = TypeObjectUtils::build_complete_alias_body(common_NoRelatedSymSeq, + member_ann_builtin_NoRelatedSymSeq, ann_custom_NoRelatedSymSeq); + CompleteAliasType alias_type_NoRelatedSymSeq = TypeObjectUtils::build_complete_alias_type(alias_flags_NoRelatedSymSeq, + header_NoRelatedSymSeq, body_NoRelatedSymSeq); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_alias_type_object(alias_type_NoRelatedSymSeq, + type_name_NoRelatedSymSeq.to_string(), type_ids_NoRelatedSymSeq)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_SecurityList::NoRelatedSymSeq already registered in TypeObjectRegistry for a different type."); + } + } +} + +// TypeIdentifier is returned by reference: dependent structures/unions are registered in this same method +void register_SecurityList_type_identifier( + TypeIdentifierPair& type_ids_SecurityList) +{ + + ReturnCode_t return_code_SecurityList {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityList = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_SecurityList::SecurityList", type_ids_SecurityList); + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityList) + { + StructTypeFlag struct_flags_SecurityList = TypeObjectUtils::build_struct_type_flag(eprosima::fastdds::dds::xtypes::ExtensibilityKind::APPENDABLE, + false, false); + QualifiedTypeName type_name_SecurityList = "DistributedATS_SecurityList::SecurityList"; + eprosima::fastcdr::optional type_ann_builtin_SecurityList; + eprosima::fastcdr::optional ann_custom_SecurityList; + CompleteTypeDetail detail_SecurityList = TypeObjectUtils::build_complete_type_detail(type_ann_builtin_SecurityList, ann_custom_SecurityList, type_name_SecurityList.to_string()); + CompleteStructHeader header_SecurityList; + header_SecurityList = TypeObjectUtils::build_complete_struct_header(TypeIdentifier(), detail_SecurityList); + CompleteStructMemberSeq member_seq_SecurityList; + { + TypeIdentifierPair type_ids_fix_header; + ReturnCode_t return_code_fix_header {eprosima::fastdds::dds::RETCODE_OK}; + return_code_fix_header = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS::Header", type_ids_fix_header); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_fix_header) + { + DistributedATS::register_Header_type_identifier(type_ids_fix_header); + } + StructMemberFlag member_flags_fix_header = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_fix_header = 0x00000000; + bool common_fix_header_ec {false}; + CommonStructMember common_fix_header {TypeObjectUtils::build_common_struct_member(member_id_fix_header, member_flags_fix_header, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_fix_header, common_fix_header_ec))}; + if (!common_fix_header_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure fix_header member TypeIdentifier inconsistent."); + return; + } + MemberName name_fix_header = "fix_header"; + eprosima::fastcdr::optional member_ann_builtin_fix_header; + ann_custom_SecurityList.reset(); + CompleteMemberDetail detail_fix_header = TypeObjectUtils::build_complete_member_detail(name_fix_header, member_ann_builtin_fix_header, ann_custom_SecurityList); + CompleteStructMember member_fix_header = TypeObjectUtils::build_complete_struct_member(common_fix_header, detail_fix_header); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityList, member_fix_header); + } + { + TypeIdentifierPair type_ids_DATS_Source; + ReturnCode_t return_code_DATS_Source {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Source = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Source); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Source) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Source)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Source = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Source = 0x00000001; + bool common_DATS_Source_ec {false}; + CommonStructMember common_DATS_Source {TypeObjectUtils::build_common_struct_member(member_id_DATS_Source, member_flags_DATS_Source, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Source, common_DATS_Source_ec))}; + if (!common_DATS_Source_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Source member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Source = "DATS_Source"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Source; + ann_custom_SecurityList.reset(); + CompleteMemberDetail detail_DATS_Source = TypeObjectUtils::build_complete_member_detail(name_DATS_Source, member_ann_builtin_DATS_Source, ann_custom_SecurityList); + CompleteStructMember member_DATS_Source = TypeObjectUtils::build_complete_struct_member(common_DATS_Source, detail_DATS_Source); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityList, member_DATS_Source); + } + { + TypeIdentifierPair type_ids_DATS_Destination; + ReturnCode_t return_code_DATS_Destination {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_Destination = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_Destination); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_Destination) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_Destination)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_Destination = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_Destination = 0x00000002; + bool common_DATS_Destination_ec {false}; + CommonStructMember common_DATS_Destination {TypeObjectUtils::build_common_struct_member(member_id_DATS_Destination, member_flags_DATS_Destination, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_Destination, common_DATS_Destination_ec))}; + if (!common_DATS_Destination_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_Destination member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_Destination = "DATS_Destination"; + eprosima::fastcdr::optional member_ann_builtin_DATS_Destination; + ann_custom_SecurityList.reset(); + CompleteMemberDetail detail_DATS_Destination = TypeObjectUtils::build_complete_member_detail(name_DATS_Destination, member_ann_builtin_DATS_Destination, ann_custom_SecurityList); + CompleteStructMember member_DATS_Destination = TypeObjectUtils::build_complete_struct_member(common_DATS_Destination, detail_DATS_Destination); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityList, member_DATS_Destination); + } + { + TypeIdentifierPair type_ids_DATS_SourceUser; + ReturnCode_t return_code_DATS_SourceUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_SourceUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_SourceUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_SourceUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_SourceUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_SourceUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_SourceUser = 0x00000003; + bool common_DATS_SourceUser_ec {false}; + CommonStructMember common_DATS_SourceUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_SourceUser, member_flags_DATS_SourceUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_SourceUser, common_DATS_SourceUser_ec))}; + if (!common_DATS_SourceUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_SourceUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_SourceUser = "DATS_SourceUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_SourceUser; + ann_custom_SecurityList.reset(); + CompleteMemberDetail detail_DATS_SourceUser = TypeObjectUtils::build_complete_member_detail(name_DATS_SourceUser, member_ann_builtin_DATS_SourceUser, ann_custom_SecurityList); + CompleteStructMember member_DATS_SourceUser = TypeObjectUtils::build_complete_struct_member(common_DATS_SourceUser, detail_DATS_SourceUser); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityList, member_DATS_SourceUser); + } + { + TypeIdentifierPair type_ids_DATS_DestinationUser; + ReturnCode_t return_code_DATS_DestinationUser {eprosima::fastdds::dds::RETCODE_OK}; + return_code_DATS_DestinationUser = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_DATS_DestinationUser); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_DATS_DestinationUser) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_DATS_DestinationUser)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_DATS_DestinationUser = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_DATS_DestinationUser = 0x00000004; + bool common_DATS_DestinationUser_ec {false}; + CommonStructMember common_DATS_DestinationUser {TypeObjectUtils::build_common_struct_member(member_id_DATS_DestinationUser, member_flags_DATS_DestinationUser, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_DATS_DestinationUser, common_DATS_DestinationUser_ec))}; + if (!common_DATS_DestinationUser_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure DATS_DestinationUser member TypeIdentifier inconsistent."); + return; + } + MemberName name_DATS_DestinationUser = "DATS_DestinationUser"; + eprosima::fastcdr::optional member_ann_builtin_DATS_DestinationUser; + ann_custom_SecurityList.reset(); + CompleteMemberDetail detail_DATS_DestinationUser = TypeObjectUtils::build_complete_member_detail(name_DATS_DestinationUser, member_ann_builtin_DATS_DestinationUser, ann_custom_SecurityList); + CompleteStructMember member_DATS_DestinationUser = TypeObjectUtils::build_complete_struct_member(common_DATS_DestinationUser, detail_DATS_DestinationUser); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityList, member_DATS_DestinationUser); + } + { + TypeIdentifierPair type_ids_SecurityReqID; + ReturnCode_t return_code_SecurityReqID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityReqID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityReqID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityReqID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityReqID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityReqID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityReqID = 0x00000005; + bool common_SecurityReqID_ec {false}; + CommonStructMember common_SecurityReqID {TypeObjectUtils::build_common_struct_member(member_id_SecurityReqID, member_flags_SecurityReqID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityReqID, common_SecurityReqID_ec))}; + if (!common_SecurityReqID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityReqID member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityReqID = "SecurityReqID"; + eprosima::fastcdr::optional member_ann_builtin_SecurityReqID; + ann_custom_SecurityList.reset(); + CompleteMemberDetail detail_SecurityReqID = TypeObjectUtils::build_complete_member_detail(name_SecurityReqID, member_ann_builtin_SecurityReqID, ann_custom_SecurityList); + CompleteStructMember member_SecurityReqID = TypeObjectUtils::build_complete_struct_member(common_SecurityReqID, detail_SecurityReqID); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityList, member_SecurityReqID); + } + { + TypeIdentifierPair type_ids_SecurityResponseID; + ReturnCode_t return_code_SecurityResponseID {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityResponseID = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "anonymous_string_unbounded", type_ids_SecurityResponseID); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityResponseID) + { + { + SBound bound = 0; + StringSTypeDefn string_sdefn = TypeObjectUtils::build_string_s_type_defn(bound); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_s_string_type_identifier(string_sdefn, + "anonymous_string_unbounded", type_ids_SecurityResponseID)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "anonymous_string_unbounded already registered in TypeObjectRegistry for a different type."); + } + } + } + StructMemberFlag member_flags_SecurityResponseID = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityResponseID = 0x00000006; + bool common_SecurityResponseID_ec {false}; + CommonStructMember common_SecurityResponseID {TypeObjectUtils::build_common_struct_member(member_id_SecurityResponseID, member_flags_SecurityResponseID, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityResponseID, common_SecurityResponseID_ec))}; + if (!common_SecurityResponseID_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityResponseID member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityResponseID = "SecurityResponseID"; + eprosima::fastcdr::optional member_ann_builtin_SecurityResponseID; + ann_custom_SecurityList.reset(); + CompleteMemberDetail detail_SecurityResponseID = TypeObjectUtils::build_complete_member_detail(name_SecurityResponseID, member_ann_builtin_SecurityResponseID, ann_custom_SecurityList); + CompleteStructMember member_SecurityResponseID = TypeObjectUtils::build_complete_struct_member(common_SecurityResponseID, detail_SecurityResponseID); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityList, member_SecurityResponseID); + } + { + TypeIdentifierPair type_ids_SecurityRequestResult; + ReturnCode_t return_code_SecurityRequestResult {eprosima::fastdds::dds::RETCODE_OK}; + return_code_SecurityRequestResult = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "_int32_t", type_ids_SecurityRequestResult); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_SecurityRequestResult) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "SecurityRequestResult Structure member TypeIdentifier unknown to TypeObjectRegistry."); + return; + } + StructMemberFlag member_flags_SecurityRequestResult = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_SecurityRequestResult = 0x00000007; + bool common_SecurityRequestResult_ec {false}; + CommonStructMember common_SecurityRequestResult {TypeObjectUtils::build_common_struct_member(member_id_SecurityRequestResult, member_flags_SecurityRequestResult, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_SecurityRequestResult, common_SecurityRequestResult_ec))}; + if (!common_SecurityRequestResult_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure SecurityRequestResult member TypeIdentifier inconsistent."); + return; + } + MemberName name_SecurityRequestResult = "SecurityRequestResult"; + eprosima::fastcdr::optional member_ann_builtin_SecurityRequestResult; + ann_custom_SecurityList.reset(); + CompleteMemberDetail detail_SecurityRequestResult = TypeObjectUtils::build_complete_member_detail(name_SecurityRequestResult, member_ann_builtin_SecurityRequestResult, ann_custom_SecurityList); + CompleteStructMember member_SecurityRequestResult = TypeObjectUtils::build_complete_struct_member(common_SecurityRequestResult, detail_SecurityRequestResult); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityList, member_SecurityRequestResult); + } + { + TypeIdentifierPair type_ids_c_NoRelatedSym; + ReturnCode_t return_code_c_NoRelatedSym {eprosima::fastdds::dds::RETCODE_OK}; + return_code_c_NoRelatedSym = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->type_object_registry().get_type_identifiers( + "DistributedATS_SecurityList::NoRelatedSymSeq", type_ids_c_NoRelatedSym); + + if (eprosima::fastdds::dds::RETCODE_OK != return_code_c_NoRelatedSym) + { + DistributedATS_SecurityList::register_NoRelatedSymSeq_type_identifier(type_ids_c_NoRelatedSym); + } + StructMemberFlag member_flags_c_NoRelatedSym = TypeObjectUtils::build_struct_member_flag(eprosima::fastdds::dds::xtypes::TryConstructFailAction::DISCARD, + false, false, false, false); + MemberId member_id_c_NoRelatedSym = 0x00000008; + bool common_c_NoRelatedSym_ec {false}; + CommonStructMember common_c_NoRelatedSym {TypeObjectUtils::build_common_struct_member(member_id_c_NoRelatedSym, member_flags_c_NoRelatedSym, TypeObjectUtils::retrieve_complete_type_identifier(type_ids_c_NoRelatedSym, common_c_NoRelatedSym_ec))}; + if (!common_c_NoRelatedSym_ec) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, "Structure c_NoRelatedSym member TypeIdentifier inconsistent."); + return; + } + MemberName name_c_NoRelatedSym = "c_NoRelatedSym"; + eprosima::fastcdr::optional member_ann_builtin_c_NoRelatedSym; + ann_custom_SecurityList.reset(); + CompleteMemberDetail detail_c_NoRelatedSym = TypeObjectUtils::build_complete_member_detail(name_c_NoRelatedSym, member_ann_builtin_c_NoRelatedSym, ann_custom_SecurityList); + CompleteStructMember member_c_NoRelatedSym = TypeObjectUtils::build_complete_struct_member(common_c_NoRelatedSym, detail_c_NoRelatedSym); + TypeObjectUtils::add_complete_struct_member(member_seq_SecurityList, member_c_NoRelatedSym); + } + CompleteStructType struct_type_SecurityList = TypeObjectUtils::build_complete_struct_type(struct_flags_SecurityList, header_SecurityList, member_seq_SecurityList); + if (eprosima::fastdds::dds::RETCODE_BAD_PARAMETER == + TypeObjectUtils::build_and_register_struct_type_object(struct_type_SecurityList, type_name_SecurityList.to_string(), type_ids_SecurityList)) + { + EPROSIMA_LOG_ERROR(XTYPES_TYPE_REPRESENTATION, + "DistributedATS_SecurityList::SecurityList already registered in TypeObjectRegistry for a different type."); + } + } +} + +} // namespace DistributedATS_SecurityList + diff --git a/GenTools/idl/SecurityListTypeObjectSupport.hpp b/GenTools/idl/SecurityListTypeObjectSupport.hpp new file mode 100644 index 0000000..15e3bed --- /dev/null +++ b/GenTools/idl/SecurityListTypeObjectSupport.hpp @@ -0,0 +1,88 @@ +// 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 SecurityListTypeObjectSupport.hpp + * Header file containing the API required to register the TypeObject representation of the described types in the IDL file + * + * This file was generated by the tool fastddsgen (version: 4.1.0). + */ + +#ifndef FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLIST_TYPE_OBJECT_SUPPORT_HPP +#define FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLIST_TYPE_OBJECT_SUPPORT_HPP + +#include + +#include "HeaderTypeObjectSupport.hpp" + +#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 + +#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +namespace DistributedATS_SecurityList { +/** + * @brief Register NoRelatedSym related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_NoRelatedSym_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +/** + * @brief Register NoRelatedSymSeq related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_NoRelatedSymSeq_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + + + +/** + * @brief Register SecurityList related TypeIdentifier. + * Fully-descriptive TypeIdentifiers are directly registered. + * Hash TypeIdentifiers require to fill the TypeObject information and hash it, consequently, the TypeObject is + * indirectly registered as well. + * + * @param[out] TypeIdentifier of the registered type. + * The returned TypeIdentifier corresponds to the complete TypeIdentifier in case of hashed TypeIdentifiers. + * Invalid TypeIdentifier is returned in case of error. + */ +eProsima_user_DllExport void register_SecurityList_type_identifier( + eprosima::fastdds::dds::xtypes::TypeIdentifierPair& type_ids); + +} // namespace DistributedATS_SecurityList + + +#endif // DOXYGEN_SHOULD_SKIP_THIS_PUBLIC + +#endif // FAST_DDS_GENERATED__DISTRIBUTEDATS_SECURITYLIST_SECURITYLIST_TYPE_OBJECT_SUPPORT_HPP diff --git a/GenTools/run_fastddsgen.sh b/GenTools/run_fastddsgen.sh new file mode 100755 index 0000000..bb50155 --- /dev/null +++ b/GenTools/run_fastddsgen.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +FASTDDSGEN="${FAST_DDS_GEN_HOME}/scripts/fastddsgen" +IDL_DIR="idl" + +"$FASTDDSGEN" $IDL_DIR/Header.idl + +for idl_file in "$IDL_DIR"/*.idl; do + echo "Generating code for $idl_file..." + "$FASTDDSGEN" -replace "$idl_file" +done diff --git a/GenTools/spec/dats_requirements.xml b/GenTools/spec/dats_requirements.xml index 88082ca..9e85800 100644 --- a/GenTools/spec/dats_requirements.xml +++ b/GenTools/spec/dats_requirements.xml @@ -1,22 +1,22 @@ - - + + + - @@ -49,30 +49,26 @@ - - + + - - - - - - - - - + + + + + + - + - - + diff --git a/LICENSE.TXT b/LICENSE.TXT index 024d910..8cd8f31 100644 --- a/LICENSE.TXT +++ b/LICENSE.TXT @@ -1,7 +1,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project -that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies +that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/LatencyTest/Application.cpp b/LatencyTest/Application.cpp index 39e0ed8..14ba843 100644 --- a/LatencyTest/Application.cpp +++ b/LatencyTest/Application.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -182,13 +182,15 @@ void Application::onMessage session->logout("Done."); std::cout << "Stats:" << _min_latency << "|"<< _max_latency << "|" << _total_latency/m_number_of_orders << std::endl; } else { + std::tuple latency_stats; - uint32_t gatewayNewOrderSingleLatency = 0; - uint32_t matchingEngineLatency = 0; - uint32_t gatewayExecutionReportLatency = 0; - uint32_t roundTripLatency = 0; + m_pLatencyStatsPtr->getLatencyStats(orderID.getValue(), latency_stats); + + long gatewayNewOrderSingleLatency = std::get(latency_stats); + long matchingEngineLatency = std::get(latency_stats); + long gatewayExecutionReportLatency = std::get(latency_stats); + long roundTripLatency = std::get(latency_stats); - m_pLatencyStatsPtr->getLatencyStats(orderID.getValue(), gatewayNewOrderSingleLatency, matchingEngineLatency, gatewayExecutionReportLatency, roundTripLatency); std::cerr << "Round trip latency (Microseconds) |" << orderID << "|" << gatewayNewOrderSingleLatency << "|" diff --git a/LatencyTest/Application.h b/LatencyTest/Application.h index 563f789..23649d5 100644 --- a/LatencyTest/Application.h +++ b/LatencyTest/Application.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,8 +25,7 @@ SOFTWARE. */ -#ifndef DATS_APPLICATION_H -#define DATS_APPLICATION_H +#pragma once #include #include @@ -153,10 +152,9 @@ namespace LatencyTest std::condition_variable _login_cv; std::mutex _login_mutex; - uint32_t _min_latency {std::numeric_limits::max()}; - uint32_t _max_latency {std::numeric_limits::min()}; - uint32_t _total_latency {0}; + long _min_latency {std::numeric_limits::max()}; + long _max_latency {std::numeric_limits::min()}; + long _total_latency {0}; }; }; -#endif /* DATS_APPLICATION_H */ diff --git a/LatencyTest/CMakeLists.txt b/LatencyTest/CMakeLists.txt new file mode 100644 index 0000000..438e6d8 --- /dev/null +++ b/LatencyTest/CMakeLists.txt @@ -0,0 +1,29 @@ +cmake_minimum_required(VERSION 3.12.4) + +if(NOT CMAKE_VERSION VERSION_LESS 3.0) + cmake_policy(SET CMP0048 NEW) +endif() + +project(LatencyTest) + +# Find requirements +if(NOT fastcdr_FOUND) + find_package(fastcdr REQUIRED) +endif() + +if(NOT fastdds_FOUND) + find_package(fastdds 3 REQUIRED) +endif() + +find_package(log4cxx REQUIRED) + +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +link_directories(${CMAKE_INSTALL_PREFIX}/lib) + +file(GLOB DISTRIBUTED_ATS_LATENCY_TEST_SRC *) +add_executable(LatencyTest ${DISTRIBUTED_ATS_LATENCY_TEST_SRC}) +link_directories(DistributedATSLib quickfix log4cxx) +target_link_libraries(LatencyTest DistributedATSLib quickfix log4cxx boost_program_options) diff --git a/LatencyTest/ExecutionReportDataReaderListenerImpl.cpp b/LatencyTest/ExecutionReportDataReaderListenerImpl.cpp index 223b7c2..4db7c03 100644 --- a/LatencyTest/ExecutionReportDataReaderListenerImpl.cpp +++ b/LatencyTest/ExecutionReportDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -40,45 +40,22 @@ ExecutionReportDataReaderListenerImpl::~ExecutionReportDataReaderListenerImpl() } -void ExecutionReportDataReaderListenerImpl::on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException) +void ExecutionReportDataReaderListenerImpl::on_data_available( eprosima::fastdds::dds::DataReader* reader ) { - try - { - DistributedATS_ExecutionReport::ExecutionReportDataReader_var execution_report_dr = DistributedATS_ExecutionReport::ExecutionReportDataReader::_narrow(reader); - - if (CORBA::is_nil ( execution_report_dr.in() ) ) - { - std::cerr << "ExecutionReportDataReaderListenerImpl::on_data_available: _narrow failed." << std::endl; - ACE_OS::exit(1); - } - while( true ) - { - DistributedATS_ExecutionReport::ExecutionReport executionReport; - DDS::SampleInfo si ; - DDS::ReturnCode_t status = execution_report_dr->take_next_sample( executionReport, si ); + DistributedATS_ExecutionReport::ExecutionReport executionReport; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&executionReport, &info) == eprosima::fastdds::dds::RETCODE_OK) + { - if (status == DDS::RETCODE_OK) - { - if ( !si.valid_data ) - continue; std::cout << "DDS Received Execution Report" << std::endl; - std::string clientOrderId = executionReport.OrderID.in(); + std::string clientOrderId = executionReport.OrderID(); m_pLatencyStatsPtr->insertStats(clientOrderId, OrderHopLatency::EXECUTION_REPORT_DDS); - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logon: Error: " << status << std::endl; - } - } - - } catch (CORBA::Exception& e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); } } diff --git a/LatencyTest/ExecutionReportDataReaderListenerImpl.h b/LatencyTest/ExecutionReportDataReaderListenerImpl.h index 7f4e1f9..80ce255 100644 --- a/LatencyTest/ExecutionReportDataReaderListenerImpl.h +++ b/LatencyTest/ExecutionReportDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,20 +25,23 @@ SOFTWARE. */ -#ifndef EXECUTIONREPORTDATAREADERLISTENERIMPL_H_ -#define EXECUTIONREPORTDATAREADERLISTENERIMPL_H_ - - -#include +#pragma once #include "LatencyTest.h" #include +#include +#include +#include +#include +#include +#include + namespace LatencyTest { class ExecutionReportDataReaderListenerImpl : -public virtual OpenDDS::DCPS::LocalObject +public eprosima::fastdds::dds::DataReaderListener { public: @@ -46,8 +49,9 @@ public virtual OpenDDS::DCPS::LocalObject ExecutionReportDataReaderListenerImpl( LatencyStatsPtr pLatencyStatsPtr ) : m_pLatencyStatsPtr( pLatencyStatsPtr ) {}; - virtual void on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException); + virtual void on_data_available(eprosima::fastdds::dds::DataReader*); + /* virtual void on_requested_deadline_missed ( DDS::DataReader_ptr reader, const DDS::RequestedDeadlineMissedStatus & status) throw (CORBA::SystemException) {}; @@ -64,12 +68,10 @@ public virtual OpenDDS::DCPS::LocalObject throw (CORBA::SystemException) {}; virtual void on_sample_lost( DDS::DataReader_ptr reader, const DDS::SampleLostStatus& status) - throw (CORBA::SystemException) {}; + throw (CORBA::SystemException) {};*/ private: LatencyStatsPtr m_pLatencyStatsPtr; }; -} /* namespace FIXGateway */ - -#endif /* EXECUTIONREPORTDATAREADERLISTENERIMPL_H_ */ +} diff --git a/LatencyTest/LatencyTest.cfg b/LatencyTest/LatencyTest.cfg index 1c92593..b5ebd05 100644 --- a/LatencyTest/LatencyTest.cfg +++ b/LatencyTest/LatencyTest.cfg @@ -1,4 +1,5 @@ [DEFAULT] +BeginString=FIX.4.4 ConnectionType=initiator ReconnectInterval=30 FileStorePath=store @@ -10,7 +11,6 @@ ResetSeqNumFlag=Y ResetOnDisconnect=Y # standard config elements - [SESSION] BeginString=FIX.4.4 SenderCompID=TRADER_3 @@ -23,5 +23,4 @@ SocketConnectHost=localhost #SocketConnectHost=165.22.179.176 SocketConnectPort=15001 HeartBtInt=30 -DataDictionary=../FIXGateway/spec/FIX44.xml -#DataDictionary=/Users/mkipnis/DistributedATS/FIXGateway/spec/FIX44.xml +DataDictionary=FIX44.xml diff --git a/LatencyTest/LatencyTest.cpp b/LatencyTest/LatencyTest.cpp index c6a6d44..78e7b66 100644 --- a/LatencyTest/LatencyTest.cpp +++ b/LatencyTest/LatencyTest.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,11 +25,9 @@ SOFTWARE. */ -#include #include "NewOrderSingleDataReaderListenerImpl.h" #include "ExecutionReportDataReaderListenerImpl.h" -#include #include #include "quickfix/FileStore.h" @@ -42,79 +40,121 @@ #include #include #include +#include +#include #include "LatencyTest.h" +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + int main( int argc, char** argv ) { - if ( argc < 2 ) - { - std::cout << "usage: " << argv[ 0 ] - << " -c LatencyTest.cfg -DCPSConfigFile $DATS_HOME/Protocols/tcp.ini" << std::endl; - return 0; - } - std::string file = argv[ 1 ]; + std::string latency_test_config_file = ""; + + boost::program_options::options_description options_desc{"Options"}; + + options_desc.add_options() + ("help,h", "Help screen") + ("config,c", boost::program_options::value()->default_value(""), "Latency Test Config File"); + + boost::program_options::variables_map vm; + boost::program_options::store(parse_command_line(argc, argv, options_desc), vm); + boost::program_options::notify(vm); + + if (vm.count("help")) + std::cout << options_desc << '\n'; + else if (vm.count("config")) + latency_test_config_file = vm["config"].as(); + + if (latency_test_config_file.empty()) { + std::cerr << "Error: Config file name is not specified." << std::endl; + return -1; + } - FIX::Initiator * initiator = 0; - DDS::DomainParticipantFactory_var dpf = DDS::DomainParticipantFactory::_nil(); + FIX::Initiator * initiator = 0; try { - LatencyTest::LatencyStatsPtr latencyStatsPtr( std::make_shared() ); - - dpf = TheParticipantFactoryWithArgs(argc, argv); - - ACE_Get_Opt cmd_opts( argc, argv, ":c:" ); - - int option; - std::string quickfix_config_file = ""; + auto settings = std::make_shared(latency_test_config_file); + + //FIX::SessionID default_session_id("FIX.4.4", "DEFAULT", "DEFAULT"); + + //auto session_settings = settings->get(default_session_id); + + FIX::SessionID default_session_id = *settings->getSessions().begin(); + + std::cout << "Default Sesison ID : " << default_session_id << std::endl; + + auto dats_home = std::getenv("DATS_HOME"); + auto dats_log_home = std::getenv("DATS_LOG_HOME"); + + if ( dats_home == NULL || dats_log_home == NULL ) + throw std::runtime_error("DATS_HOME or/and DATS_LOG_HOME is not set"); + + auto default_dictionary_tmp = &settings->get(default_session_id); + const_cast(default_dictionary_tmp)->setString("DATADICTIONARY", std::string(dats_home) + "/spec/" + default_dictionary_tmp->getString("DATADICTIONARY") ); + + + LatencyTest::LatencyStatsPtr latencyStatsPtr( std::make_shared() ); + + auto participant_ptr = + std::make_shared(0, "LatencyTest"); + + participant_ptr->create_subscriber(); + participant_ptr->create_publisher(); + + + auto new_order_single_topic_topic = participant_ptr->make_topic< + DistributedATS_NewOrderSingle::NewOrderSinglePubSubType, + DistributedATS_NewOrderSingle::NewOrderSingle>( + NEW_ORDER_SINGLE_TOPIC_NAME); + + auto new_order_single_data_reader_tuple = + participant_ptr->make_data_reader_tuple(new_order_single_topic_topic, + new LatencyTest::NewOrderSingleDataReaderListenerImpl( latencyStatsPtr )); + + auto execution_report_topic_tuple = participant_ptr->make_topic< + DistributedATS_ExecutionReport::ExecutionReportPubSubType, + DistributedATS_ExecutionReport::ExecutionReport>( + EXECUTION_REPORT_TOPIC_NAME); + + auto execution_report_data_reader_tuple = participant_ptr->make_data_reader_tuple( execution_report_topic_tuple, + new LatencyTest::ExecutionReportDataReaderListenerImpl( latencyStatsPtr )); + + + LatencyTest::Application application( *settings, latencyStatsPtr ); + FIX::NullStoreFactory storeFactory; + FIX::ScreenLogFactory logFactory( *settings ); - while ( (option = cmd_opts()) != EOF ) - { - switch( option ) + try { - case 'c' : - quickfix_config_file = cmd_opts.opt_arg(); - break; + initiator = new FIX::SocketInitiator( application, storeFactory, *settings, logFactory ); + + initiator->start(); + application.run(); + initiator->stop(); + delete initiator; + } + catch ( std::exception & e ) + { + std::cout << e.what(); + delete initiator; + return 1; } - } - - distributed_ats_utils::BasicDomainParticipant participant( dpf, DISTRIBUTED_ATS_DOMAIN_ID ); - participant.createSubscriber(); - - - DDS::Topic_var new_order_single_topic = participant.createTopicAndRegisterType - < DistributedATS_NewOrderSingle::NewOrderSingleTypeSupport_var, - DistributedATS_NewOrderSingle::NewOrderSingleTypeSupportImpl > ( NEW_ORDER_SINGLE_TOPIC_NAME ); - - DDS::DataReaderListener_var newOrderSingleDataListener(new LatencyTest::NewOrderSingleDataReaderListenerImpl( latencyStatsPtr )); - - participant.createDataReaderListener( new_order_single_topic, newOrderSingleDataListener ); - - DDS::Topic_var execution_report_topic = - participant.createTopicAndRegisterType < DistributedATS_ExecutionReport::ExecutionReportTypeSupport_var, - DistributedATS_ExecutionReport::ExecutionReportTypeSupportImpl > - ( EXECUTION_REPORT_TOPIC_NAME ); - - DDS::DataReaderListener_var executionReportDataListener(new LatencyTest::ExecutionReportDataReaderListenerImpl( latencyStatsPtr )); - - participant.createDataReaderListener( execution_report_topic, executionReportDataListener ); - - FIX::SessionSettings settings( quickfix_config_file ); - - LatencyTest::Application application( settings, latencyStatsPtr ); - FIX::NullStoreFactory storeFactory; - FIX::ScreenLogFactory logFactory( settings ); - - initiator = new FIX::SocketInitiator( application, storeFactory, settings, logFactory ); - - initiator->start(); - application.run(); - initiator->stop(); - delete initiator; return 0; } diff --git a/LatencyTest/LatencyTest.h b/LatencyTest/LatencyTest.h index 07062cc..179df15 100644 --- a/LatencyTest/LatencyTest.h +++ b/LatencyTest/LatencyTest.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,86 +25,92 @@ SOFTWARE. */ -#ifndef __LATENCY_TEST_H__ -#define __LATENCY_TEST_H__ +#pragma once #include #include +#include #include +#include namespace LatencyTest { // All hops will include application and network latencies - enum OrderHopLatency + enum OrderHopLatency : int { - NEW_ORDER_SINGLE_FIX, // timestamp of order going out from LatencyTest Client + NEW_ORDER_SINGLE_FIX = 0, // timestamp of order going out from LatencyTest Client NEW_ORDER_SINGLE_DDS, // New order single converted from FIX to DDS and sent to matching engine EXECUTION_REPORT_DDS, // Execution Report produced by matching engine and published to FIX Gateway EXECUTION_REPORT_FIX // Execution Report converted from DDS to FIX and consumed by LatencyTest Client }; - typedef std::map OrderHopLatencyMap; - typedef std::shared_ptr OrderHopLatencyMapPtr; + enum OrderHopLatencyStats : int + { + FIX_NEW_ORDER_SINGLE = 0, + MATCHING_ENGINE, + DDS_EXECUTION_REPORT, + ROUND_TRIP, + }; + + + //typedef std::map OrderHopLatencyMap; + //typedef std::shared_ptr OrderHopLatencyMapPtr; struct order_latency_stats { - order_latency_stats() : _orderHopLatencyMapPtr( std::make_shared() ) + order_latency_stats() { - timeval timestamp; - memset(×tamp, 0x0, sizeof(timestamp)); - _orderHopLatencyMapPtr->emplace(OrderHopLatency::NEW_ORDER_SINGLE_FIX, timestamp); - _orderHopLatencyMapPtr->emplace(OrderHopLatency::NEW_ORDER_SINGLE_DDS, timestamp); - _orderHopLatencyMapPtr->emplace(OrderHopLatency::EXECUTION_REPORT_DDS, timestamp); - _orderHopLatencyMapPtr->emplace(OrderHopLatency::EXECUTION_REPORT_FIX, timestamp); + + std::get(_order_hop_timestamps) = std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()); + + std::get(_order_hop_timestamps) = + std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()); + + std::get(_order_hop_timestamps) = + std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()); + + std::get(_order_hop_timestamps) = + std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()); }; void insertStat( OrderHopLatency orderHopLatency ) { - FIX::Locker l( _mutex ); - timeval timestamp; - gettimeofday( ×tamp, NULL ); - (*_orderHopLatencyMapPtr)[orderHopLatency] = timestamp; + switch(orderHopLatency) { + case NEW_ORDER_SINGLE_FIX: std::get(_order_hop_timestamps) = std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()); + case NEW_ORDER_SINGLE_DDS: std::get(_order_hop_timestamps) = std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()); + case EXECUTION_REPORT_DDS: std::get(_order_hop_timestamps) = std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()); + case EXECUTION_REPORT_FIX: std::get(_order_hop_timestamps) = std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()); + } }; - void getLatencyStats( uint32_t& gatewayNewOrderSingleLatency, - uint32_t& matchingEngineLatency, - uint32_t& gatewayExecutionReportLatency, - uint32_t& roundTripLatency ) + void getLatencyStats( std::tuple& latency_tuple ) { FIX::Locker l( _mutex ); - auto new_order_single_timestamp_fix = - _orderHopLatencyMapPtr->find(OrderHopLatency::NEW_ORDER_SINGLE_FIX); - - auto new_order_single_timestamp_dds = - _orderHopLatencyMapPtr->find(OrderHopLatency::NEW_ORDER_SINGLE_DDS); + auto new_order_single_timestamp_fix = std::get(_order_hop_timestamps); + auto new_order_single_timestamp_dds = std::get(_order_hop_timestamps); + - gatewayNewOrderSingleLatency = (new_order_single_timestamp_dds->second.tv_sec - (uint32_t)new_order_single_timestamp_fix->second.tv_sec) * 1000000 + - (new_order_single_timestamp_dds->second.tv_usec - (long)new_order_single_timestamp_fix->second.tv_usec); + std::get(latency_tuple) = std::chrono::duration_cast(new_order_single_timestamp_dds - new_order_single_timestamp_fix).count(); - auto execution_report_dds = - _orderHopLatencyMapPtr->find(OrderHopLatency::EXECUTION_REPORT_DDS); + auto execution_report_dds = std::get(_order_hop_timestamps); - matchingEngineLatency = (execution_report_dds->second.tv_sec - (uint32_t)new_order_single_timestamp_dds->second.tv_sec) * 1000000 + - (execution_report_dds->second.tv_usec - (long)new_order_single_timestamp_dds->second.tv_usec); + std::get(latency_tuple) = std::chrono::duration_cast(execution_report_dds - new_order_single_timestamp_dds).count(); auto execution_report_fix = - _orderHopLatencyMapPtr->find(OrderHopLatency::EXECUTION_REPORT_FIX); - - gatewayExecutionReportLatency = (execution_report_fix->second.tv_sec - (uint32_t)execution_report_dds->second.tv_sec) * 1000000 + - (execution_report_fix->second.tv_usec - (long)execution_report_dds->second.tv_usec); + std::get(_order_hop_timestamps); + std::get(latency_tuple) = std::chrono::duration_cast(execution_report_fix - execution_report_dds).count(); - if ( matchingEngineLatency<0 ) // Fix message was recieved before dds exection report -- needs checking, might be resouce starvation if everything runs on the same box - matchingEngineLatency = gatewayExecutionReportLatency = 0; - - roundTripLatency = (execution_report_fix->second.tv_sec - (uint32_t)new_order_single_timestamp_fix->second.tv_sec) * 1000000 + - (execution_report_fix->second.tv_usec - (long)new_order_single_timestamp_fix->second.tv_usec); + std::get(latency_tuple) = std::chrono::duration_cast(execution_report_fix - new_order_single_timestamp_fix).count(); } - OrderHopLatencyMapPtr _orderHopLatencyMapPtr; + std::tuple _order_hop_timestamps; FIX::Mutex _mutex; }; @@ -135,10 +141,8 @@ namespace LatencyTest }; void getLatencyStats( const std::string& orderId, - uint32_t& gatewayNewOrderSingleLatency, - uint32_t& matchingEngineLatency, - uint32_t& gatewayExecutionReportLatency, - uint32_t& roundTripLatency) + std::tuple& latency_tuple + ) { FIX::Locker l( _mutex ); @@ -146,10 +150,7 @@ namespace LatencyTest if ( latencyStats != _orderLatencyStatsMapPtr->end() ) { - latencyStats->second->getLatencyStats( gatewayNewOrderSingleLatency, - matchingEngineLatency, - gatewayExecutionReportLatency, - roundTripLatency ); + latencyStats->second->getLatencyStats( latency_tuple ); } } @@ -160,5 +161,4 @@ namespace LatencyTest typedef std::shared_ptr LatencyStatsPtr; }; -#endif diff --git a/LatencyTest/LatencyTest.mpc b/LatencyTest/LatencyTest.mpc deleted file mode 100644 index 2fc01f7..0000000 --- a/LatencyTest/LatencyTest.mpc +++ /dev/null @@ -1,31 +0,0 @@ -project(LatencyTest) : dcpsexe, dcps_tcp, svc_utils { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - requires += tao_orbsvcs - after += Svc_Utils NewOrderSingle ExecutionReport - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - exename = LatencyTest - requires += tao_orbsvcs - verbatim(gnuace, local) { - CPPFLAGS += -O3 - } - - includes += $(TAO_ROOT)/orbsvcs $(QUICKFIX_HOME)/include $(DATS_HOME)/GenTools/idl/ $(DATS_HOME)/Common - libpaths += $(QUICKFIX_HOME)/lib $(DATS_HOME)/GenTools/idl/ - - after += Svc_Utils - - libs += quickfix NewOrderSingle ExecutionReport - - Source_Files { - LatencyTest.cpp - Application.cpp - NewOrderSingleDataReaderListenerImpl.cpp - ExecutionReportDataReaderListenerImpl.cpp - } -} diff --git a/LatencyTest/NewOrderSingleDataReaderListenerImpl.cpp b/LatencyTest/NewOrderSingleDataReaderListenerImpl.cpp index 34476c0..54e482b 100644 --- a/LatencyTest/NewOrderSingleDataReaderListenerImpl.cpp +++ b/LatencyTest/NewOrderSingleDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -39,45 +39,23 @@ NewOrderSingleDataReaderListenerImpl::~NewOrderSingleDataReaderListenerImpl() { } /* namespace MatchingEngine */ -void NewOrderSingleDataReaderListenerImpl::on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException) +void NewOrderSingleDataReaderListenerImpl::on_data_available( eprosima::fastdds::dds::DataReader* reader) { - try + + DistributedATS_NewOrderSingle::NewOrderSingle new_order_single; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&new_order_single, &info) == eprosima::fastdds::dds::RETCODE_OK) { - DistributedATS_NewOrderSingle::NewOrderSingleDataReader_var new_order_single_dr = DistributedATS_NewOrderSingle::NewOrderSingleDataReader::_narrow(reader); - - if (CORBA::is_nil ( new_order_single_dr.in() ) ) + if (info.valid_data) { - std::cerr << "NewOrderSingleDataReaderListenerImpl::on_data_available: _narrow failed." << std::endl; - ACE_OS::exit(1); + + std::string clientOrderId = new_order_single.ClOrdID(); + + m_pLatencyStatsPtr->insertStats(clientOrderId, + OrderHopLatency::NEW_ORDER_SINGLE_DDS); + } - - while( true ) - { - DistributedATS_NewOrderSingle::NewOrderSingle new_order_single; - DDS::SampleInfo si ; - DDS::ReturnCode_t status = new_order_single_dr->take_next_sample( new_order_single, si ); - - if (status == DDS::RETCODE_OK) - { - if ( !si.valid_data ) - continue; - - std::string clientOrderId = new_order_single.ClOrdID.in(); - - m_pLatencyStatsPtr->insertStats(clientOrderId, - OrderHopLatency::NEW_ORDER_SINGLE_DDS); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logon: Error: " << status << std::endl; - } - } - - } catch (CORBA::Exception& e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); } - - } + diff --git a/LatencyTest/NewOrderSingleDataReaderListenerImpl.h b/LatencyTest/NewOrderSingleDataReaderListenerImpl.h index f9ea416..67f3cd8 100644 --- a/LatencyTest/NewOrderSingleDataReaderListenerImpl.h +++ b/LatencyTest/NewOrderSingleDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,11 +25,14 @@ SOFTWARE. */ -#ifndef NEWORDERSINGLEDATAREADERLISTENERIMPL_H_ -#define NEWORDERSINGLEDATAREADERLISTENERIMPL_H_ - -#include +#pragma once +#include +#include +#include +#include +#include +#include #include #include "LatencyTest.h" @@ -37,37 +40,18 @@ namespace LatencyTest { -class NewOrderSingleDataReaderListenerImpl : public virtual OpenDDS::DCPS::LocalObject +class NewOrderSingleDataReaderListenerImpl : + public eprosima::fastdds::dds::DataReaderListener { public: NewOrderSingleDataReaderListenerImpl( LatencyStatsPtr pLatencyStatsPtr ) : m_pLatencyStatsPtr( pLatencyStatsPtr ) {}; - virtual ~NewOrderSingleDataReaderListenerImpl(); - - virtual void on_data_available( DDS::DataReader_ptr reader) throw (CORBA::SystemException); - - virtual void on_requested_deadline_missed ( DDS::DataReader_ptr reader, const DDS::RequestedDeadlineMissedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_requested_incompatible_qos ( DDS::DataReader_ptr reader, const DDS::RequestedIncompatibleQosStatus & status) - throw (CORBA::SystemException) {}; + ~NewOrderSingleDataReaderListenerImpl() override; - virtual void on_liveliness_changed ( DDS::DataReader_ptr reader, const DDS::LivelinessChangedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_subscription_matched ( DDS::DataReader_ptr reader, const DDS::SubscriptionMatchedStatus & status) - throw (CORBA::SystemException) {}; - - virtual void on_sample_rejected( DDS::DataReader_ptr reader, const DDS::SampleRejectedStatus& status) - throw (CORBA::SystemException) {}; - - virtual void on_sample_lost( DDS::DataReader_ptr reader, const DDS::SampleLostStatus& status) - throw (CORBA::SystemException) {}; + void on_data_available( eprosima::fastdds::dds::DataReader* ) override; private: LatencyStatsPtr m_pLatencyStatsPtr; }; }; - -#endif /* NEWORDERSINGLEDATAREADERLISTENERIMPL_H_ */ diff --git a/MatchingEngine/config/sample_matching_engine.ini b/MatchingEngine/config/sample_matching_engine.ini index 04522cb..8e7d9cc 100644 --- a/MatchingEngine/config/sample_matching_engine.ini +++ b/MatchingEngine/config/sample_matching_engine.ini @@ -3,4 +3,5 @@ market_name=MARKET_Y dataservice_name=DATA_SERVICE_A [marketdata] -price_depth_pub_interval=200000 // Microseconds +#MICROSECONDS +price_depth_pub_interval=200000 diff --git a/MatchingEngine/scripts/matchingengine.sh b/MatchingEngine/scripts/matchingengine.sh index e8bbd0e..e74eecd 100755 --- a/MatchingEngine/scripts/matchingengine.sh +++ b/MatchingEngine/scripts/matchingengine.sh @@ -6,35 +6,15 @@ PRG="$0" PROGNAME=MatchingEngine CONFIG_FILE_NAME=$2 -if [ "$1" != "start" ] && [ "$1" != "stop" ] && [ "$1" != "check" ] ; -then - echo "Unsupported Command - "$1 : "Supported Commands : (start/stop/check)"; - exit 1; -fi +export LOG_FILE_NAME=$2.log -if [ -z "$CONFIG_FILE_NAME" ] -then - echo "Config File Name is not set"; - exit 1; -fi +. $DATS_HOME/dats_env.sh -#PRGDIR=`dirname "$PRG"` - -if [ -z "$BASEDIR" ] -then - BASEDIR=`cd ".." > /dev/null; pwd` -fi - -if [ ! -d "$BASEDIR/logs/" ] -then - mkdir $BASEDIR/logs/ -fi - -logfile=$BASEDIR/logs/$PROGNAME.$CONFIG_FILE_NAME.console.log +logfile=$BASEDIR_ATS/logs/$PROGNAME.$CONFIG_FILE_NAME.console.log #ldd $DATS_HOME/bin/$PROGNAME >> $logfile -PROCESS="$PROGNAME -c $BASEDIR/config/$CONFIG_FILE_NAME -DCPSConfigFile $DATS_HOME/Protocols/tcp.ini -ORBLogFile $BASEDIR/logs/$PROGNAME.$CONFIG_FILE_NAME.log" +PROCESS="$PROGNAME -c $BASEDIR_ATS/config/$CONFIG_FILE_NAME" #echo PROCESS=$PROCESS >> $logfile idn=$(id -u) diff --git a/MatchingEngine/src/CMakeLists.txt b/MatchingEngine/src/CMakeLists.txt new file mode 100644 index 0000000..c836803 --- /dev/null +++ b/MatchingEngine/src/CMakeLists.txt @@ -0,0 +1,39 @@ +cmake_minimum_required(VERSION 3.12.4) + +if(NOT CMAKE_VERSION VERSION_LESS 3.0) + cmake_policy(SET CMP0048 NEW) +endif() + +project(MatchingEngine) + +# Find requirements +if(NOT fastcdr_FOUND) + find_package(fastcdr REQUIRED) +endif() + +if(NOT fastdds_FOUND) + find_package(fastdds 3 REQUIRED) +endif() + +find_package(log4cxx REQUIRED) + +# Set C++11 +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +include_directories(${LIQUIBOOK_HOME}) +#include_directories(${QUICKFIX_INSTALL_PREFIX}/include) + +link_directories(${CMAKE_INSTALL_PREFIX}/lib) +link_directories(${QUICKFIX_INSTALL_PREFIX}/lib) + +file(GLOB DISTRIBUTED_ATS_MATCHING_ENGINE_SRC *) +add_executable(MatchingEngine ${DISTRIBUTED_ATS_MATCHING_ENGINE_SRC}) +link_directories(DistributedATSLib quickfix log4cxx boost_program_options) +target_link_libraries(MatchingEngine DistributedATSLib quickfix log4cxx boost_program_options) + +install(TARGETS MatchingEngine + PUBLIC_HEADER + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dats +) diff --git a/MatchingEngine/src/DataWriterContainer.h b/MatchingEngine/src/DataWriterContainer.h index 254d428..a476b58 100644 --- a/MatchingEngine/src/DataWriterContainer.h +++ b/MatchingEngine/src/DataWriterContainer.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,27 +25,21 @@ SOFTWARE. */ -#ifndef DataWriterContainer_h -#define DataWriterContainer_h +#pragma once -#include - -#include -#include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include -#include -#include -#include +#include +#include #include #include @@ -54,56 +48,13 @@ namespace DistributedATS { struct DataWriterContainer { - void setExecutionReportDataWriter( - DistributedATS_ExecutionReport::ExecutionReportDataWriter_var &execution_report_dw) { - _execution_report_dw = execution_report_dw; - } - - void setMarketDataIncrementalRefreshDataWriter( - DistributedATS_MarketDataIncrementalRefresh:: - MarketDataIncrementalRefreshDataWriter_var - &marketdata_incremental_refresh_dw) { - _marketdata_incremental_refresh_dw = marketdata_incremental_refresh_dw; - } - - void setOrderCancelRejectDataWriter( - DistributedATS_OrderCancelReject::OrderCancelRejectDataWriter_var - &order_cancel_reject_dw) { - _order_cancel_reject_dw = order_cancel_reject_dw; - } - - void setOrderMassCancelReportDataWriter( - DistributedATS_OrderMassCancelReport::OrderMassCancelReportDataWriter_var - &order_mass_cancel_report_dw) { - _order_mass_cancel_report_dw = order_mass_cancel_report_dw; - } - - void setSecurityListRequestDataWriter( - DistributedATS_SecurityListRequest::SecurityListRequestDataWriter_var - &security_list_request_dw) { - _security_list_request_dw = security_list_request_dw; - } - - void setMarketDataRequestDataWriter( - DistributedATS_MarketDataRequest::MarketDataRequestDataWriter_var - &market_date_request_dw) { - _market_date_request_dw = market_date_request_dw; - } - - DistributedATS_ExecutionReport::ExecutionReportDataWriter_var _execution_report_dw; - DistributedATS_OrderCancelReject::OrderCancelRejectDataWriter_var -_order_cancel_reject_dw; - DistributedATS_OrderMassCancelReport::OrderMassCancelReportDataWriter_var -_order_mass_cancel_report_dw; - DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefreshDataWriter_var -_marketdata_incremental_refresh_dw; - DistributedATS_SecurityListRequest::SecurityListRequestDataWriter_var -_security_list_request_dw; - DistributedATS_MarketDataRequest::MarketDataRequestDataWriter_var -_market_date_request_dw; + distributed_ats_utils::data_writer_ptr execution_report_dw; + distributed_ats_utils::data_writer_ptr order_cancel_reject_dw; + distributed_ats_utils::data_writer_ptr order_mass_cancel_report_dw; + distributed_ats_utils::data_writer_ptr market_data_incremental_refresh_dw; + distributed_ats_utils::data_writer_ptr security_list_request_dw; + distributed_ats_utils::data_writer_ptr market_data_request_dw; }; typedef std::shared_ptr DataWriterContainerPtr; }; - -#endif diff --git a/MatchingEngine/src/Market.cpp b/MatchingEngine/src/Market.cpp index 03aea26..6d826f5 100644 --- a/MatchingEngine/src/Market.cpp +++ b/MatchingEngine/src/Market.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,6 +25,7 @@ SOFTWARE. */ +#include #include "Market.h" #include "OrderException.h" @@ -38,6 +39,10 @@ #include #include #include +#include + + + namespace DistributedATS { @@ -63,27 +68,27 @@ void Market::populatePriceLevelDepth( *marketDataRefresh) { DistributedATS_MarketDataIncrementalRefresh::NoMDEntries mdEntry; - mdEntry.Symbol = CORBA::string_dup(symbol.c_str()); - mdEntry.SecurityExchange = CORBA::string_dup(market->getMarketName().c_str()); - mdEntry.MDUpdateAction = '0'; + mdEntry.Symbol(symbol); + mdEntry.SecurityExchange(market->getMarketName()); + mdEntry.MDUpdateAction('0'); uint16_t md_index = 0; auto pos = depth.bids(); while (pos != depth.end()) { - mdEntry.MDEntrySize = pos->aggregate_qty(); + mdEntry.MDEntrySize(pos->aggregate_qty()); - if (mdEntry.MDEntrySize == 0) - mdEntry.MDEntryPx = 0; + if (mdEntry.MDEntrySize() == 0) + mdEntry.MDEntryPx(0); else - mdEntry.MDEntryPx = pos->price(); + mdEntry.MDEntryPx(pos->price()); - mdEntry.MDEntrySize = pos->aggregate_qty(); - mdEntry.MDEntryType = md_index < MARKET_DATA_PRICE_DEPTH ? FIX::MDEntryType_BID - : FIX::MDEntryType_OFFER; + mdEntry.MDEntrySize(pos->aggregate_qty()); + mdEntry.MDEntryType(md_index < MARKET_DATA_PRICE_DEPTH ? FIX::MDEntryType_BID + : FIX::MDEntryType_OFFER); - marketDataRefresh->c_NoMDEntries[md_index++] = mdEntry; + marketDataRefresh->c_NoMDEntries()[md_index++] = mdEntry; pos++; }; @@ -117,78 +122,66 @@ bool Market::submit(const OrderBookPtr &book, const OrderPtr &order) { return true; } -void Market::publishSecurityListRequest() { +void Market::publishSecurityListRequest( eprosima::fastdds::dds::DataWriter* dwr ) +{ DistributedATS_SecurityListRequest::SecurityListRequest securityListRequest; - securityListRequest.m_Header.TargetCompID = - CORBA::string_dup("REF_DATA_SERVICE"); - securityListRequest.m_Header.SenderCompID = - CORBA::string_dup(getMarketName().c_str()); - securityListRequest.m_Header.TargetSubID = - CORBA::string_dup(_dataServiceName.c_str()); - - LoggerHelper::log_debug( - securityListRequest, "SecurityListRequest"); - - int ret = dataWriterContainerPtr_->_security_list_request_dw->write(securityListRequest, NULL); - - if (ret != DDS::RETCODE_OK) { - ACE_ERROR( - (LM_ERROR, - ACE_TEXT("(%P|%t) ERROR: SecurityListRequest write returned %d.\n"), - ret)); - } -} + + securityListRequest.DATS_Destination("DATA_SERVICE"); + securityListRequest.DATS_DestinationUser(_dataServiceName); + securityListRequest.DATS_Source("MATCHINE_ENGINE"); + securityListRequest.DATS_SourceUser(getMarketName()); -void Market::publishMarketDataRequest() { - DistributedATS_MarketDataRequest::MarketDataRequest marketDataRequest; - marketDataRequest.m_Header.TargetCompID = CORBA::string_dup("DATA_SERVICE"); - marketDataRequest.m_Header.SenderCompID = - CORBA::string_dup(getMarketName().c_str()); - marketDataRequest.m_Header.TargetSubID = - CORBA::string_dup(_dataServiceName.c_str()); + LoggerHelper::log_info(logger,securityListRequest, "SecurityListRequest"); - marketDataRequest.c_NoMDEntryTypes.length(1); - marketDataRequest.c_NoMDEntryTypes[0].MDEntryType = - FIX::MDEntryType_TRADE; // Last trade price + auto ret = dwr->write(&securityListRequest); + + if (!ret) { + LOG4CXX_ERROR(logger, "SecurityListRequest write returned : " << ret); + } +} - marketDataRequest.c_NoRelatedSym.length((int)books_.size()); +void Market::publishMarketDataRequest() +{ + DistributedATS_MarketDataRequest::MarketDataRequest marketDataRequest; + + marketDataRequest.DATS_Destination("DATA_SERVICE"); + marketDataRequest.DATS_DestinationUser(_dataServiceName); + marketDataRequest.DATS_Source("MATCHING_ENGINE"); + marketDataRequest.DATS_SourceUser(getMarketName()); - int index = 0; - for (auto &book : books_) { - std::cout << "Need To Publish Market Data Request for Book" << book.first - << std::endl; - marketDataRequest.c_NoRelatedSym[index].Symbol = - CORBA::string_dup(book.first.c_str()); - marketDataRequest.c_NoRelatedSym[index].SecurityExchange = - CORBA::string_dup(getMarketName().c_str()); + marketDataRequest.c_NoMDEntryTypes().resize(1); + marketDataRequest.c_NoMDEntryTypes()[0].MDEntryType(FIX::MDEntryType_TRADE); // Last trade price - index++; - } + marketDataRequest.c_NoRelatedSym().resize(books_.size()); - LoggerHelper::log_debug( - marketDataRequest, "MarketDataRequest"); + int index = 0; + for (auto &book : books_) + { + marketDataRequest.c_NoRelatedSym()[index].Symbol(book.first); + marketDataRequest.c_NoRelatedSym()[index].SecurityExchange(getMarketName()); + index++; + } - int ret = dataWriterContainerPtr_->_market_date_request_dw->write(marketDataRequest, NULL); + LoggerHelper::log_info(logger,marketDataRequest, "MarketDataRequest"); - if (ret != DDS::RETCODE_OK) { - ACE_ERROR( - (LM_ERROR, - ACE_TEXT("(%P|%t) ERROR: MarketDataRequest write returned %d.\n"), - ret)); - } + bool ret = dataWriterContainerPtr_->market_data_request_dw->write(&marketDataRequest); + + if (!ret) + { + LOG4CXX_ERROR(logger, "MarketDataRequest write returned : " << ret); + } } bool Market::cancel_order(const OrderBookPtr &book, const std::string &counter_party, - const std::string &client_order_id) { + const std::string &client_order_id) +{ auto contra_party_orders = orders_.find(counter_party); - if (contra_party_orders == orders_.end()) { + if (contra_party_orders == orders_.end()) + { std::cerr << "Order for given counter party not found : " << counter_party << std::endl; - return false; }; @@ -292,68 +285,61 @@ OrderBookPtr Market::findBook(const std::string &symbol) { return result; } -void Market::publishExecutionReport( - DistributedATS_ExecutionReport::ExecutionReport &executionReport) { - executionReport.ExecID = getNextExecutionReportID().c_str(); +void Market::publishExecutionReport(DistributedATS_ExecutionReport::ExecutionReport &executionReport) +{ - LoggerHelper::log_debug( + executionReport.ExecID(getNextExecutionReportID()); + LoggerHelper::log_debug(logger, executionReport, "ExecutionReport"); - int ret = dataWriterContainerPtr_->_execution_report_dw->write(executionReport, NULL); - - if (ret != DDS::RETCODE_OK) { - ACE_ERROR((LM_ERROR, - ACE_TEXT("(%P|%t) ERROR: Execution Report write returned %d.\n"), - ret)); - } + bool ret = dataWriterContainerPtr_->execution_report_dw->write(&executionReport); + + if (!ret) + { + LOG4CXX_ERROR(logger, "Execution Report write returned : " << ret); + } } -void Market::publishOrderMassCancelReport( - DistributedATS_OrderMassCancelReport::OrderMassCancelReport &orderMassCancelReport) { +void Market::publishOrderMassCancelReport(DistributedATS_OrderMassCancelReport::OrderMassCancelReport &orderMassCancelReport) +{ - LoggerHelper::log_debug( - orderMassCancelReport, "OrderMassCancelReport"); + LoggerHelper::log_debug(logger, orderMassCancelReport, "OrderMassCancelReport"); - int ret = dataWriterContainerPtr_->_order_mass_cancel_report_dw->write(orderMassCancelReport, NULL); + bool ret = dataWriterContainerPtr_->order_mass_cancel_report_dw->write(&orderMassCancelReport); + + if (!ret) + { + LOG4CXX_ERROR(logger, "Order Mass Cancel Report write returned: " << ret); + } - if (ret != DDS::RETCODE_OK) { - ACE_ERROR( - (LM_ERROR, - ACE_TEXT( - "(%P|%t) ERROR: Order Mass Cancel Report write returned %d.\n"), - ret)); - } } void Market::publishOrderCancelReject( DistributedATS_OrderCancelReject::OrderCancelReject &orderCancelReject) { - LoggerHelper::log_debug( - orderCancelReject, "OrderCancelReject"); + LoggerHelper::log_debug(logger, orderCancelReject, "OrderCancelReject"); - int ret = dataWriterContainerPtr_->_order_cancel_reject_dw->write(orderCancelReject, NULL); + bool ret = dataWriterContainerPtr_->order_cancel_reject_dw->write(&orderCancelReject); + + if (ret) + { + LOG4CXX_ERROR(logger, "Order Cancel Reject write returned: " << ret); + } - if (ret != DDS::RETCODE_OK) { - ACE_ERROR( - (LM_ERROR, - ACE_TEXT("(%P|%t) ERROR: Order Cancel Reject write returned %d.\n"), - ret)); - } } ///////////////////////////////////// // Implement OrderListener interface -void Market::on_accept(const OrderPtr &order) { - order->onAccepted(); +void Market::on_accept(const OrderPtr &order) +{ + order->onAccepted(); DistributedATS_ExecutionReport::ExecutionReport executionReport; - order->populateExecutionReport(executionReport, FIX::ExecType_NEW); + order->populateExecutionReport(executionReport, FIX::ExecType_NEW); - publishExecutionReport(executionReport); + publishExecutionReport(executionReport); } void Market::on_reject(const OrderPtr &order, const char *reason) { @@ -386,9 +372,15 @@ void Market::on_fill(const OrderPtr &order, const OrderPtr &matched_order, else matched_order->populateExecutionReport(executionReportMatched, FIX::ExecType_PARTIAL_FILL); + + auto last_px = fill_cost / fill_qty; - executionReport.LastPx = executionReportMatched.LastPx = fill_cost / fill_qty; - executionReport.LastQty = executionReportMatched.LastQty = fill_qty; + executionReport.LastPx(last_px); + executionReportMatched.LastPx(last_px); + + + executionReport.LastQty(fill_qty); + executionReportMatched.LastQty(fill_qty); publishExecutionReport(executionReport); publishExecutionReport(executionReportMatched); @@ -436,17 +428,21 @@ void Market::on_bbo_change(const DepthOrderBook *book, const BookDepth *depth) { void Market::on_depth_change(const DepthOrderBook *book, const BookDepth *depth) { - DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh - *marketDataRefresh = - new DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh(); + + auto md_update = std::make_shared(); + md_update->symbol = book->symbol(); - marketDataRefresh->m_Header.SenderCompID = - CORBA::string_dup("MATCHING_ENGINE"); - marketDataRefresh->m_Header.MsgType = CORBA::string_dup("X"); + md_update->priceDepth.DATS_Source("MATCHING_ENGINE"); + md_update->priceDepth.fix_header().MsgType("X"); - marketDataRefresh->c_NoMDEntries.length(15); + md_update->priceDepth.c_NoMDEntries().resize(15); - populatePriceLevelDepth(book->symbol(), this, *depth, marketDataRefresh); + populatePriceLevelDepth(book->symbol(), this, *depth, &md_update->priceDepth); + + std::stringstream ss; + MarketDataIncrementalRefreshLogger::log(ss, md_update->priceDepth); + LOG4CXX_INFO(logger, "MarketDataIncrementalRefresh : [" << ss.str() << "]"); + std::cout << "Update : " << ss.str() << std::endl; int market_data_index = MARKET_DATA_PRICE_DEPTH * 2; // bids and asks @@ -459,48 +455,41 @@ void Market::on_depth_change(const DepthOrderBook *book, DistributedATS_MarketDataIncrementalRefresh::NoMDEntries mdEntry; set_market_data_stats_entry( - marketDataRefresh->c_NoMDEntries[market_data_index++], + md_update->priceDepth.c_NoMDEntries()[market_data_index++], getMarketName(), book->symbol(), FIX::MDUpdateAction_NEW, FIX::MDEntryType_TRADE, book->market_price(), 0); set_market_data_stats_entry( - marketDataRefresh->c_NoMDEntries[market_data_index++], + md_update->priceDepth.c_NoMDEntries()[market_data_index++], getMarketName(), book->symbol(), FIX::MDUpdateAction_NEW, FIX::MDEntryType_TRADE_VOLUME, 0, current_stats->second->volume); set_market_data_stats_entry( - marketDataRefresh->c_NoMDEntries[market_data_index++], + md_update->priceDepth.c_NoMDEntries()[market_data_index++], getMarketName(), book->symbol(), FIX::MDUpdateAction_NEW, FIX::MDEntryType_OPENING_PRICE, current_stats->second->open, 0); set_market_data_stats_entry( - marketDataRefresh->c_NoMDEntries[market_data_index++], + md_update->priceDepth.c_NoMDEntries()[market_data_index++], getMarketName(), book->symbol(), FIX::MDUpdateAction_NEW, FIX::MDEntryType_TRADING_SESSION_LOW_PRICE, current_stats->second->low, 0); set_market_data_stats_entry( - marketDataRefresh->c_NoMDEntries[market_data_index++], + md_update->priceDepth.c_NoMDEntries()[market_data_index++], getMarketName(), book->symbol(), FIX::MDUpdateAction_NEW, FIX::MDEntryType_TRADING_SESSION_HIGH_PRICE, current_stats->second->high, 0); } else { set_market_data_stats_entry( - marketDataRefresh->c_NoMDEntries[market_data_index++], + md_update->priceDepth.c_NoMDEntries()[market_data_index++], getMarketName(), book->symbol(), FIX::MDUpdateAction_NEW, FIX::MDEntryType_OPENING_PRICE, current_stats->second->open, 0); } } - market_data_update *mdUpdate = new market_data_update(); - mdUpdate->symbol = book->symbol(); - mdUpdate->priceDepth = marketDataRefresh; - - ACE_Message_Block *msg = - new ACE_Message_Block((char *)mdUpdate, sizeof(mdUpdate)); - - _price_depth_publisher_queue_ptr->enqueue_tail(msg); + _price_depth_publisher_queue_ptr->push(md_update); } void Market::cancel_all_orders() { @@ -515,21 +504,20 @@ void Market::cancel_all_orders() { } }; -void Market::set_market_price(const std::string &symbol, - liquibook::book::Price price) { - auto book = findBook(symbol); - - if (book != NULL) { - std::cout << "Setting market price : " << symbol << ":" << price - << std::endl; - - update_symbol_stats(book.get(), price, 0); +void Market::set_market_price(const std::string &symbol, liquibook::book::Price price) +{ + auto book = findBook(symbol); - book->set_market_price(price); + if (book != NULL) + { + std::stringstream ss; + LOG4CXX_INFO(logger, "Setting market price :" << symbol << price); + update_symbol_stats(book.get(), price, 0); + book->set_market_price(price); - } else { - std::cerr << "Book not found" << std::endl; - } + } else { + LOG4CXX_ERROR(logger, "Book not found :" << symbol << price); + } }; void Market::update_symbol_stats(const OrderBook *book, @@ -558,15 +546,15 @@ void Market::set_market_data_stats_entry( const std::string &market, const std::string &symbol, const char md_action, const char md_entry_type, const float MDEntryPx, const float MDEntrySize) { - mdEntry.SecurityExchange = CORBA::string_dup(getMarketName().c_str()); - mdEntry.Symbol = CORBA::string_dup(symbol.c_str()); - mdEntry.MDUpdateAction = md_action; - mdEntry.MDEntryType = md_entry_type; + mdEntry.SecurityExchange (getMarketName()); + mdEntry.Symbol(symbol); + mdEntry.MDUpdateAction(md_action); + mdEntry.MDEntryType(md_entry_type); if (md_entry_type == FIX::MDEntryType_TRADE_VOLUME) - mdEntry.MDEntrySize = MDEntrySize; + mdEntry.MDEntrySize(MDEntrySize); else - mdEntry.MDEntryPx = MDEntryPx; + mdEntry.MDEntryPx(MDEntryPx); } } // namespace DistributedATS diff --git a/MatchingEngine/src/Market.h b/MatchingEngine/src/Market.h index ab6616a..e39f81a 100644 --- a/MatchingEngine/src/Market.h +++ b/MatchingEngine/src/Market.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -31,12 +31,12 @@ #include "Order.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -44,23 +44,24 @@ #include #include #include - -#include +#include #include "OrderBookStats.h" - #include "DataWriterContainer.h" +#include + namespace DistributedATS { -struct market_data_update { - std::string symbol; - DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh - *priceDepth; +struct MarketDataUpdate { + std::string symbol; + DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh priceDepth; }; -typedef ACE_Message_Queue PriceDepthPublisherQueue; +using MarketDataUpdatePtr = std::shared_ptr; + +typedef boost::lockfree::spsc_queue> PriceDepthPublisherQueue; typedef std::shared_ptr PriceDepthPublisherQueuePtr; typedef liquibook::book::OrderBook OrderBook; @@ -121,7 +122,7 @@ class Market : public liquibook::book::OrderListener, OrderBookPtr findBook(const std::string &symbol); /// @brief published SecurityListRequest to DataService, in order to recieve a list of instruments to setup - void publishSecurityListRequest(); + void publishSecurityListRequest(eprosima::fastdds::dds::DataWriter*); /// @brief publishes MarketDataRequest to DataService, in order to recieve opening prices for received securies on the SecurityListRequest channel void publishMarketDataRequest(); // Market Data Request @@ -166,48 +167,17 @@ class Market : public liquibook::book::OrderListener, void on_depth_change(const DepthOrderBook *book, const BookDepth *depth); OrderBookPtr addBook(const std::string &symbol, bool useDepthBook); + + bool is_ready_to_trade() { return (books_.size() > 0); }; public: - /* void setExecutionReportDataWriter( - DistributedATS_ExecutionReport::ExecutionReportDataWriter_var &execution_report_dw) { - _execution_report_dw = execution_report_dw; - } - - void setMarketDataIncrementalRefreshDataWriter( - DistributedATS_MarketDataIncrementalRefresh:: - MarketDataIncrementalRefreshDataWriter_var - &marketdata_incremental_refresh_dw) { - _marketdata_incremental_refresh_dw = marketdata_incremental_refresh_dw; - } - - void setOrderCancelRejectDataWriter( - DistributedATS_OrderCancelReject::OrderCancelRejectDataWriter_var - &order_cancel_reject_dw) { - _order_cancel_reject_dw = order_cancel_reject_dw; - } - - void setOrderMassCancelReportDataWriter( - DistributedATS_OrderMassCancelReport::OrderMassCancelReportDataWriter_var - &order_mass_cancel_report_dw) { - _order_mass_cancel_report_dw = order_mass_cancel_report_dw; - } - - void setSecurityListRequestDataWriter( - DistributedATS_SecurityListRequest::SecurityListRequestDataWriter_var - &security_list_request_dw) { - _security_list_request_dw = security_list_request_dw; - } - - void setMarketDataRequestDataWriter( - DistributedATS_MarketDataRequest::MarketDataRequestDataWriter_var - &market_date_request_dw) { - _market_date_request_dw = market_date_request_dw; - }*/ DataWriterContainerPtr getDataWriterContainer() { return dataWriterContainerPtr_; } + + void publishExecutionReport(DistributedATS_ExecutionReport::ExecutionReport &executionReport); @@ -225,11 +195,12 @@ class Market : public liquibook::book::OrderListener, std::string getNextExecutionReportID() { char execution_report_id_c[64]; - sprintf(execution_report_id_c, "%d", ++executionIdSeed_); + snprintf(execution_report_id_c, 64, "%d", ++executionIdSeed_); std::string execution_report_id = execution_report_id_c; return execution_report_id; }; + private: static uint32_t orderIdSeed_; @@ -244,8 +215,9 @@ class Market : public liquibook::book::OrderListener, std::string _marketName; // Quickfix field 207 - Security Exchange std::string _dataServiceName; + }; -typedef std::shared_ptr MarketPtr; +typedef std::shared_ptr market_ptr; } // namespace DistributedATS diff --git a/MatchingEngine/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.cpp b/MatchingEngine/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.cpp index 23b590e..c1b8376 100644 --- a/MatchingEngine/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.cpp +++ b/MatchingEngine/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -31,6 +31,7 @@ #include + namespace DistributedATS { MarketDataSnapshotFullRefreshDataReaderListenerImpl:: @@ -39,61 +40,34 @@ MarketDataSnapshotFullRefreshDataReaderListenerImpl:: } void MarketDataSnapshotFullRefreshDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_MarketDataSnapshotFullRefresh:: - MarketDataSnapshotFullRefreshDataReader_var - market_data_snapshot_full_refresh_dr = - DistributedATS_MarketDataSnapshotFullRefresh:: - MarketDataSnapshotFullRefreshDataReader::_narrow(reader); - - if (CORBA::is_nil(market_data_snapshot_full_refresh_dr.in())) { - std::cerr << "DATSMarketDataSnapshotFullRefreshDataReaderListenerImpl::" - "on_data_available: _narrow failed." - << std::endl; - ACE_OS::exit(1); - } + eprosima::fastdds::dds::DataReader* reader) { - while (true) { - DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh + + DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh marketDataSnapshotFullRefresh; - DDS::SampleInfo si; - DDS::ReturnCode_t status = - market_data_snapshot_full_refresh_dr->take_next_sample( - marketDataSnapshotFullRefresh, si); - - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; - - LoggerHelper::log_debug< - std::stringstream, MarketDataSnapshotFullRefreshLogger, - DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh>( - marketDataSnapshotFullRefresh, "MarketDataSnapshotFullRefresh"); - - for (int index = 0; - index < marketDataSnapshotFullRefresh.c_NoMDEntries.length(); - index++) { - { - std::string symbol = marketDataSnapshotFullRefresh.Symbol.in(); - - _market->set_market_price( - symbol, - marketDataSnapshotFullRefresh.c_NoMDEntries[index].MDEntryPx); - } + + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&marketDataSnapshotFullRefresh, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + LoggerHelper::log_info< + std::stringstream, MarketDataSnapshotFullRefreshLogger, + DistributedATS_MarketDataSnapshotFullRefresh::MarketDataSnapshotFullRefresh> + (logger, marketDataSnapshotFullRefresh, "MarketDataSnapshotFullRefresh"); + + for (int index = 0; + index < marketDataSnapshotFullRefresh.c_NoMDEntries().size(); + index++) { + { + auto symbol = marketDataSnapshotFullRefresh.Symbol(); + + _market->set_market_price( symbol, marketDataSnapshotFullRefresh.c_NoMDEntries()[index].MDEntryPx() ); + } + } } - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logon: Error: " << status << std::endl; - } } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } } } /* namespace DistributedATS */ diff --git a/MatchingEngine/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.h b/MatchingEngine/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.h index c95c56a..de76157 100644 --- a/MatchingEngine/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.h +++ b/MatchingEngine/src/MarketDataSnapshotFullRefreshDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,53 +25,21 @@ SOFTWARE. */ -#ifndef MARKETDATASNAPSHOTFULLREFRESHDATAREADERLISTENERIMPL_H_ -#define MARKETDATASNAPSHOTFULLREFRESHDATAREADERLISTENERIMPL_H_ - -#include +#pragma once #include "Market.h" namespace DistributedATS { class MarketDataSnapshotFullRefreshDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: MarketDataSnapshotFullRefreshDataReaderListenerImpl( std::shared_ptr market) : _market(market){}; - virtual ~MarketDataSnapshotFullRefreshDataReaderListenerImpl(); - - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); - - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; + ~MarketDataSnapshotFullRefreshDataReaderListenerImpl() override; - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; + virtual void on_data_available(eprosima::fastdds::dds::DataReader* reader) override; private: std::shared_ptr _market; @@ -80,4 +48,3 @@ class MarketDataSnapshotFullRefreshDataReaderListenerImpl } /* namespace DistributedATS */ -#endif /* MARKETDATASNAPSHOTFULLREFRESHDATAREADERLISTENERIMPL_H_ */ diff --git a/MatchingEngine/src/MatchingEngine.mpc b/MatchingEngine/src/MatchingEngine.mpc deleted file mode 100644 index b865d0a..0000000 --- a/MatchingEngine/src/MatchingEngine.mpc +++ /dev/null @@ -1,41 +0,0 @@ - - - -project(MatchingEngine) : dcpsexe, dcps_tcp, svc_utils { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - requires += tao_orbsvcs - after += Svc_Utils NewOrderSingle ExecutionReport MarketDataIncrementalRefresh OrderCancelRequest OrderCancelReject OrderMassCancelRequest OrderMassCancelReport SecurityListRequest SecurityList - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - exeout = $(DATS_HOME)/bin - - exename = * - requires += tao_orbsvcs - - includes += $(TAO_ROOT)/orbsvcs $(QUICKFIX_HOME)/include $(DATS_HOME)/GenTools/idl/ $(DATS_HOME)/Common $(LIQUIDBOOK_HOME)/src $(QUICKFIX_HOME)/include - libpaths += $(DATS_HOME)/lib $(QUICKFIX_HOME)/lib - - after += Svc_Utils - - libs += NewOrderSingle ExecutionReport MarketDataIncrementalRefresh OrderCancelRequest OrderCancelReject OrderMassCancelRequest OrderMassCancelReport SecurityListRequest SecurityList MarketDataRequest MarketDataSnapshotFullRefresh BusinessMessageReject OrderCancelReplaceRequest Logon OrderMassStatusRequest - - Source_Files { - main.cpp - Market.cpp - Order.cpp - NewOrderSingleDataReaderListenerImpl.cpp - OrderException.cpp - OrderCancelRequestDataReaderListenerImpl.cpp - OrderMassCancelRequestDataReaderListenerImpl.cpp - SecurityListDataReaderListenerImpl.cpp - MarketDataSnapshotFullRefreshDataReaderListenerImpl.cpp - PriceDepthPublisherService.cpp - OrderCancelReplaceRequestDataReaderListenerImpl.cpp - } -} - diff --git a/MatchingEngine/src/NewOrderSingleDataReaderListenerImpl.cpp b/MatchingEngine/src/NewOrderSingleDataReaderListenerImpl.cpp index 1261c3a..ad79062 100644 --- a/MatchingEngine/src/NewOrderSingleDataReaderListenerImpl.cpp +++ b/MatchingEngine/src/NewOrderSingleDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -35,7 +35,7 @@ #include #include -#include + namespace MatchingEngine { @@ -51,123 +51,104 @@ NewOrderSingleDataReaderListenerImpl::~NewOrderSingleDataReaderListenerImpl() { } /* namespace MatchingEngine */ void NewOrderSingleDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_NewOrderSingle::NewOrderSingleDataReader_var new_order_single_dr = - DistributedATS_NewOrderSingle::NewOrderSingleDataReader::_narrow(reader); - - if (CORBA::is_nil(new_order_single_dr.in())) { - std::cerr << "NewOrderSingleDataReaderListenerImpl::on_data_available: " - "_narrow failed." - << std::endl; - ACE_OS::exit(1); - } - - while (true) { - DistributedATS_NewOrderSingle::NewOrderSingle new_order_single; - DDS::SampleInfo si; - DDS::ReturnCode_t status = - new_order_single_dr->take_next_sample(new_order_single, si); - - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; - - LoggerHelper::log_debug( - new_order_single, "NewOrderSingle"); - - std::string symbol = new_order_single.Symbol.in(); - std::string securityExchange = new_order_single.SecurityExchange.in(); - - try { - auto book = _market->findBook(symbol); - - if (!book) { - throw DistributedATS::OrderException( - new_order_single, FIX::OrdRejReason_UNKNOWN_SYMBOL); - } - - std::string clientOrderId = new_order_single.ClOrdID.in(); - - bool buy_side = false; - - if (new_order_single.Side == '1') - buy_side = true; - - std::string gateway = new_order_single.m_Header.SenderCompID.in(); - std::string dataService = new_order_single.m_Header.TargetSubID.in(); - std::string contra_party = new_order_single.m_Header.SenderSubID.in(); - auto quantity = new_order_single.OrderQty; - auto price = new_order_single.Price; - auto stop_price = new_order_single.StopPx; - - liquibook::book::OrderCondition order_condition = liquibook::book::OrderCondition::oc_no_conditions; - - // ExecInst is string in the data dictionary but char in quickfix/c++ - // - if ( new_order_single.ExecInst.in() != NULL && new_order_single.ExecInst[0] == FIX::ExecInst_ALL_OR_NONE ) - { - order_condition = liquibook::book::OrderCondition::oc_all_or_none; - } - - if ( new_order_single.TimeInForce == FIX::TimeInForce_IMMEDIATE_OR_CANCEL) - { - order_condition = liquibook::book::OrderCondition::oc_immediate_or_cancel; - } else if ( new_order_single.TimeInForce == FIX::TimeInForce_FILL_OR_KILL ) - { - order_condition = liquibook::book::OrderCondition::oc_fill_or_kill; - } - - DistributedATS::OrderPtr order = - std::make_shared( - _market->getDataWriterContainer(), - gateway, dataService, contra_party, clientOrderId, buy_side, - quantity, symbol, securityExchange, price, stop_price, order_condition); - - order->onSubmitted(); - - _market->submit(book, order); - - } catch (DistributedATS::OrderException &orderException) { - DistributedATS_ExecutionReport::ExecutionReport executionReport; - executionReport.m_Header.SenderCompID = - CORBA::string_dup("MATCHING_ENGINE"); - executionReport.m_Header.SenderSubID = - CORBA::string_dup(new_order_single.m_Header.SenderSubID); - executionReport.m_Header.TargetCompID = - CORBA::string_dup(new_order_single.m_Header.SenderCompID); - executionReport.m_Header.TargetSubID = - CORBA::string_dup(new_order_single.m_Header.TargetSubID); - executionReport.m_Header.MsgType = CORBA::string_dup("8"); - executionReport.Symbol = CORBA::string_dup(symbol.c_str()); - executionReport.SecurityExchange = - CORBA::string_dup(securityExchange.c_str()); - executionReport.Side = new_order_single.Side; - executionReport.Text = "Order Rejected"; - executionReport.CumQty = 0; - executionReport.LeavesQty = 0; - executionReport.Price = 0; - executionReport.TimeInForce = new_order_single.TimeInForce; - executionReport.OrdType = new_order_single.OrdType; - executionReport.ExecInst = new_order_single.ExecInst; - - orderException.populateExecutionReportWithRejectCode(executionReport); - - _market->publishExecutionReport(executionReport); + eprosima::fastdds::dds::DataReader* reader) +{ + + DistributedATS_NewOrderSingle::NewOrderSingle new_order_single; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&new_order_single, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + + LoggerHelper::log_debug( logger, + new_order_single, "NewOrderSingle"); + + std::string symbol = new_order_single.Symbol(); + std::string securityExchange = new_order_single.SecurityExchange(); + + try { + auto book = _market->findBook(symbol); + + if (!book) { + throw DistributedATS::OrderException( + new_order_single, FIX::OrdRejReason_UNKNOWN_SYMBOL); + } + + std::string clientOrderId = new_order_single.ClOrdID(); + + bool buy_side = false; + + if (new_order_single.Side() == '1') + buy_side = true; + + std::string gateway = new_order_single.DATS_Source(); + std::string dataService = new_order_single.DATS_DestinationUser(); + std::string contra_party = new_order_single.DATS_SourceUser(); + + auto quantity = new_order_single.OrderQty(); + auto price = new_order_single.Price(); + auto stop_price = new_order_single.StopPx(); + + liquibook::book::OrderCondition order_condition = liquibook::book::OrderCondition::oc_no_conditions; + + // ExecInst is string in the data dictionary but char in quickfix/c++ + // + if ( new_order_single.ExecInst().length() > 0 && new_order_single.ExecInst()[0] == FIX::ExecInst_ALL_OR_NONE ) + { + order_condition = liquibook::book::OrderCondition::oc_all_or_none; + } + + if ( new_order_single.TimeInForce() == FIX::TimeInForce_IMMEDIATE_OR_CANCEL) + { + order_condition = liquibook::book::OrderCondition::oc_immediate_or_cancel; + } else if ( new_order_single.TimeInForce() == FIX::TimeInForce_FILL_OR_KILL ) + { + order_condition = liquibook::book::OrderCondition::oc_fill_or_kill; + } + + DistributedATS::OrderPtr order = + std::make_shared( + _market->getDataWriterContainer(), + gateway, dataService, contra_party, clientOrderId, buy_side, + quantity, symbol, securityExchange, price, stop_price, order_condition); + + order->onSubmitted(); + + _market->submit(book, order); + + } catch (DistributedATS::OrderException &orderException) { + DistributedATS_ExecutionReport::ExecutionReport executionReport; + + executionReport.DATS_Source("MATCHING_ENGINE"); + executionReport.DATS_SourceUser(new_order_single.DATS_DestinationUser()); + executionReport.DATS_Destination(new_order_single.DATS_Source()); + executionReport.DATS_DestinationUser(new_order_single.DATS_SourceUser()); + + executionReport.fix_header().MsgType("8"); + executionReport.Symbol(symbol); + executionReport.SecurityExchange(securityExchange); + executionReport.Side(new_order_single.Side()); + executionReport.Text("Order Rejected"); + executionReport.CumQty(0); + executionReport.LeavesQty(0); + executionReport.Price(0); + executionReport.TimeInForce(new_order_single.TimeInForce()); + executionReport.OrdType(new_order_single.OrdType()); + executionReport.ExecInst(new_order_single.ExecInst()); + + executionReport.TransactTime( + std::chrono::duration_cast + (std::chrono::system_clock::now().time_since_epoch()).count()); + + orderException.populateExecutionReportWithRejectCode(executionReport); + + _market->publishExecutionReport(executionReport); + } } - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logon: Error: " << status << std::endl; - } } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } } } // namespace MatchingEngine diff --git a/MatchingEngine/src/NewOrderSingleDataReaderListenerImpl.h b/MatchingEngine/src/NewOrderSingleDataReaderListenerImpl.h index 9cd84d4..938b73f 100644 --- a/MatchingEngine/src/NewOrderSingleDataReaderListenerImpl.h +++ b/MatchingEngine/src/NewOrderSingleDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,57 +25,24 @@ SOFTWARE. */ -#ifndef NEWORDERSINGLEDATAREADERLISTENERIMPL_H_ -#define NEWORDERSINGLEDATAREADERLISTENERIMPL_H_ +#pragma once #include "Market.h" -#include #include namespace MatchingEngine { class NewOrderSingleDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: NewOrderSingleDataReaderListenerImpl( std::shared_ptr market); - virtual ~NewOrderSingleDataReaderListenerImpl(); + ~NewOrderSingleDataReaderListenerImpl() override; - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); - - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; - - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; + void on_data_available(eprosima::fastdds::dds::DataReader* reader) override; private: std::shared_ptr _market; }; } /* namespace MatchingEngine */ - -#endif /* NEWORDERSINGLEDATAREADERLISTENERIMPL_H_ */ diff --git a/MatchingEngine/src/Order.cpp b/MatchingEngine/src/Order.cpp index 742fe01..9adcc6d 100644 --- a/MatchingEngine/src/Order.cpp +++ b/MatchingEngine/src/Order.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -120,27 +120,23 @@ void Order::onCancelRejected(const char *reason) { DistributedATS_OrderCancelReject::OrderCancelReject orderCancelReject; - orderCancelReject.m_Header.TargetSubID = - CORBA::string_dup(dataService_.c_str()); - orderCancelReject.m_Header.TargetCompID = CORBA::string_dup(gateway_.c_str()); - orderCancelReject.m_Header.SenderSubID = - CORBA::string_dup(contra_party_.c_str()); + orderCancelReject.DATS_SourceUser(dataService_); + orderCancelReject.DATS_Destination(gateway_); + orderCancelReject.DATS_DestinationUser(contra_party_); - orderCancelReject.m_Header.MsgType = CORBA::string_dup("9"); - orderCancelReject.Text = reason; - orderCancelReject.ClOrdID = CORBA::string_dup(client_order_id_.c_str()); + orderCancelReject.fix_header().MsgType("9"); + orderCancelReject.Text(reason); + orderCancelReject.ClOrdID(client_order_id_); LoggerHelper::log_debug( - orderCancelReject, "OrderCancelReject"); + DistributedATS_OrderCancelReject::OrderCancelReject>(logger,orderCancelReject, "OrderCancelReject"); - int ret = dataWriterContainerPtr_->_order_cancel_reject_dw->write(orderCancelReject, NULL); + int ret = dataWriterContainerPtr_->order_cancel_reject_dw->write(&orderCancelReject); - if (ret != DDS::RETCODE_OK) { - ACE_ERROR((LM_ERROR, - ACE_TEXT("(%P|%t) ERROR: OrderCancelReject write returned %d.\n"), - ret)); + if (ret != eprosima::fastdds::dds::RETCODE_OK) { + LOG4CXX_ERROR(logger, "OrderCancelReject write returned :" << ret); } + } void Order::onReplaceRequested(const std::string& replacement_client_order_id, @@ -180,26 +176,22 @@ void Order::onReplaceRejected(const char *reason) { DistributedATS_OrderCancelReject::OrderCancelReject orderCancelReject; - orderCancelReject.m_Header.TargetSubID = - CORBA::string_dup(dataService_.c_str()); - orderCancelReject.m_Header.TargetCompID = CORBA::string_dup(gateway_.c_str()); - orderCancelReject.m_Header.SenderSubID = - CORBA::string_dup(contra_party_.c_str()); + orderCancelReject.DATS_SourceUser(dataService_); + orderCancelReject.DATS_Destination(gateway_); + orderCancelReject.DATS_DestinationUser(contra_party_); - orderCancelReject.m_Header.MsgType = CORBA::string_dup("9"); - orderCancelReject.Text = CORBA::string_dup(reason); - orderCancelReject.ClOrdID = CORBA::string_dup(client_order_id_.c_str()); + orderCancelReject.fix_header().MsgType("9"); + orderCancelReject.Text(reason); + orderCancelReject.ClOrdID(client_order_id_); LoggerHelper::log_debug( + DistributedATS_OrderCancelReject::OrderCancelReject>( logger, orderCancelReject, "OrderCancelReject"); - int ret = dataWriterContainerPtr_->_order_cancel_reject_dw->write(orderCancelReject, NULL); - - if (ret != DDS::RETCODE_OK) { - ACE_ERROR((LM_ERROR, - ACE_TEXT("(%P|%t) ERROR: OrderCancelReject write returned %d.\n"), - ret)); + int ret = dataWriterContainerPtr_->order_cancel_reject_dw->write(&orderCancelReject); + + if (ret != eprosima::fastdds::dds::RETCODE_OK) { + LOG4CXX_ERROR(logger, "OrdereplaceRejected write returned :" << ret); } } @@ -208,47 +200,47 @@ void Order::populateExecutionReport( char ExecType) { - executionReport.m_Header.SenderCompID = CORBA::string_dup("MATCHING_ENGINE"); - executionReport.m_Header.TargetSubID = - CORBA::string_dup(dataService_.c_str()); - executionReport.m_Header.TargetCompID = CORBA::string_dup(gateway_.c_str()); - executionReport.m_Header.SenderSubID = - CORBA::string_dup(contra_party_.c_str()); - executionReport.m_Header.MsgType = CORBA::string_dup("8"); - executionReport.OrderID = CORBA::string_dup(client_order_id_.c_str()); - executionReport.Side = (is_buy() ? '1' : '2'); - executionReport.Symbol = CORBA::string_dup(symbol().c_str()); - executionReport.SecurityExchange = - CORBA::string_dup(securityExchange_.c_str()); - executionReport.ExecType = ExecType; - executionReport.CumQty = quantityFilled(); - executionReport.LeavesQty = quantityOnMarket(); - executionReport.Price = price(); - executionReport.StopPx = stop_price(); + executionReport.DATS_Source("MATCHING_ENGINE"); + executionReport.DATS_SourceUser(dataService_); + executionReport.DATS_Destination(gateway_); + executionReport.DATS_DestinationUser(contra_party_); + + executionReport.fix_header().MsgType("8"); + executionReport.OrderID(client_order_id_); + executionReport.Side(is_buy() ? '1' : '2'); + executionReport.Symbol(symbol()); + executionReport.SecurityExchange(securityExchange_); + executionReport.ExecType(ExecType); + executionReport.CumQty(quantityFilled()); + executionReport.LeavesQty(quantityOnMarket()); + executionReport.Price(price()); + executionReport.StopPx(stop_price()); if ( stop_price() !=0 ) - executionReport.OrdType = FIX::OrdType_STOP; + executionReport.OrdType(FIX::OrdType_STOP); else if ( price() !=0 ) - executionReport.OrdType = FIX::OrdType_LIMIT; + executionReport.OrdType(FIX::OrdType_LIMIT); else - executionReport.OrdType = FIX::OrdType_MARKET; + executionReport.OrdType(FIX::OrdType_MARKET); if ( all_or_none() ) - executionReport.ExecInst = CORBA::string_dup("G"); + executionReport.ExecInst("G"); - executionReport.TransactTime = - (ACE_OS::gettimeofday().sec() * 1000000) + ACE_OS::gettimeofday().usec(); - executionReport.LastPx = 0; - executionReport.LastQty = 0; + executionReport.TransactTime( + std::chrono::duration_cast + (std::chrono::system_clock::now().time_since_epoch()).count()); + + executionReport.LastPx(0); + executionReport.LastQty(0); if ( conditions_ == liquibook::book::OrderCondition::oc_immediate_or_cancel ) { - executionReport.TimeInForce = FIX::TimeInForce_IMMEDIATE_OR_CANCEL; + executionReport.TimeInForce(FIX::TimeInForce_IMMEDIATE_OR_CANCEL); } else if ( conditions_ == liquibook::book::OrderCondition::oc_fill_or_kill ) { - executionReport.TimeInForce = FIX::TimeInForce_FILL_OR_KILL; + executionReport.TimeInForce(FIX::TimeInForce_FILL_OR_KILL); } else { - executionReport.TimeInForce = FIX::TimeInForce_DAY; + executionReport.TimeInForce(FIX::TimeInForce_DAY); } @@ -256,14 +248,14 @@ void Order::populateExecutionReport( // executionReport.TransactTime << std::endl; if (quantityFilled() > 0) - executionReport.AvgPx = std::nearbyint(fillCost() / quantityFilled()); // round to the nearest tick + executionReport.AvgPx(std::nearbyint(fillCost() / quantityFilled())); // round to the nearest tick else - executionReport.AvgPx = 0; // avoid scientific numbers + executionReport.AvgPx(0); // avoid scientific numbers - executionReport.OrderQty = order_qty(); - executionReport.OrdStatus = ExecType; - executionReport.OrdRejReason = 0; - executionReport.Text = "OK"; + executionReport.OrderQty(order_qty()); + executionReport.OrdStatus(ExecType); + executionReport.OrdRejReason(0); + executionReport.Text("OK"); } std::ostream &operator<<(std::ostream &out, const Order &order) { diff --git a/MatchingEngine/src/Order.h b/MatchingEngine/src/Order.h index 7b559f3..90987a7 100644 --- a/MatchingEngine/src/Order.h +++ b/MatchingEngine/src/Order.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -29,8 +29,8 @@ #include -#include -#include +#include +#include #include #include #include diff --git a/MatchingEngine/src/OrderBookStats.h b/MatchingEngine/src/OrderBookStats.h index fa68820..240750d 100644 --- a/MatchingEngine/src/OrderBookStats.h +++ b/MatchingEngine/src/OrderBookStats.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,8 +25,7 @@ SOFTWARE. */ -#ifndef ORDERBOOKSTATS_H_ -#define ORDERBOOKSTATS_H_ +#pragma once namespace DistributedATS { @@ -40,5 +39,3 @@ struct OrderBookStats { typedef std::shared_ptr OrderBookStatsPtr; }; // namespace DistributedATS - -#endif /* ORDERBOOKSTATS_H_ */ diff --git a/MatchingEngine/src/OrderCancelReplaceRequestDataReaderListenerImpl.cpp b/MatchingEngine/src/OrderCancelReplaceRequestDataReaderListenerImpl.cpp index 91eca68..975544b 100644 --- a/MatchingEngine/src/OrderCancelReplaceRequestDataReaderListenerImpl.cpp +++ b/MatchingEngine/src/OrderCancelReplaceRequestDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -28,11 +28,11 @@ #include "OrderCancelReplaceRequestDataReaderListenerImpl.h" #include "OrderException.h" -#include #include #include + namespace MatchingEngine { OrderCancelReplaceRequestDataReaderListenerImpl:: @@ -48,35 +48,22 @@ OrderCancelReplaceRequestDataReaderListenerImpl:: } void OrderCancelReplaceRequestDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequestDataReader_var - order_cancel_replace_request_dr = - DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequestDataReader::_narrow( - reader); - - if (CORBA::is_nil(order_cancel_replace_request_dr.in())) { - std::cerr << "OrderCancelReplaceRequestDataReaderListenerImpl::on_data_" - "available: _narrow failed." - << std::endl; - ACE_OS::exit(1); - } - - while (true) { - DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest order_cancel_replace_request; - DDS::SampleInfo si; - DDS::ReturnCode_t status = - order_cancel_replace_request_dr->take_next_sample(order_cancel_replace_request, si); + eprosima::fastdds::dds::DataReader* reader) { - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; + + DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest order_cancel_replace_request; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&order_cancel_replace_request, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { LoggerHelper::log_debug( + DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest>(logger, order_cancel_replace_request, "OrderCancelReplaceRequest"); - std::string symbol = order_cancel_replace_request.Symbol.in(); + std::string symbol = order_cancel_replace_request.Symbol(); try { auto book = _market->findBook(symbol); @@ -84,44 +71,35 @@ void OrderCancelReplaceRequestDataReaderListenerImpl::on_data_available( if (!book) { std::cerr << "Order book not found to cancel order : " << symbol << std::endl; - break; + return; } - std::string orig_client_order_id = order_cancel_replace_request.OrigClOrdID.in(); - std::string client_order_id = order_cancel_replace_request.ClOrdID.in(); - std::string contra_party = - order_cancel_replace_request.m_Header.SenderSubID.in(); + std::string orig_client_order_id = order_cancel_replace_request.OrigClOrdID(); + std::string client_order_id = order_cancel_replace_request.ClOrdID(); + std::string contra_party = order_cancel_replace_request.DATS_SourceUser(); _market->replace_order(book, contra_party, orig_client_order_id, client_order_id, - order_cancel_replace_request.OrderQty, - order_cancel_replace_request.Price); + order_cancel_replace_request.OrderQty(), + order_cancel_replace_request.Price()); } catch (DistributedATS::OrderException &orderException) { DistributedATS_OrderCancelReject::OrderCancelReject orderCancelReject; - orderCancelReject.m_Header.SenderCompID = - CORBA::string_dup("MATCHING_ENGINE"); - orderCancelReject.m_Header.TargetCompID = - CORBA::string_dup(order_cancel_replace_request.m_Header.SenderCompID); - orderCancelReject.m_Header.MsgType = CORBA::string_dup("9"); - orderCancelReject.Text = "Cancel Replace Rejected"; - orderCancelReject.ClOrdID = order_cancel_replace_request.ClOrdID; - - _market->publishOrderCancelReject(orderCancelReject); + + orderCancelReject.DATS_Source("MATCHING_ENGINE"); + orderCancelReject.DATS_Destination(order_cancel_replace_request.DATS_Source()); + orderCancelReject.DATS_DestinationUser(order_cancel_replace_request.DATS_SourceUser()); + + orderCancelReject.fix_header().MsgType("9"); + orderCancelReject.Text("Cancel Replace Rejected"); + orderCancelReject.ClOrdID(order_cancel_replace_request.ClOrdID()); + + _market->publishOrderCancelReject(orderCancelReject); } - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logon: Error: " << status << std::endl; } } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } } } /* namespace MatchingEngine */ diff --git a/MatchingEngine/src/OrderCancelReplaceRequestDataReaderListenerImpl.h b/MatchingEngine/src/OrderCancelReplaceRequestDataReaderListenerImpl.h index b0a476b..05d9a17 100644 --- a/MatchingEngine/src/OrderCancelReplaceRequestDataReaderListenerImpl.h +++ b/MatchingEngine/src/OrderCancelReplaceRequestDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,58 +25,27 @@ SOFTWARE. */ -#ifndef ORDERCANCELREPLACEREQUESTDATAREADERLISTENERIMPL_H_ -#define ORDERCANCELREPLACEREQUESTDATAREADERLISTENERIMPL_H_ +#pragma once #include "Market.h" -#include #include namespace MatchingEngine { class OrderCancelReplaceRequestDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: OrderCancelReplaceRequestDataReaderListenerImpl( std::shared_ptr market); - virtual ~OrderCancelReplaceRequestDataReaderListenerImpl(); - - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); - - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; - - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; + ~OrderCancelReplaceRequestDataReaderListenerImpl() override; + void + on_data_available(eprosima::fastdds::dds::DataReader* reader) override; + private: std::shared_ptr _market; }; } /* namespace MatchingEngine */ -#endif /* ORDERCANCELREPLACEREQUESTDATAREADERLISTENERIMPL_H_ */ diff --git a/MatchingEngine/src/OrderCancelRequestDataReaderListenerImpl.cpp b/MatchingEngine/src/OrderCancelRequestDataReaderListenerImpl.cpp index 907351b..54a7dc7 100644 --- a/MatchingEngine/src/OrderCancelRequestDataReaderListenerImpl.cpp +++ b/MatchingEngine/src/OrderCancelRequestDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -28,11 +28,11 @@ #include "OrderCancelRequestDataReaderListenerImpl.h" #include "OrderException.h" -#include #include #include + namespace MatchingEngine { OrderCancelRequestDataReaderListenerImpl:: @@ -48,75 +48,49 @@ OrderCancelRequestDataReaderListenerImpl:: } void OrderCancelRequestDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_OrderCancelRequest::OrderCancelRequestDataReader_var - order_cancel_request_dr = - DistributedATS_OrderCancelRequest::OrderCancelRequestDataReader::_narrow( - reader); - - if (CORBA::is_nil(order_cancel_request_dr.in())) { - std::cerr << "OrderCancelRequestDataReaderListenerImpl::on_data_" - "available: _narrow failed." - << std::endl; - ACE_OS::exit(1); - } - - while (true) { - DistributedATS_OrderCancelRequest::OrderCancelRequest order_cancel_request; - DDS::SampleInfo si; - DDS::ReturnCode_t status = - order_cancel_request_dr->take_next_sample(order_cancel_request, si); - - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; - - LoggerHelper::log_debug( - order_cancel_request, "OrderCancelRequest"); - - std::string symbol = order_cancel_request.Symbol.in(); - - try { - auto book = _market->findBook(symbol); - - if (!book) { - std::cerr << "Order book not found to cancel order : " << symbol - << std::endl; - break; - } - - std::string client_order_id = order_cancel_request.OrigClOrdID.in(); - std::string contra_party = - order_cancel_request.m_Header.SenderSubID.in(); - - _market->cancel_order(book, contra_party, client_order_id); - - } catch (DistributedATS::OrderException &orderException) { - DistributedATS_OrderCancelReject::OrderCancelReject orderCancelReject; - orderCancelReject.m_Header.SenderCompID = - CORBA::string_dup("MATCHING_ENGINE"); - orderCancelReject.m_Header.TargetCompID = - CORBA::string_dup(order_cancel_request.m_Header.SenderCompID); - orderCancelReject.m_Header.MsgType = CORBA::string_dup("9"); - orderCancelReject.Text = "Cancel Rejected REJECT"; - orderCancelReject.ClOrdID = order_cancel_request.ClOrdID; - - _market->publishOrderCancelReject(orderCancelReject); - } - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logon: Error: " << status << std::endl; - } - } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } + eprosima::fastdds::dds::DataReader* reader) { + + + DistributedATS_OrderCancelRequest::OrderCancelRequest + order_cancel_request; + eprosima::fastdds::dds::SampleInfo info; + + if (reader->take_next_sample(&order_cancel_request, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { + LoggerHelper::log_debug(logger, + order_cancel_request, "OrderCancelRequest"); + + std::string symbol = order_cancel_request.Symbol(); + + try { + auto book = _market->findBook(symbol); + + if (!book) { + std::cerr << "Order book not found to cancel order : " << symbol + << std::endl; + } + + std::string client_order_id = order_cancel_request.OrigClOrdID(); + std::string contra_party = + order_cancel_request.DATS_SourceUser(); + + _market->cancel_order(book, contra_party, client_order_id); + + } catch (DistributedATS::OrderException &orderException) { + DistributedATS_OrderCancelReject::OrderCancelReject orderCancelReject; + orderCancelReject.DATS_Source("MATCHING_ENGINE"); + orderCancelReject.DATS_Destination(order_cancel_request.DATS_Source()); + orderCancelReject.fix_header().MsgType("9"); + orderCancelReject.Text("Cancel Rejected REJECT"); + orderCancelReject.ClOrdID(order_cancel_request.ClOrdID()); + + _market->publishOrderCancelReject(orderCancelReject); + } + } + } } } /* namespace MatchingEngine */ diff --git a/MatchingEngine/src/OrderCancelRequestDataReaderListenerImpl.h b/MatchingEngine/src/OrderCancelRequestDataReaderListenerImpl.h index 8be9a82..d16b437 100644 --- a/MatchingEngine/src/OrderCancelRequestDataReaderListenerImpl.h +++ b/MatchingEngine/src/OrderCancelRequestDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,52 +25,30 @@ SOFTWARE. */ -#ifndef ORDERCANCELREQUESTDATAREADERLISTENERIMPL_H_ -#define ORDERCANCELREQUESTDATAREADERLISTENERIMPL_H_ +#pragma once #include "Market.h" -#include #include +#include +#include +#include +#include +#include +#include + +#include + namespace MatchingEngine { class OrderCancelRequestDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: OrderCancelRequestDataReaderListenerImpl( std::shared_ptr market); - virtual ~OrderCancelRequestDataReaderListenerImpl(); - - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); - - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; + ~OrderCancelRequestDataReaderListenerImpl() override; - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; + virtual void on_data_available(eprosima::fastdds::dds::DataReader* reader) override; private: std::shared_ptr _market; @@ -78,4 +56,3 @@ class OrderCancelRequestDataReaderListenerImpl } /* namespace MatchingEngine */ -#endif /* ORDERCANCELREQUESTDATAREADERLISTENERIMPL_H_ */ diff --git a/MatchingEngine/src/OrderException.cpp b/MatchingEngine/src/OrderException.cpp index 9dd77fa..6fcd493 100644 --- a/MatchingEngine/src/OrderException.cpp +++ b/MatchingEngine/src/OrderException.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -31,8 +31,8 @@ namespace DistributedATS { OrderException::OrderException( const DistributedATS_NewOrderSingle::NewOrderSingle &newOrderSingle, const int reason) - : _client_order_id(newOrderSingle.ClOrdID.in()), - _counter_partry(newOrderSingle.m_Header.SenderCompID.in()), + : _client_order_id(newOrderSingle.ClOrdID()), + _counter_partry(newOrderSingle.DATS_SourceUser()), _reason(reason) { // TODO Auto-generated constructor stub } @@ -49,17 +49,17 @@ OrderException::~OrderException() { bool OrderException::populateExecutionReportWithRejectCode( DistributedATS_ExecutionReport::ExecutionReport &executionReport) { - executionReport.OrderID = CORBA::string_dup(_client_order_id.c_str()); - executionReport.ExecType = FIX::ExecType_REJECTED; - executionReport.OrdStatus = FIX::OrdStatus_REJECTED; - executionReport.OrdRejReason = _reason; + executionReport.OrderID( _client_order_id ); + executionReport.ExecType( FIX::ExecType_REJECTED ); + executionReport.OrdStatus( FIX::OrdStatus_REJECTED ); + executionReport.OrdRejReason( _reason ); return true; } bool OrderException::populateOrderCancelRejectWithReasonCode( DistributedATS_OrderCancelReject::OrderCancelReject &cancelReject) { - cancelReject.CxlRejResponseTo = _reason; + cancelReject.CxlRejResponseTo(_reason); return true; } diff --git a/MatchingEngine/src/OrderException.h b/MatchingEngine/src/OrderException.h index 9def6f0..0f5bc0d 100644 --- a/MatchingEngine/src/OrderException.h +++ b/MatchingEngine/src/OrderException.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -28,9 +28,9 @@ #ifndef ORDEREXCEPTION_H_ #define ORDEREXCEPTION_H_ -#include -#include -#include +#include +#include +#include #include diff --git a/MatchingEngine/src/OrderMassCancelRequestDataReaderListenerImpl.cpp b/MatchingEngine/src/OrderMassCancelRequestDataReaderListenerImpl.cpp index e29d9d1..ff9ab76 100644 --- a/MatchingEngine/src/OrderMassCancelRequestDataReaderListenerImpl.cpp +++ b/MatchingEngine/src/OrderMassCancelRequestDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -29,6 +29,7 @@ #include #include + namespace MatchingEngine { OrderMassCancelRequestDataReaderListenerImpl:: @@ -44,67 +45,44 @@ OrderMassCancelRequestDataReaderListenerImpl:: } void OrderMassCancelRequestDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_OrderMassCancelRequest::OrderMassCancelRequestDataReader_var - order_mass_cancel_request_dr = DistributedATS_OrderMassCancelRequest:: - OrderMassCancelRequestDataReader::_narrow(reader); - - if (CORBA::is_nil(order_mass_cancel_request_dr.in())) { - std::cerr << "OrderMassCancelRequestDataReaderListenerImpl::on_data_" - "available: _narrow failed." - << std::endl; - ACE_OS::exit(1); - } - - while (true) { - DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest + eprosima::fastdds::dds::DataReader* reader) +{ + + DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest order_mass_cancel_request; - DDS::SampleInfo si; - DDS::ReturnCode_t status = order_mass_cancel_request_dr->take_next_sample( - order_mass_cancel_request, si); + eprosima::fastdds::dds::SampleInfo info; - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; + + if (reader->take_next_sample(&order_mass_cancel_request, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + if (info.valid_data) + { LoggerHelper::log_debug< std::stringstream, OrderMassCancelRequestLogger, - DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest>( + DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest>(logger, order_mass_cancel_request, "OrderMassCancelRequest"); std::string contra_party = - order_mass_cancel_request.m_Header.SenderSubID.in(); + order_mass_cancel_request.DATS_SourceUser(); DistributedATS_OrderMassCancelReport::OrderMassCancelReport order_mass_cancel_report; - order_mass_cancel_report.m_Header.SenderCompID = - CORBA::string_dup("MATCHING_ENGINE"); - order_mass_cancel_report.m_Header.TargetCompID = - CORBA::string_dup(order_mass_cancel_request.m_Header.SenderCompID); - order_mass_cancel_report.m_Header.TargetSubID = - CORBA::string_dup(order_mass_cancel_request.m_Header.SenderSubID); - order_mass_cancel_report.m_Header.MsgType = CORBA::string_dup("r"); - order_mass_cancel_report.MassCancelRequestType = - FIX::MassCancelRequestType_CANCEL_ALL_ORDERS; - order_mass_cancel_report.MassCancelResponse = - FIX::MassCancelResponse_CANCEL_ALL_ORDERS; - order_mass_cancel_report.OrderID = order_mass_cancel_request.ClOrdID; + + order_mass_cancel_report.DATS_Source("MATCHING_ENGINE"); + order_mass_cancel_report.DATS_Destination(order_mass_cancel_request.DATS_Source()); + order_mass_cancel_report.DATS_DestinationUser(order_mass_cancel_request.DATS_SourceUser()); + + order_mass_cancel_report.fix_header().MsgType("r"); + order_mass_cancel_report.MassCancelRequestType(FIX::MassCancelRequestType_CANCEL_ALL_ORDERS); + order_mass_cancel_report.MassCancelResponse(FIX::MassCancelResponse_CANCEL_ALL_ORDERS); + order_mass_cancel_report.OrderID(order_mass_cancel_request.ClOrdID()); _market->publishOrderMassCancelReport(order_mass_cancel_report); _market->mass_cancel(contra_party); - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::Logon: Error: " << status << std::endl; - } - } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); + } } } diff --git a/MatchingEngine/src/OrderMassCancelRequestDataReaderListenerImpl.h b/MatchingEngine/src/OrderMassCancelRequestDataReaderListenerImpl.h index 966a16c..7d2fdf7 100644 --- a/MatchingEngine/src/OrderMassCancelRequestDataReaderListenerImpl.h +++ b/MatchingEngine/src/OrderMassCancelRequestDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,57 +25,25 @@ SOFTWARE. */ -#ifndef ORDERMASSCANCELREQUESTDATAREADERLISTENERIMPL_H_ -#define ORDERMASSCANCELREQUESTDATAREADERLISTENERIMPL_H_ +#pragma once #include "Market.h" -#include #include namespace MatchingEngine { class OrderMassCancelRequestDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: OrderMassCancelRequestDataReaderListenerImpl( std::shared_ptr market); - virtual ~OrderMassCancelRequestDataReaderListenerImpl(); + ~OrderMassCancelRequestDataReaderListenerImpl() override; - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); - - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; - - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; + void + on_data_available(eprosima::fastdds::dds::DataReader* reader) override; private: std::shared_ptr _market; }; } // namespace MatchingEngine - -#endif /* ORDERMASSCANCELREQUESTDATAREADER_H_ */ diff --git a/MatchingEngine/src/PriceDepthPublisherService.cpp b/MatchingEngine/src/PriceDepthPublisherService.cpp index ba7afc2..562aef5 100644 --- a/MatchingEngine/src/PriceDepthPublisherService.cpp +++ b/MatchingEngine/src/PriceDepthPublisherService.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,88 +25,102 @@ SOFTWARE. */ +#include +#include "Market.h" + #include "PriceDepthPublisherService.hpp" -#include "MarketDataIncrementalRefreshTypeSupportImpl.h" #include #include #include +#include +#include + using namespace DistributedATS; + PriceDepthPublisherService::PriceDepthPublisherService( - DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefreshDataWriter_var + eprosima::fastdds::dds::DataWriter* market_data_incremental_refresh_dw, PriceDepthPublisherQueuePtr price_depth_publisher_queue_ptr, int price_depth_pub_interval) : _price_depth_publisher_queue_ptr( price_depth_publisher_queue_ptr ), _market_data_incremental_refresh_dw(market_data_incremental_refresh_dw), - _price_depth_pub_interval(price_depth_pub_interval) {} - -int PriceDepthPublisherService::svc(void) { - std::map> - latestMarketDataUpdates; - - ACE_Time_Value udelay(0, _price_depth_pub_interval); - struct timespec ts = udelay; + _price_depth_pub_interval(price_depth_pub_interval) +{ + + std::atomic_init(&_is_running, true); + + _publisher_thread = std::thread(&PriceDepthPublisherService::service, this); + +} + +PriceDepthPublisherService::~PriceDepthPublisherService() +{ + std::atomic_init(&_is_running, false); + _publisher_thread.join(); +}; - while (1) { - if (_price_depth_publisher_queue_ptr->message_count() == 0) { - ACE_OS::nanosleep(&ts); +int PriceDepthPublisherService::service() +{ + while (_is_running) { + if (_price_depth_publisher_queue_ptr->empty()) { + + std::this_thread::sleep_for(std::chrono::duration(_price_depth_pub_interval)); continue; }; - ACE_Message_Block *incrementalRefreshMessage = 0; - // // Iterate through the queue and get the latest update // - std::cout << "Queue Size : " - << _price_depth_publisher_queue_ptr->message_count() - << std::endl; - - while (_price_depth_publisher_queue_ptr->message_count()) { - _price_depth_publisher_queue_ptr->dequeue_head( - incrementalRefreshMessage); - - market_data_update *mdUpdate = - (market_data_update *)incrementalRefreshMessage->rd_ptr(); - - std::shared_ptr< + /*std::cout << "Queue Size : " + << _price_depth_publisher_queue_ptr->size() + << std::endl;*/ + + std::shared_ptr market_data_update; + + std::map - mdIncrementalDataRefresh(mdUpdate->priceDepth); - - latestMarketDataUpdates[mdUpdate->symbol] = mdIncrementalDataRefresh; - - incrementalRefreshMessage->release(); - } - - DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh + latestMarketDataUpdates; + + + while (_price_depth_publisher_queue_ptr->pop(market_data_update)) + { + latestMarketDataUpdates[market_data_update->symbol] = market_data_update->priceDepth; + + std::stringstream ss; + MarketDataIncrementalRefreshLogger::log(ss, latestMarketDataUpdates[market_data_update->symbol]); + LOG4CXX_INFO(logger, "MarketDataIncrementalRefresh : [" << ss.str() << "]"); + std::cout << "Update : " << ss.str() << std::endl; + + } + + + DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh chunkedIncrementalMarketDataRefresh; - chunkedIncrementalMarketDataRefresh.m_Header.SenderCompID = - CORBA::string_dup("MATCHING_ENGINE"); - chunkedIncrementalMarketDataRefresh.m_Header.MsgType = - CORBA::string_dup("X"); + chunkedIncrementalMarketDataRefresh.DATS_Source("MATCHING_ENGINE"); + chunkedIncrementalMarketDataRefresh.fix_header().MsgType("X"); int max_chunk_size = 10; - CORBA::ULong chunk_size = + auto chunk_size = latestMarketDataUpdates.size() > max_chunk_size ? max_chunk_size - : (CORBA::ULong)latestMarketDataUpdates.size(); + : latestMarketDataUpdates.size(); - chunkedIncrementalMarketDataRefresh.c_NoMDEntries.length(chunk_size * 14); + chunkedIncrementalMarketDataRefresh.c_NoMDEntries().resize(chunk_size * 14); int market_data_update_index = 0; int chunk_index = 0; - for (auto marketDataUpdate : latestMarketDataUpdates) { - for (int md_index = 0; md_index < 14; md_index++) { - chunkedIncrementalMarketDataRefresh.c_NoMDEntries[chunk_index++] = - (*marketDataUpdate.second).c_NoMDEntries[md_index]; + for (auto marketDataUpdate : latestMarketDataUpdates) + { + for (int md_index = 0; md_index < 14; md_index++) + { + chunkedIncrementalMarketDataRefresh.c_NoMDEntries()[chunk_index++] = + (marketDataUpdate.second).c_NoMDEntries()[md_index]; } if ((++market_data_update_index) % max_chunk_size == 0 || @@ -114,44 +128,29 @@ int PriceDepthPublisherService::svc(void) { LoggerHelper::log_debug< std::stringstream, MarketDataIncrementalRefreshLogger, DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefresh>( + logger, chunkedIncrementalMarketDataRefresh, "MarketDataIncrementalRefresh"); - std::cout << "Publishing chunk of " - << chunkedIncrementalMarketDataRefresh.c_NoMDEntries.length() - << " updates" << std::endl; + std::cout << "Publishing chunk of " << chunkedIncrementalMarketDataRefresh.c_NoMDEntries().size() << " updates" << std::endl; std::stringstream ss; MarketDataIncrementalRefreshLogger::log( ss, chunkedIncrementalMarketDataRefresh); int ret = _market_data_incremental_refresh_dw->write( - chunkedIncrementalMarketDataRefresh, NULL); - - if (ret != DDS::RETCODE_OK) { - ACE_ERROR((LM_ERROR, - ACE_TEXT("(%P|%t|%D) ERROR: MarketDataIncrementalRefresh " - "write returned %d.\n"), - ret)); - } - - chunk_index = 0; - - CORBA::ULong next_chunk_size = - latestMarketDataUpdates.size() - market_data_update_index > - max_chunk_size - ? max_chunk_size - : (CORBA::ULong)(latestMarketDataUpdates.size() - - market_data_update_index); - - chunkedIncrementalMarketDataRefresh.c_NoMDEntries.length( - next_chunk_size * 14); + &chunkedIncrementalMarketDataRefresh); + + if (ret != eprosima::fastdds::dds::RETCODE_OK) { + LOG4CXX_ERROR(logger, "MarketDataIncrementalRefresh :" << ret); + } + } } latestMarketDataUpdates.clear(); - ACE_OS::nanosleep(&ts); + std::this_thread::sleep_for(std::chrono::duration(_price_depth_pub_interval)); } return 0; diff --git a/MatchingEngine/src/PriceDepthPublisherService.hpp b/MatchingEngine/src/PriceDepthPublisherService.hpp index 8b07a58..9ad8203 100644 --- a/MatchingEngine/src/PriceDepthPublisherService.hpp +++ b/MatchingEngine/src/PriceDepthPublisherService.hpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,15 +25,12 @@ SOFTWARE. */ -#ifndef PriceDepthPublisherService_hpp -#define PriceDepthPublisherService_hpp +#pragma once #include +#include -#include -#include - -#include "MarketDataIncrementalRefreshTypeSupportImpl.h" +#include "MarketDataIncrementalRefresh.hpp" #include "Market.h" @@ -42,24 +39,26 @@ namespace DistributedATS { // // Market Data Publisher Thread - Price Depth // -class PriceDepthPublisherService : public ACE_Task { +class PriceDepthPublisherService { public: - PriceDepthPublisherService(DistributedATS_MarketDataIncrementalRefresh:: - MarketDataIncrementalRefreshDataWriter_var + PriceDepthPublisherService(eprosima::fastdds::dds::DataWriter* market_data_incremental_refresh_dw, PriceDepthPublisherQueuePtr price_depth_publisher_queue_ptr, int price_depth_pub_interval); + + ~PriceDepthPublisherService(); - virtual int svc(void); + int service(); private: - PriceDepthPublisherQueuePtr _price_depth_publisher_queue_ptr; - DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefreshDataWriter_var - _market_data_incremental_refresh_dw; + PriceDepthPublisherQueuePtr _price_depth_publisher_queue_ptr; + eprosima::fastdds::dds::DataWriter* _market_data_incremental_refresh_dw; + + std::atomic _is_running; + std::thread _publisher_thread; - int _price_depth_pub_interval; + + int _price_depth_pub_interval; }; } // namespace DistributedATS - -#endif /* MarketDataService_hpp */ diff --git a/MatchingEngine/src/SecurityListDataReaderListenerImpl.cpp b/MatchingEngine/src/SecurityListDataReaderListenerImpl.cpp index b690750..3dd30ca 100644 --- a/MatchingEngine/src/SecurityListDataReaderListenerImpl.cpp +++ b/MatchingEngine/src/SecurityListDataReaderListenerImpl.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,14 +26,17 @@ */ #include "SecurityListDataReaderListenerImpl.h" +#include #include + #include + namespace DistributedATS { SecurityListDataReaderListenerImpl::SecurityListDataReaderListenerImpl( - MarketPtr marketPtr) + market_ptr marketPtr) : _marketPtr(marketPtr) { // TODO Auto-generated constructor stub } @@ -43,57 +46,28 @@ SecurityListDataReaderListenerImpl::~SecurityListDataReaderListenerImpl() { } void SecurityListDataReaderListenerImpl::on_data_available( - DDS::DataReader_ptr reader) throw(CORBA::SystemException) { - try { - DistributedATS_SecurityList::SecurityListDataReader_var security_list_dr = - DistributedATS_SecurityList::SecurityListDataReader::_narrow(reader); - - if (CORBA::is_nil(security_list_dr.in())) { - std::cerr << "SecurityListDataReaderListenerImpl::on_data_available: " - "_narrow failed." - << std::endl; - ACE_OS::exit(1); - } - - while (true) { - DistributedATS_SecurityList::SecurityList security_list; - DDS::SampleInfo si; - DDS::ReturnCode_t status = - security_list_dr->take_next_sample(security_list, si); - - if (status == DDS::RETCODE_OK) { - if (!si.valid_data) - continue; - - LoggerHelper::log_debug( - security_list, "SecurityListLogger"); - - for (uint32_t sec_index = 0; - sec_index < security_list.c_NoRelatedSym.length(); sec_index++) { - std::string instrument = - security_list.c_NoRelatedSym[sec_index].Symbol.in(); - - std::cout << "Adding book : " << instrument << std::endl; - + eprosima::fastdds::dds::DataReader* reader) +{ + DistributedATS_SecurityList::SecurityList security_list; + eprosima::fastdds::dds::SampleInfo info; + + if (_marketPtr->is_ready_to_trade()) + return; + + if (reader->take_next_sample(&security_list, &info) == eprosima::fastdds::dds::RETCODE_OK) + { + std::stringstream ss; + SecurityListLogger::log(ss, security_list); + LOG4CXX_INFO(logger, "SecurityList : [" << ss.str() << "]"); + + for (uint32_t sec_index = 0; sec_index < security_list.c_NoRelatedSym().size(); sec_index++) + { + std::string instrument = security_list.c_NoRelatedSym()[sec_index].Symbol(); _marketPtr->addBook(instrument, true); } - + // request to recieve opening price _marketPtr->publishMarketDataRequest(); - - } else if (status == DDS::RETCODE_NO_DATA) { - break; - } else { - std::cerr << "ERROR: read DATS::SecurityList: Error: " << status - << std::endl; - } } - - } catch (CORBA::Exception &e) { - std::cerr << "Exception caught in read:" << std::endl << e << std::endl; - ACE_OS::exit(1); - } } - } /* namespace DistributedATS */ diff --git a/MatchingEngine/src/SecurityListDataReaderListenerImpl.h b/MatchingEngine/src/SecurityListDataReaderListenerImpl.h index 245eb99..d377631 100644 --- a/MatchingEngine/src/SecurityListDataReaderListenerImpl.h +++ b/MatchingEngine/src/SecurityListDataReaderListenerImpl.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -25,56 +25,25 @@ SOFTWARE. */ -#ifndef SECURITYLISTDATAREADERLISTENERIMPL_H_ -#define SECURITYLISTDATAREADERLISTENERIMPL_H_ +#pragma once #include "Market.h" -#include namespace DistributedATS { class SecurityListDataReaderListenerImpl - : public virtual OpenDDS::DCPS::LocalObject { + : public eprosima::fastdds::dds::DataReaderListener { public: SecurityListDataReaderListenerImpl( std::shared_ptr market); - virtual ~SecurityListDataReaderListenerImpl(); + ~SecurityListDataReaderListenerImpl() override; - virtual void - on_data_available(DDS::DataReader_ptr reader) throw(CORBA::SystemException); + void + on_data_available(eprosima::fastdds::dds::DataReader* reader) override; - virtual void - on_requested_deadline_missed(DDS::DataReader_ptr reader, - const DDS::RequestedDeadlineMissedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_requested_incompatible_qos(DDS::DataReader_ptr reader, - const DDS::RequestedIncompatibleQosStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_liveliness_changed(DDS::DataReader_ptr reader, - const DDS::LivelinessChangedStatus - &status) throw(CORBA::SystemException){}; - - virtual void - on_subscription_matched(DDS::DataReader_ptr reader, - const DDS::SubscriptionMatchedStatus - &status) throw(CORBA::SystemException){}; - - virtual void on_sample_rejected( - DDS::DataReader_ptr reader, - const DDS::SampleRejectedStatus &status) throw(CORBA::SystemException){}; - - virtual void on_sample_lost( - DDS::DataReader_ptr reader, - const DDS::SampleLostStatus &status) throw(CORBA::SystemException){}; private: - MarketPtr _marketPtr; + market_ptr _marketPtr; }; } /* namespace DistributedATS */ - -#endif /* SECURITYLISTDATAREADERLISTENERIMPL_H_ */ diff --git a/MatchingEngine/src/SecurityListRequestDataWriterListener.h b/MatchingEngine/src/SecurityListRequestDataWriterListener.h new file mode 100644 index 0000000..de154b5 --- /dev/null +++ b/MatchingEngine/src/SecurityListRequestDataWriterListener.h @@ -0,0 +1,48 @@ +#pragma once + +namespace DistributedATS +{ + +class SecurityListRequestDataWriterListener : public eprosima::fastdds::dds::DataWriterListener +{ + + public: + + SecurityListRequestDataWriterListener( const market_ptr& marketPtr ) : matched_(0), _market_ptr(marketPtr) + { + } + + ~SecurityListRequestDataWriterListener() override + { + } + + void on_publication_matched( + eprosima::fastdds::dds::DataWriter* dwr, + const eprosima::fastdds::dds::PublicationMatchedStatus& info) override + { + if (info.current_count_change >= 1) + { + matched_ = info.total_count; + LOG4CXX_INFO(logger, "SecurityListRequestDataWriterListener Publisher Matched:" << matched_); + if ( !_market_ptr->is_ready_to_trade() ) + _market_ptr->publishSecurityListRequest(dwr); + } + else if (info.current_count_change == -1) + { + matched_ = info.total_count; + LOG4CXX_INFO(logger, "SecurityListRequestDataWriterListener Publisher UnMatched:" << matched_); + } + else + { + LOG4CXX_INFO(logger, "Is not a valid value for PublicationMatchedStatus current count change." << info.current_count_change); + } + } + + private: + market_ptr _market_ptr; + std::atomic_int matched_; + }; + +using security_list_request_data_writer_listener_ptr = std::unique_ptr; + +}; diff --git a/MatchingEngine/src/main.cpp b/MatchingEngine/src/main.cpp index d976023..4cd5a8d 100644 --- a/MatchingEngine/src/main.cpp +++ b/MatchingEngine/src/main.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -26,442 +26,308 @@ */ #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - #include #include -#include - -#include - -#include -#include - -#include "ExecutionReportTypeSupportImpl.h" -#include "MarketDataIncrementalRefreshTypeSupportImpl.h" -#include "MarketDataSnapshotFullRefreshDataReaderListenerImpl.h" -#include "NewOrderSingleDataReaderListenerImpl.h" -#include "OrderCancelRequestDataReaderListenerImpl.h" -#include "OrderMassCancelRequestDataReaderListenerImpl.h" -#include "SecurityListDataReaderListenerImpl.h" -#include "OrderCancelReplaceRequestDataReaderListenerImpl.h" - #include "Market.h" #include - -#include - #include #include #include "DataWriterContainer.h" - #include "PriceDepthPublisherService.hpp" -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -std::atomic is_running; +#include "NewOrderSingleDataReaderListenerImpl.h" +#include "OrderCancelRequestDataReaderListenerImpl.h" +#include "OrderMassCancelRequestDataReaderListenerImpl.h" +#include "OrderCancelReplaceRequestDataReaderListenerImpl.h" +#include "SecurityListDataReaderListenerImpl.h" +#include "MarketDataSnapshotFullRefreshDataReaderListenerImpl.h" +#include "SecurityListRequestDataWriterListener.h" -namespace DistributedATS { +#include +#include -class SignalHandler : public ACE_Event_Handler { -public: - virtual int handle_signal(int signum, siginfo_t * = 0, ucontext_t * = 0) { - std::cout << "Lets hangle signal : " << signum << std::endl; - is_running.store(false); - return 0; - }; -}; +#include +#include +#include +#include +#include +#include -}; // namespace DistributedATS +#include +#include -int main(int argc, char *argv[]) { - DDS::DomainParticipantFactory_var dpf = DDS::DomainParticipantFactory::_nil(); - try { - dpf = TheParticipantFactoryWithArgs(argc, argv); +#include - if (argc < 2) { - std::cout << "usage: " << argv[0] << std::endl - << "\t\t-c matching_engine_config_file_name" << std::endl; - return -1; - } +std::atomic is_running; - ACE_Get_Opt cmd_opts(argc, argv, ":c:"); - int option; - // std::string market_name = ""; - // std::string data_service_name = ""; +int main(int argc, char *argv[]) { - std::string matching_engine_config_file = ""; + + try { - while ((option = cmd_opts()) != EOF) { - switch (option) { - case 'c': - matching_engine_config_file = cmd_opts.opt_arg(); - break; + std::string matching_engine_config_file = ""; + + boost::program_options::options_description options_desc{"Options"}; + + options_desc.add_options() + ("help,h", "Help screen") + ("config,c", boost::program_options::value()->default_value(""), "Matching Engine Config File"); + + boost::program_options::variables_map vm; + boost::program_options::store(parse_command_line(argc, argv, options_desc), vm); + boost::program_options::notify(vm); + + if (vm.count("help")) + std::cout << options_desc << '\n'; + else if (vm.count("config")) + matching_engine_config_file = vm["config"].as(); + + + if ( matching_engine_config_file.empty() ) + { + std::cerr << "Error: Config file name is not specified." << std::endl; + return -1; } - } - - if (matching_engine_config_file.empty()) { - std::cerr << "Error: Config file name is not specified." << std::endl; - return -1; - } - - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) INFO: Config File : [%s]\n"), - matching_engine_config_file.c_str())); - - ConfigFileHelper configFileHelper(matching_engine_config_file.c_str()); - - ACE_TString market_name; - if (configFileHelper.get_string_value( - ACE_TEXT("matchingengine"), ACE_TEXT("market_name"), market_name)) { - ACE_ERROR( - (LM_ERROR, - ACE_TEXT( - "(%P|%t) ERROR: Unable to get market name from ini file %d.\n"), - ACE_OS::last_error())); - }; - - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) INFO: MarketName:[%s]\n"), - market_name.c_str())); - - ACE_TString data_service_name; - if (configFileHelper.get_string_value(ACE_TEXT("matchingengine"), - ACE_TEXT("dataservice_name"), - data_service_name)) { - ACE_ERROR((LM_ERROR, - ACE_TEXT("(%P|%t) ERROR: Unable to get data service name from " - "ini file %d.\n"), - ACE_OS::last_error())); - }; + + boost::property_tree::ptree pt; + boost::property_tree::ini_parser::read_ini(matching_engine_config_file, pt); + + std::string data_service_name = pt.get("matchingengine.dataservice_name"); + std::string market_name = pt.get("matchingengine.market_name"); + + int price_depth_pub_interval = pt.get("marketdata.price_depth_pub_interval"); - ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) INFO: DataService:[%s]\n"), - data_service_name.c_str())); + LOG4CXX_INFO(logger, "Market Name|" << market_name + << "|Data Service Name|" << data_service_name << "|Price Depth Publication Interval|" << price_depth_pub_interval ); - if (market_name.empty() || data_service_name.empty()) { - std::cerr << "No market name specified or no data service association in " - "config file" - << std::endl; - return -1; - } - - int price_depth_pub_interval; - if (configFileHelper.get_integer_value(ACE_TEXT("marketdata"), - ACE_TEXT("price_depth_pub_interval"), - &price_depth_pub_interval)) { - ACE_ERROR((LM_ERROR, - ACE_TEXT("(%P|%t) ERROR: Unable to get price depth publication interval from " - "ini file %d.\n"), - ACE_OS::last_error())); - }; - - std::cout << "Market Name : " << market_name - << " Data Service Name : " << data_service_name << " Price Depth Publication Interval :" << price_depth_pub_interval << std::endl; - - ACE_Sig_Handler handler; - DistributedATS::SignalHandler signalHandler; - - // add signal handler for the SIGINT signal here - ACE_Sig_Handler sig_handler; - sig_handler.register_handler(SIGINT, &signalHandler); - - distributed_ats_utils::BasicDomainParticipant participant( - dpf, DISTRIBUTED_ATS_DOMAIN_ID); - participant.createSubscriber(); - participant.createPublisher(); - - // Enqueue incremental market data update, - // but publish conflated updates from - // the MarketData Service Thread - auto price_depth_publisher_queue_ptr = + // Enqueue incremental market data update, + // but publish conflated updates from + // the MarketData Service Thread + auto price_depth_publisher_queue_ptr = std::make_shared(); - - auto dataWriterContainer = std::make_shared(); + + auto dataWriterContainer = std::make_shared(); - auto market = + auto market = std::make_shared(dataWriterContainer, - market_name.c_str(), data_service_name.c_str(), + market_name, data_service_name, price_depth_publisher_queue_ptr); - std::atomic_init(&is_running, true); + std::atomic_init(&is_running, true); - // Filter expression for the MARKET_NAME specified in config file - // filter for messages for this market/security exchange - std::string filter_str = - "m_Header.TargetCompID = 'MATCHING_ENGINE' and SecurityExchange='" + - market->getMarketName() + "'"; - // filter for mass cancel - std::string filter_str_target_only = - "m_Header.TargetCompID = 'MATCHING_ENGINE'"; + // filter expression for the MARKET_NAME specified in config file + // filter for messages for this market/security exchange + std::string destination_market_filter = "DATS_Destination = %0 and SecurityExchange = %1"; + + // filter for mass cancel - when client disconnects all orders get cancelled + std::string matching_engine_filter = "DATS_Destination = %0"; + + // market filter: Securities List, Open Prices(Market Data Snap Shot) + std::string market_filter = "DATS_DestinationUser = %0"; - // Incoming data - // New Order Single: - // Topic - DDS::Topic_var new_order_single_topic = - participant.createTopicAndRegisterType< - DistributedATS_NewOrderSingle::NewOrderSingleTypeSupport_var, - DistributedATS_NewOrderSingle::NewOrderSingleTypeSupportImpl>( - NEW_ORDER_SINGLE_TOPIC_NAME); - // Filter - DDS::ContentFilteredTopic_ptr cft = - participant.getDomainParticipant()->create_contentfilteredtopic( - "FILTER_MATCHING_ENGINE_NEW_ORDER_SINGLE", new_order_single_topic, - filter_str.c_str(), DDS::StringSeq()); - // Data Reader - DDS::DataReaderListener_var newOrderSingleDataListener( - new MatchingEngine::NewOrderSingleDataReaderListenerImpl(market)); - participant.createDataReaderListener(cft, newOrderSingleDataListener); - - // Order cancel - // Topic - DDS::Topic_var order_cancel_request_topic = - participant.createTopicAndRegisterType< - DistributedATS_OrderCancelRequest::OrderCancelRequestTypeSupport_var, - DistributedATS_OrderCancelRequest::OrderCancelRequestTypeSupportImpl>( - ORDER_CANCEL_REQUEST_TOPIC_NAME); - // Filter - DDS::ContentFilteredTopic_ptr cft_cancel = - participant.getDomainParticipant()->create_contentfilteredtopic( - "FILTER_MATCHING_ENGINE_ORDER_CANCEL_REQUEST", - order_cancel_request_topic, filter_str.c_str(), DDS::StringSeq()); - // Data Reader - DDS::DataReaderListener_var orderCancelRequestDataListener( - new MatchingEngine::OrderCancelRequestDataReaderListenerImpl(market)); - participant.createDataReaderListener(cft_cancel, - orderCancelRequestDataListener); - - // Mass cancel requests - // Topic - DDS::Topic_var order_mass_cancel_request_topic = - participant.createTopicAndRegisterType< - DistributedATS_OrderMassCancelRequest::OrderMassCancelRequestTypeSupport_var, - DistributedATS_OrderMassCancelRequest::OrderMassCancelRequestTypeSupportImpl>( - ORDER_MASS_CANCEL_REQUEST_TOPIC_NAME); - // Filter - DDS::ContentFilteredTopic_ptr cft_mass_cancel = - participant.getDomainParticipant()->create_contentfilteredtopic( - "FILTER_MATCHING_ENGINE_ORDER_MASS_CANCEL_REQUEST", - order_mass_cancel_request_topic, filter_str_target_only.c_str(), - DDS::StringSeq()); - // Data Reader - DDS::DataReaderListener_var orderMassCancelRequestDataListener( - new MatchingEngine::OrderMassCancelRequestDataReaderListenerImpl( - market)); - participant.createDataReaderListener(cft_mass_cancel, - orderMassCancelRequestDataListener); - // Order cancel/replace requests + auto participant_ptr = + std::make_shared(0, market_name); + + participant_ptr->create_subscriber(); + participant_ptr->create_publisher(); + + // Incoming data + // New Order Single: // Topic - DDS::Topic_var order_cancel_replace_request_topic = - participant.createTopicAndRegisterType< - DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequestTypeSupport_var, - DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequestTypeSupportImpl>( - ORDER_CANCEL_REPLACE_REQUEST_TOPIC_NAME); - // Filter - DDS::ContentFilteredTopic_ptr cft_cancel_replace = - participant.getDomainParticipant()->create_contentfilteredtopic( - "FILTER_MATCHING_ENGINE_ORDER_CANCEL_REPLACE_REQUEST", - order_cancel_replace_request_topic, filter_str_target_only.c_str(), - DDS::StringSeq()); - // Data Reader - DDS::DataReaderListener_var orderCancelReplaceRequestDataListener( - new MatchingEngine::OrderCancelReplaceRequestDataReaderListenerImpl( - market)); - participant.createDataReaderListener(cft_cancel_replace, - orderCancelReplaceRequestDataListener); - - // Topic to receive list of securities to setup order books - // Topic - DDS::Topic_var security_list_topic = participant.createTopicAndRegisterType< - DistributedATS_SecurityList::SecurityListTypeSupport_var, - DistributedATS_SecurityList::SecurityListTypeSupportImpl>( - SECURITY_LIST_TOPIC_NAME); - // Filter - DDS::ContentFilteredTopic_ptr cft_security_list = - participant.getDomainParticipant()->create_contentfilteredtopic( - "FILTER_MATCHING_ENGINE_SECURITY_LIST", security_list_topic, - std::string("m_Header.TargetCompID = '" + market->getMarketName() + - "'") - .c_str(), - DDS::StringSeq()); - // Data Reader - DDS::DataReaderListener_var securityListDataListener( - new DistributedATS::SecurityListDataReaderListenerImpl(market)); - participant.createDataReaderListener(cft_security_list, - securityListDataListener); + auto new_order_single_topic_tuple = + participant_ptr->make_topic< + DistributedATS_NewOrderSingle::NewOrderSinglePubSubType, + DistributedATS_NewOrderSingle::NewOrderSingle>(NEW_ORDER_SINGLE_TOPIC_NAME); + + auto new_order_single_data_reader_tuple = + participant_ptr->make_data_reader_tuple(new_order_single_topic_tuple, + new MatchingEngine::NewOrderSingleDataReaderListenerImpl(market), + "FILTER_MATCHING_ENGINE_NEW_ORDER_SINGLE", destination_market_filter, + { "MATCHING_ENGINE", market_name}); + + + auto order_cancel_request_topic_tuple = participant_ptr->make_topic< + DistributedATS_OrderCancelRequest::OrderCancelRequestPubSubType, + DistributedATS_OrderCancelRequest::OrderCancelRequest>(ORDER_CANCEL_REQUEST_TOPIC_NAME); + + auto order_cancel_request_data_reader_tuple = + participant_ptr->make_data_reader_tuple(order_cancel_request_topic_tuple, + new MatchingEngine::OrderCancelRequestDataReaderListenerImpl(market), + "FILTER_MATCHING_ENGINE_ORDER_CANCEL_REQUEST", + destination_market_filter, + { "MATCHING_ENGINE", market_name}); - // Topic to receive market open prices - // Topic - DDS::Topic_var market_data_snapshot_full_refresh_topic = - participant.createTopicAndRegisterType< + + auto order_mass_cancel_request_topic_tuple = participant_ptr->make_topic< + DistributedATS_OrderMassCancelRequest::OrderMassCancelRequestPubSubType, + DistributedATS_OrderMassCancelRequest::OrderMassCancelRequest>(ORDER_MASS_CANCEL_REQUEST_TOPIC_NAME); + auto order_mass_cancel_request_topic_data_reader_tuple = + participant_ptr->make_data_reader_tuple(order_mass_cancel_request_topic_tuple, + new MatchingEngine::OrderMassCancelRequestDataReaderListenerImpl(market), + "FILTER_MATCHING_ENGINE_ORDER_MASS_CANCEL_REQUEST", + matching_engine_filter, {"MATCHING_ENGINE"}); + + auto order_cancel_replace_request_topic_tuple = participant_ptr->make_topic< + DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequestPubSubType, + DistributedATS_OrderCancelReplaceRequest::OrderCancelReplaceRequest>(ORDER_CANCEL_REPLACE_REQUEST_TOPIC_NAME); + auto order_cancel_replace_request_data_reader_tuple = + participant_ptr->make_data_reader_tuple(order_cancel_replace_request_topic_tuple, + new MatchingEngine::OrderCancelReplaceRequestDataReaderListenerImpl(market), + "FILTER_MATCHING_ENGINE_ORDER_CANCEL_REPLACE_REQUEST", destination_market_filter, + { "MATCHING_ENGINE", "SecurityExchange"}); + + auto security_list_topic_tuple = participant_ptr->make_topic< + DistributedATS_SecurityList::SecurityListPubSubType, + DistributedATS_SecurityList::SecurityList>(SECURITY_LIST_TOPIC_NAME); + auto security_list_topic_request_data_reader_tuple = + participant_ptr->make_data_reader_tuple(security_list_topic_tuple, + new DistributedATS::SecurityListDataReaderListenerImpl(market), + "FILTER_MATCHING_ENGINE_SECURITY_LIST", market_filter, { market->getMarketName() }); + + auto market_data_snapshot_full_refresh_topic_tuple = participant_ptr->make_topic< DistributedATS_MarketDataSnapshotFullRefresh:: - MarketDataSnapshotFullRefreshTypeSupport_var, + MarketDataSnapshotFullRefreshPubSubType, DistributedATS_MarketDataSnapshotFullRefresh:: - MarketDataSnapshotFullRefreshTypeSupportImpl>( - MARKET_DATA_SNAPSHOT_FULL_REFRESH_TOPIC_NAME); - // Filter - DDS::ContentFilteredTopic_ptr cft_market_data_full_snapshot = - participant.getDomainParticipant()->create_contentfilteredtopic( - "FILTER_MATCHING_ENGINE_FULL_SNAPSHOT_REQUEST", - market_data_snapshot_full_refresh_topic, - std::string("m_Header.TargetCompID = '" + market->getMarketName() + - "'") - .c_str(), - DDS::StringSeq()); - // Data Reader - DDS::DataReaderListener_var marketDataFullSnapshotDataListener( - new DistributedATS::MarketDataSnapshotFullRefreshDataReaderListenerImpl( - market)); - participant.createDataReaderListener(cft_market_data_full_snapshot, - marketDataFullSnapshotDataListener); - // - // Outgoing data - // - // Execution Reports - // Topic - DDS::Topic_var execution_report_topic = - participant.createTopicAndRegisterType< - DistributedATS_ExecutionReport::ExecutionReportTypeSupport_var, - DistributedATS_ExecutionReport::ExecutionReportTypeSupportImpl>( - EXECUTION_REPORT_TOPIC_NAME); - // Data Writer - DistributedATS_ExecutionReport::ExecutionReportDataWriter_var execution_report_dw = - participant.createDataWriter< - DistributedATS_ExecutionReport::ExecutionReportDataWriter_var, - DistributedATS_ExecutionReport::ExecutionReportDataWriter>( - execution_report_topic); - // Market Setter - dataWriterContainer->setExecutionReportDataWriter(execution_report_dw); + MarketDataSnapshotFullRefresh>(MARKET_DATA_SNAPSHOT_FULL_REFRESH_TOPIC_NAME); + auto market_data_snapshot_full_refresh_data_reader_tuple = + participant_ptr->make_data_reader_tuple(market_data_snapshot_full_refresh_topic_tuple, + new DistributedATS::MarketDataSnapshotFullRefreshDataReaderListenerImpl(market), + "FILTER_MATCHING_ENGINE_FULL_SNAPSHOT_REQUEST", market_filter, { market->getMarketName() }); + + // + // Outgoing data + // + // Execution Reports + // Topic + auto execution_report_topic_tuple = + participant_ptr->make_topic< + DistributedATS_ExecutionReport::ExecutionReportPubSubType, + DistributedATS_ExecutionReport::ExecutionReport>( + EXECUTION_REPORT_TOPIC_NAME);; + // Data Writer + dataWriterContainer->execution_report_dw = + participant_ptr->make_data_writer(execution_report_topic_tuple); // Topic to publish status of mass cancel report // Topic - DDS::Topic_var order_mass_cancel_report_topic = - participant.createTopicAndRegisterType< - DistributedATS_OrderMassCancelReport::OrderMassCancelReportTypeSupport_var, - DistributedATS_OrderMassCancelReport::OrderMassCancelReportTypeSupportImpl>( + auto order_mass_cancel_report_topic_tuple = + participant_ptr->make_topic< + DistributedATS_OrderMassCancelReport::OrderMassCancelReportPubSubType, + DistributedATS_OrderMassCancelReport::OrderMassCancelReport>( ORDER_MASS_CANCEL_REPORT_TOPIC_NAME); - // Data Writer - DistributedATS_OrderMassCancelReport::OrderMassCancelReportDataWriter_var - order_mass_cancel_report_dw = participant.createDataWriter< - DistributedATS_OrderMassCancelReport::OrderMassCancelReportDataWriter_var, - DistributedATS_OrderMassCancelReport::OrderMassCancelReportDataWriter>( - order_mass_cancel_report_topic); - // Market Setter - dataWriterContainer->setOrderMassCancelReportDataWriter(order_mass_cancel_report_dw); - // Topic to request list of securities to setup order books - // Topic - DDS::Topic_var security_list_request_topic = - participant.createTopicAndRegisterType< - DistributedATS_SecurityListRequest::SecurityListRequestTypeSupport_var, - DistributedATS_SecurityListRequest::SecurityListRequestTypeSupportImpl>( + dataWriterContainer->order_mass_cancel_report_dw = participant_ptr->make_data_writer( + order_mass_cancel_report_topic_tuple); + + // Topic to request list of securities to setup order books + // Topic + auto security_list_request_topic_tuple = + participant_ptr->make_topic< + DistributedATS_SecurityListRequest::SecurityListRequestPubSubType, + DistributedATS_SecurityListRequest::SecurityListRequest>( SECURITY_LIST_REQUEST_TOPIC_NAME); - // Data Writer - DistributedATS_SecurityListRequest::SecurityListRequestDataWriter_var - security_list_request_dw = participant.createDataWriter< - DistributedATS_SecurityListRequest::SecurityListRequestDataWriter_var, - DistributedATS_SecurityListRequest::SecurityListRequestDataWriter>( - security_list_request_topic); - // Market Setter - dataWriterContainer->setSecurityListRequestDataWriter(security_list_request_dw); + + DistributedATS::security_list_request_data_writer_listener_ptr + sec_list_req_dw_ptr(new DistributedATS::SecurityListRequestDataWriterListener(market)); - // Topic to publish order cancel reject - // Topic - DDS::Topic_var order_cancel_reject_topic = - participant.createTopicAndRegisterType< - DistributedATS_OrderCancelReject::OrderCancelRejectTypeSupport_var, - DistributedATS_OrderCancelReject::OrderCancelRejectTypeSupportImpl>( + dataWriterContainer->security_list_request_dw = + participant_ptr->make_data_writer(security_list_request_topic_tuple, sec_list_req_dw_ptr.get()); + + + // Topic to publish order cancel reject + // Topic + auto order_cancel_reject_topic_tuple = + participant_ptr->make_topic< + DistributedATS_OrderCancelReject::OrderCancelRejectPubSubType, + DistributedATS_OrderCancelReject::OrderCancelReject>( ORDER_CANCEL_REJECT_TOPIC_NAME); - // Data Writer - DistributedATS_OrderCancelReject::OrderCancelRejectDataWriter_var - order_cancel_reject_dw = participant.createDataWriter< - DistributedATS_OrderCancelReject::OrderCancelRejectDataWriter_var, - DistributedATS_OrderCancelReject::OrderCancelRejectDataWriter>( - order_cancel_reject_topic); - // Market Setter - dataWriterContainer->setOrderCancelRejectDataWriter(order_cancel_reject_dw); - // Topic to publish conflated incremental market data refresh - // Topic - DDS::Topic_var market_data_incremental_refresh_topic = - participant.createTopicAndRegisterType< - DistributedATS_MarketDataIncrementalRefresh:: - MarketDataIncrementalRefreshTypeSupport_var, - DistributedATS_MarketDataIncrementalRefresh:: - MarketDataIncrementalRefreshTypeSupportImpl>( + dataWriterContainer->order_cancel_reject_dw = + participant_ptr->make_data_writer(order_cancel_reject_topic_tuple); + + + // Topic to publish conflated incremental market data refresh + // Topic + auto market_data_incremental_refresh_topic_tuple = + participant_ptr->make_topic< + DistributedATS_MarketDataIncrementalRefresh:: + MarketDataIncrementalRefreshPubSubType, + DistributedATS_MarketDataIncrementalRefresh:: + MarketDataIncrementalRefresh>( MARKET_DATA_INCREMENTAL_REFRESH_TOPIC_NAME); - // Data Writer - DistributedATS_MarketDataIncrementalRefresh::MarketDataIncrementalRefreshDataWriter_var - market_data_incremental_refresh_dw = participant.createDataWriter< - DistributedATS_MarketDataIncrementalRefresh:: - MarketDataIncrementalRefreshDataWriter_var, - DistributedATS_MarketDataIncrementalRefresh:: - MarketDataIncrementalRefreshDataWriter>( - market_data_incremental_refresh_topic); + + dataWriterContainer->market_data_incremental_refresh_dw = participant_ptr->make_data_writer( + market_data_incremental_refresh_topic_tuple); // Market Setter - dataWriterContainer->setMarketDataIncrementalRefreshDataWriter( - market_data_incremental_refresh_dw); + /// dataWriterContainer->setMarketDataIncrementalRefreshDataWriter( + // market_data_incremental_refresh_dw); // Market Data Request // Topic - DDS::Topic_var market_data_request_topic = - participant.createTopicAndRegisterType< - DistributedATS_MarketDataRequest::MarketDataRequestTypeSupport_var, - DistributedATS_MarketDataRequest::MarketDataRequestTypeSupportImpl>( + auto market_data_request_topic_tuple = + participant_ptr->make_topic< + DistributedATS_MarketDataRequest::MarketDataRequestPubSubType, + DistributedATS_MarketDataRequest::MarketDataRequest>( MARKET_DATA_REQUEST_TOPIC_NAME); // Data Writer - DistributedATS_MarketDataRequest::MarketDataRequestDataWriter_var - marketDataRequestDataWriter = participant.createDataWriter< - DistributedATS_MarketDataRequest::MarketDataRequestDataWriter_var, - DistributedATS_MarketDataRequest::MarketDataRequestDataWriter>( - market_data_request_topic); - // Market Setter - dataWriterContainer->setMarketDataRequestDataWriter(marketDataRequestDataWriter); + dataWriterContainer->market_data_request_dw = + participant_ptr->make_data_writer(market_data_request_topic_tuple); - // - // We should be all set with topics, data readers and data writers setup. - // Lets publish security list request to a DataService. - // - // SecurityListDataReader should recieve set of instruments from DataService - // and setup order books in LiquiBook. - market->publishSecurityListRequest(); // lets create and active conflated market data publisher auto price_depth_publisher_service_ptr = std::make_shared( - market_data_incremental_refresh_dw, + dataWriterContainer->market_data_incremental_refresh_dw.get(), price_depth_publisher_queue_ptr, price_depth_pub_interval); + + std::atomic_init(&is_running, true); - price_depth_publisher_service_ptr->activate(); - - while (is_running == true) - ACE_OS::sleep(1); - - participant.getDomainParticipant()->delete_subscriber( - participant.getSubscriber()); - - market->cancel_all_orders(); + boost::asio::io_context io_service; + boost::asio::signal_set signals(io_service, SIGINT, SIGTERM); + + signals.async_wait([&](const boost::system::error_code& ec, int signal_number) { + if (!ec) { + std::cout << "Signal number " << signal_number << std::endl; + std::cout << "Gracefully stopping the timer and exiting" + << std::endl; + is_running.store(false); + } else { + std::cout << "Error " << ec.value() << " - " << ec.message() + << " - Signal number - " << signal_number << std::endl; + } + }); + + io_service.run(); + } catch (std::exception &e) { - ACE_ERROR ((LM_CRITICAL, ACE_TEXT("(%P|%t|%D) ERROR: Exception during the initialization of Matching Engine : %s\n"), e.what())); - + + LOG4CXX_ERROR(logger, "Exception during the initialization of Matching Engine :" << e.what()); + std::cout << e.what() << std::endl; return 1; diff --git a/MiscATS/CryptoCLOB/config/data_service_a.ini b/MiscATS/CryptoCLOB/config/data_service_a.ini index 9edc991..0e51225 100644 --- a/MiscATS/CryptoCLOB/config/data_service_a.ini +++ b/MiscATS/CryptoCLOB/config/data_service_a.ini @@ -1,5 +1,5 @@ [database] -database_file=../../../DataService/sql/sqlite/distributed_ats.db +database_file=distributed_ats.db [dataservice] name=DATA_SERVICE_A diff --git a/MiscATS/CryptoCLOB/config/data_service_b.ini b/MiscATS/CryptoCLOB/config/data_service_b.ini index eb4c5ac..e18329d 100644 --- a/MiscATS/CryptoCLOB/config/data_service_b.ini +++ b/MiscATS/CryptoCLOB/config/data_service_b.ini @@ -1,5 +1,5 @@ [database] -database_file=../../../DataService/sql/sqlite/distributed_ats.db +database_file=distributed_ats.db [dataservice] name=DATA_SERVICE_B diff --git a/MiscATS/CryptoCLOB/config/fix_gwy_1.cfg b/MiscATS/CryptoCLOB/config/fix_gwy_1.cfg index 16c05f7..42f3670 100644 --- a/MiscATS/CryptoCLOB/config/fix_gwy_1.cfg +++ b/MiscATS/CryptoCLOB/config/fix_gwy_1.cfg @@ -6,9 +6,9 @@ DataService=DATA_SERVICE_A ConnectionType=acceptor SocketReuseAddress=Y -DataDictionary=../../../FIXGateway/spec/FIX44.xml -FileLogPath=../logs -FileStorePath=../store +DataDictionary=FIX44.xml +FileLogPath=/tmp/logs +FileStorePath=/tmp/store StartTime=00:00:00 EndTime=00:00:00 TimestampPrecision=6 diff --git a/MiscATS/CryptoCLOB/config/fix_gwy_2.cfg b/MiscATS/CryptoCLOB/config/fix_gwy_2.cfg index fc4de11..c6353f9 100644 --- a/MiscATS/CryptoCLOB/config/fix_gwy_2.cfg +++ b/MiscATS/CryptoCLOB/config/fix_gwy_2.cfg @@ -6,9 +6,9 @@ DataService=DATA_SERVICE_A ConnectionType=acceptor SocketReuseAddress=Y -DataDictionary=../../../FIXGateway/spec/FIX44.xml -FileLogPath=../logs -FileStorePath=../store +DataDictionary=FIX44.xml +FileLogPath=/tmp/logs +FileStorePath=/tmp/store StartTime=00:00:00 EndTime=00:00:00 TimestampPrecision=6 diff --git a/MiscATS/CryptoCLOB/config/fix_gwy_3.cfg b/MiscATS/CryptoCLOB/config/fix_gwy_3.cfg index 22d0d3f..07b4961 100644 --- a/MiscATS/CryptoCLOB/config/fix_gwy_3.cfg +++ b/MiscATS/CryptoCLOB/config/fix_gwy_3.cfg @@ -6,9 +6,9 @@ DataService=DATA_SERVICE_B ConnectionType=acceptor SocketReuseAddress=Y -DataDictionary=../../../FIXGateway/spec/FIX44.xml -FileLogPath=../logs -FileStorePath=../store +DataDictionary=FIX44.xml +FileLogPath=/tmp/logs +FileStorePath=/tmp/store StartTime=00:00:00 EndTime=00:00:00 TimestampPrecision=6 diff --git a/MiscATS/CryptoCLOB/config/matching_engine_MARKET_BTC.ini b/MiscATS/CryptoCLOB/config/matching_engine_MARKET_BTC.ini index cd59625..3060e91 100644 --- a/MiscATS/CryptoCLOB/config/matching_engine_MARKET_BTC.ini +++ b/MiscATS/CryptoCLOB/config/matching_engine_MARKET_BTC.ini @@ -3,4 +3,4 @@ market_name=BTC_MARKET dataservice_name=DATA_SERVICE_A [marketdata] -price_depth_pub_interval=200000 // Microseconds +price_depth_pub_interval=200000 diff --git a/MiscATS/CryptoCLOB/config/matching_engine_MARKET_ETH.ini b/MiscATS/CryptoCLOB/config/matching_engine_MARKET_ETH.ini index 2789e89..d0cd8b7 100644 --- a/MiscATS/CryptoCLOB/config/matching_engine_MARKET_ETH.ini +++ b/MiscATS/CryptoCLOB/config/matching_engine_MARKET_ETH.ini @@ -3,4 +3,4 @@ market_name=ETH_MARKET dataservice_name=DATA_SERVICE_B [marketdata] -price_depth_pub_interval=200000 // Microseconds +price_depth_pub_interval=200000 diff --git a/MiscATS/CryptoCLOB/config/matching_engine_MARKET_OTHER_COIN.ini b/MiscATS/CryptoCLOB/config/matching_engine_MARKET_OTHER_COIN.ini index a531e63..dd48e20 100644 --- a/MiscATS/CryptoCLOB/config/matching_engine_MARKET_OTHER_COIN.ini +++ b/MiscATS/CryptoCLOB/config/matching_engine_MARKET_OTHER_COIN.ini @@ -3,4 +3,4 @@ market_name=OTHER_COIN_MARKET dataservice_name=DATA_SERVICE_B [marketdata] -price_depth_pub_interval=200000 // Microseconds +price_depth_pub_interval=200000 diff --git a/MiscATS/CryptoCLOB/data/distributed_ats.db b/MiscATS/CryptoCLOB/data/distributed_ats.db new file mode 100644 index 0000000..440cc49 Binary files /dev/null and b/MiscATS/CryptoCLOB/data/distributed_ats.db differ diff --git a/MiscATS/CryptoCLOB/scripts/start_ats.sh b/MiscATS/CryptoCLOB/scripts/start_ats.sh index c551215..aae85ee 100755 --- a/MiscATS/CryptoCLOB/scripts/start_ats.sh +++ b/MiscATS/CryptoCLOB/scripts/start_ats.sh @@ -6,91 +6,46 @@ cleanup() { echo "Caught Signal ... cleaning up..." - $BASEDIR/scripts/stop_ats.sh + $BASEDIR_ATS/scripts/stop_ats.sh echo "Done." exit 1; } -echo "DDS_ROOT :" $DDS_ROOT -PROGNAME=DCPSInfoRepo -PRG="$0" - -PRGDIR=`dirname "$PRG"` -BASEDIR=`cd "$PRGDIR/.." > /dev/null; pwd` - -PROCESS_PATTERN="$PROGNAME -ORBEndpoint iiop://localhost:12345 -DCPSDebugLevel=0 -ORBLogFile $BASEDIR/logs/$PROGNAME.log" -echo $PROCESS_PATTERN - -idn=$(id -u) - -echo "User ID :" $idn - -if [ ! -d "$BASEDIR/logs/" ] -then - mkdir $BASEDIR/logs/ -fi - -logfile=$BASEDIR/logs/$PROGNAME.startstop.log - -#ldd $DDS_ROOT/bin/$PROGNAME >> $logfile - -BROKER_PID=`pgrep -f "$PROCESS_PATTERN$"` -echo $BROKER_PID >> $logfile; -if [ ! -z "$BROKER_PID" ] -then - echo "Broker already running - $BROKER_PID"; - echo "Broker already running - $BROKER_PID" >> $logfile; -else - echo "Starting Broker - $PROCESS_PATTERN" - - nohup $DDS_ROOT/bin/$PROCESS_PATTERN & >> $logfile 2>&1 - sleep 1 - BROKER_PID=`pgrep -f "$PROCESS_PATTERN$" -u $idn` - - if [ -z "BROKER_PID" ] - then - echo "Broker is not running - check logs"; - echo "Broker is not running" >> $logfile; - fi; - - echo $(date '+%Y%m%d.%H%M%S') broker-run-done : pid,$BROKER_PID >> $logfile -fi - sleep 1 -$DATS_HOME/DataService/scripts/dataservice.sh start data_service_a.ini +$DATS_HOME/scripts/dataservice.sh start data_service_a.ini sleep 1 -$DATS_HOME/DataService/scripts/dataservice.sh start data_service_b.ini +$DATS_HOME/scripts/dataservice.sh start data_service_b.ini sleep 1 -$DATS_HOME/MatchingEngine/scripts/matchingengine.sh start matching_engine_MARKET_BTC.ini +$DATS_HOME/scripts/matchingengine.sh start matching_engine_MARKET_BTC.ini sleep 1 -$DATS_HOME/MatchingEngine/scripts/matchingengine.sh start matching_engine_MARKET_ETH.ini +$DATS_HOME/scripts/matchingengine.sh start matching_engine_MARKET_ETH.ini sleep 1 -$DATS_HOME/MatchingEngine/scripts/matchingengine.sh start matching_engine_MARKET_OTHER_COIN.ini +$DATS_HOME/scripts/matchingengine.sh start matching_engine_MARKET_OTHER_COIN.ini sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh start fix_gwy_1.cfg +$DATS_HOME/scripts/fixgateway.sh start fix_gwy_1.cfg sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh start fix_gwy_2.cfg +$DATS_HOME/scripts/fixgateway.sh start fix_gwy_2.cfg sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh start fix_gwy_3.cfg +$DATS_HOME/scripts/fixgateway.sh start fix_gwy_3.cfg while true; do - $DATS_HOME/DataService/scripts/dataservice.sh check data_service_a.ini - $DATS_HOME/DataService/scripts/dataservice.sh check data_service_b.ini - $DATS_HOME/MatchingEngine/scripts/matchingengine.sh check matching_engine_MARKET_BTC.ini - $DATS_HOME/MatchingEngine/scripts/matchingengine.sh check matching_engine_MARKET_ETH.ini - $DATS_HOME/MatchingEngine/scripts/matchingengine.sh check matching_engine_MARKET_OTHER_COIN.ini - $DATS_HOME/FIXGateway/scripts/fixgateway.sh check fix_gwy_1.cfg - $DATS_HOME/FIXGateway/scripts/fixgateway.sh check fix_gwy_2.cfg - $DATS_HOME/FIXGateway/scripts/fixgateway.sh check fix_gwy_3.cfg + $DATS_HOME/scripts/dataservice.sh check data_service_a.ini + $DATS_HOME/scripts/dataservice.sh check data_service_b.ini + $DATS_HOME/scripts/matchingengine.sh check matching_engine_MARKET_BTC.ini + $DATS_HOME/scripts/matchingengine.sh check matching_engine_MARKET_ETH.ini + $DATS_HOME/scripts/matchingengine.sh check matching_engine_MARKET_OTHER_COIN.ini + $DATS_HOME/scripts/fixgateway.sh check fix_gwy_1.cfg + $DATS_HOME/scripts/fixgateway.sh check fix_gwy_2.cfg + $DATS_HOME/scripts/fixgateway.sh check fix_gwy_3.cfg sleep 2; done diff --git a/MiscATS/CryptoCLOB/scripts/stop_ats.sh b/MiscATS/CryptoCLOB/scripts/stop_ats.sh index 6e48ce9..a439ae6 100755 --- a/MiscATS/CryptoCLOB/scripts/stop_ats.sh +++ b/MiscATS/CryptoCLOB/scripts/stop_ats.sh @@ -1,56 +1,26 @@ #!/bin/sh -echo "DDS_ROOT :" $DDS_ROOT -PROGNAME=DCPSInfoRepo -PRG="$0" - -PRGDIR=`dirname "$PRG"` -BASEDIR=`cd "$PRGDIR/.." > /dev/null; pwd` - -PROCESS_PATTERN="$PROGNAME -ORBEndpoint iiop://localhost:12345 -DCPSDebugLevel=0 -ORBLogFile $BASEDIR/logs/$PROGNAME.log" - -idn=$(id -u) - -echo "User ID :" $idn$a - -if [ ! -d "$BASEDIR/logs/" ] -then - mkdir $BASEDIR/logs/ -fi - -logfile=$BASEDIR/logs/$PROGNAME.startstop.log - -#ldd $DDS_ROOT/bin/$PROGNAME >> $logfile - -BROKER_PID=`pgrep -f "$PROCESS_PATTERN$" -u $idn` -echo $BROKER_PID >> $logfile; -if [ ! -z "$BROKER_PID" ] -then - echo "Killing broker - $BROKER_PID" >> $logfile; - pkill -SIGTERM -f "$PROCESS_PATTERN$" -fi - sleep 1 -$DATS_HOME/DataService/scripts/dataservice.sh stop data_service_a.ini +$DATS_HOME/scripts/dataservice.sh stop data_service_a.ini sleep 1 -$DATS_HOME/DataService/scripts/dataservice.sh stop data_service_b.ini +$DATS_HOME/scripts/dataservice.sh stop data_service_b.ini sleep 1 -$DATS_HOME/MatchingEngine/scripts/matchingengine.sh stop matching_engine_MARKET_BTC.ini +$DATS_HOME/scripts/matchingengine.sh stop matching_engine_MARKET_BTC.ini sleep 1 -$DATS_HOME/MatchingEngine/scripts/matchingengine.sh stop matching_engine_MARKET_ETH.ini +$DATS_HOME/scripts/matchingengine.sh stop matching_engine_MARKET_ETH.ini sleep 1 -$DATS_HOME/MatchingEngine/scripts/matchingengine.sh stop matching_engine_MARKET_OTHER_COIN.ini +$DATS_HOME/scripts/matchingengine.sh stop matching_engine_MARKET_OTHER_COIN.ini sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh stop fix_gwy_1.cfg +$DATS_HOME/scripts/fixgateway.sh stop fix_gwy_1.cfg sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh stop fix_gwy_2.cfg +$DATS_HOME/scripts/fixgateway.sh stop fix_gwy_2.cfg sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh stop fix_gwy_3.cfg +$DATS_HOME/scripts/fixgateway.sh stop fix_gwy_3.cfg diff --git a/MiscATS/MultiMatchingEngineATS/config/data_service_a.ini b/MiscATS/MultiMatchingEngineATS/config/data_service_a.ini index 9edc991..0e51225 100644 --- a/MiscATS/MultiMatchingEngineATS/config/data_service_a.ini +++ b/MiscATS/MultiMatchingEngineATS/config/data_service_a.ini @@ -1,5 +1,5 @@ [database] -database_file=../../../DataService/sql/sqlite/distributed_ats.db +database_file=distributed_ats.db [dataservice] name=DATA_SERVICE_A diff --git a/MiscATS/MultiMatchingEngineATS/config/data_service_b.ini b/MiscATS/MultiMatchingEngineATS/config/data_service_b.ini index eb4c5ac..5c7fc85 100644 --- a/MiscATS/MultiMatchingEngineATS/config/data_service_b.ini +++ b/MiscATS/MultiMatchingEngineATS/config/data_service_b.ini @@ -1,5 +1,5 @@ [database] -database_file=../../../DataService/sql/sqlite/distributed_ats.db +database_file=distributed_ats.db [dataservice] name=DATA_SERVICE_B diff --git a/MiscATS/MultiMatchingEngineATS/config/fix_gwy_1.cfg b/MiscATS/MultiMatchingEngineATS/config/fix_gwy_1.cfg index 16c05f7..42f3670 100644 --- a/MiscATS/MultiMatchingEngineATS/config/fix_gwy_1.cfg +++ b/MiscATS/MultiMatchingEngineATS/config/fix_gwy_1.cfg @@ -6,9 +6,9 @@ DataService=DATA_SERVICE_A ConnectionType=acceptor SocketReuseAddress=Y -DataDictionary=../../../FIXGateway/spec/FIX44.xml -FileLogPath=../logs -FileStorePath=../store +DataDictionary=FIX44.xml +FileLogPath=/tmp/logs +FileStorePath=/tmp/store StartTime=00:00:00 EndTime=00:00:00 TimestampPrecision=6 diff --git a/MiscATS/MultiMatchingEngineATS/config/fix_gwy_2.cfg b/MiscATS/MultiMatchingEngineATS/config/fix_gwy_2.cfg index fc4de11..c6353f9 100644 --- a/MiscATS/MultiMatchingEngineATS/config/fix_gwy_2.cfg +++ b/MiscATS/MultiMatchingEngineATS/config/fix_gwy_2.cfg @@ -6,9 +6,9 @@ DataService=DATA_SERVICE_A ConnectionType=acceptor SocketReuseAddress=Y -DataDictionary=../../../FIXGateway/spec/FIX44.xml -FileLogPath=../logs -FileStorePath=../store +DataDictionary=FIX44.xml +FileLogPath=/tmp/logs +FileStorePath=/tmp/store StartTime=00:00:00 EndTime=00:00:00 TimestampPrecision=6 diff --git a/MiscATS/MultiMatchingEngineATS/config/fix_gwy_3.cfg b/MiscATS/MultiMatchingEngineATS/config/fix_gwy_3.cfg index 22d0d3f..07b4961 100644 --- a/MiscATS/MultiMatchingEngineATS/config/fix_gwy_3.cfg +++ b/MiscATS/MultiMatchingEngineATS/config/fix_gwy_3.cfg @@ -6,9 +6,9 @@ DataService=DATA_SERVICE_B ConnectionType=acceptor SocketReuseAddress=Y -DataDictionary=../../../FIXGateway/spec/FIX44.xml -FileLogPath=../logs -FileStorePath=../store +DataDictionary=FIX44.xml +FileLogPath=/tmp/logs +FileStorePath=/tmp/store StartTime=00:00:00 EndTime=00:00:00 TimestampPrecision=6 diff --git a/MiscATS/MultiMatchingEngineATS/config/matching_engine_MARKET_Y.ini b/MiscATS/MultiMatchingEngineATS/config/matching_engine_MARKET_Y.ini index 04522cb..859e6b4 100644 --- a/MiscATS/MultiMatchingEngineATS/config/matching_engine_MARKET_Y.ini +++ b/MiscATS/MultiMatchingEngineATS/config/matching_engine_MARKET_Y.ini @@ -3,4 +3,4 @@ market_name=MARKET_Y dataservice_name=DATA_SERVICE_A [marketdata] -price_depth_pub_interval=200000 // Microseconds +price_depth_pub_interval=200000 diff --git a/MiscATS/MultiMatchingEngineATS/config/matching_engine_MARKET_Z.ini b/MiscATS/MultiMatchingEngineATS/config/matching_engine_MARKET_Z.ini index 958058f..5efa314 100644 --- a/MiscATS/MultiMatchingEngineATS/config/matching_engine_MARKET_Z.ini +++ b/MiscATS/MultiMatchingEngineATS/config/matching_engine_MARKET_Z.ini @@ -3,4 +3,4 @@ market_name=MARKET_Z dataservice_name=DATA_SERVICE_B [marketdata] -price_depth_pub_interval=200000 // Microseconds +price_depth_pub_interval=200000 diff --git a/MiscATS/MultiMatchingEngineATS/data/distributed_ats.db b/MiscATS/MultiMatchingEngineATS/data/distributed_ats.db new file mode 100644 index 0000000..440cc49 Binary files /dev/null and b/MiscATS/MultiMatchingEngineATS/data/distributed_ats.db differ diff --git a/MiscATS/MultiMatchingEngineATS/scripts/start_ats.sh b/MiscATS/MultiMatchingEngineATS/scripts/start_ats.sh index 4d7fd84..2a9f23e 100755 --- a/MiscATS/MultiMatchingEngineATS/scripts/start_ats.sh +++ b/MiscATS/MultiMatchingEngineATS/scripts/start_ats.sh @@ -6,87 +6,42 @@ cleanup() { echo "Caught Signal ... cleaning up..." - $BASEDIR/scripts/stop_ats.sh + $BASEDIR_ATS/scripts/stop_ats.sh echo "Done." exit 1; } -echo "DDS_ROOT :" $DDS_ROOT -PROGNAME=DCPSInfoRepo -PRG="$0" - -PRGDIR=`dirname "$PRG"` -BASEDIR=`cd "$PRGDIR/.." > /dev/null; pwd` - -PROCESS_PATTERN="$PROGNAME -ORBEndpoint iiop://localhost:12345 -DCPSDebugLevel=0 -ORBLogFile $BASEDIR/logs/$PROGNAME.log" -echo $PROCESS_PATTERN - -idn=$(id -u) - -echo "User ID :" $idn - -if [ ! -d "$BASEDIR/logs/" ] -then - mkdir $BASEDIR/logs/ -fi - -logfile=$BASEDIR/logs/$PROGNAME.startstop.log - -#ldd $DDS_ROOT/bin/$PROGNAME >> $logfile - -BROKER_PID=`pgrep -f "$PROCESS_PATTERN$"` -echo $BROKER_PID >> $logfile; -if [ ! -z "$BROKER_PID" ] -then - echo "Broker already running - $BROKER_PID"; - echo "Broker already running - $BROKER_PID" >> $logfile; -else - echo "Starting Broker - $PROCESS_PATTERN" - - nohup $DDS_ROOT/bin/$PROCESS_PATTERN & >> $logfile 2>&1 - sleep 1 - BROKER_PID=`pgrep -f "$PROCESS_PATTERN$" -u $idn` - - if [ -z "BROKER_PID" ] - then - echo "Broker is not running - check logs"; - echo "Broker is not running" >> $logfile; - fi; - - echo $(date '+%Y%m%d.%H%M%S') broker-run-done : pid,$BROKER_PID >> $logfile -fi - sleep 1 -$DATS_HOME/DataService/scripts/dataservice.sh start data_service_a.ini +$DATS_HOME/scripts/dataservice.sh start data_service_a.ini sleep 1 -$DATS_HOME/DataService/scripts/dataservice.sh start data_service_b.ini +$DATS_HOME/scripts/dataservice.sh start data_service_b.ini sleep 1 -$DATS_HOME/MatchingEngine/scripts/matchingengine.sh start matching_engine_MARKET_Y.ini +$DATS_HOME/scripts/matchingengine.sh start matching_engine_MARKET_Y.ini sleep 1 -$DATS_HOME/MatchingEngine/scripts/matchingengine.sh start matching_engine_MARKET_Z.ini +$DATS_HOME/scripts/matchingengine.sh start matching_engine_MARKET_Z.ini sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh start fix_gwy_1.cfg +$DATS_HOME/scripts/fixgateway.sh start fix_gwy_1.cfg sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh start fix_gwy_2.cfg +$DATS_HOME/scripts/fixgateway.sh start fix_gwy_2.cfg sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh start fix_gwy_3.cfg +$DATS_HOME/scripts/fixgateway.sh start fix_gwy_3.cfg while true; do - $DATS_HOME/DataService/scripts/dataservice.sh check data_service_a.ini - $DATS_HOME/DataService/scripts/dataservice.sh check data_service_b.ini - $DATS_HOME/MatchingEngine/scripts/matchingengine.sh check matching_engine_MARKET_Y.ini - $DATS_HOME/MatchingEngine/scripts/matchingengine.sh check matching_engine_MARKET_Z.ini - $DATS_HOME/FIXGateway/scripts/fixgateway.sh check fix_gwy_1.cfg - $DATS_HOME/FIXGateway/scripts/fixgateway.sh check fix_gwy_2.cfg - $DATS_HOME/FIXGateway/scripts/fixgateway.sh check fix_gwy_3.cfg + $DATS_HOME/scripts/dataservice.sh check data_service_a.ini + $DATS_HOME/scripts/dataservice.sh check data_service_b.ini + $DATS_HOME/scripts/matchingengine.sh check matching_engine_MARKET_Y.ini + $DATS_HOME/scripts/matchingengine.sh check matching_engine_MARKET_Z.ini + $DATS_HOME/scripts/fixgateway.sh check fix_gwy_1.cfg + $DATS_HOME/scripts/fixgateway.sh check fix_gwy_2.cfg + $DATS_HOME/scripts/fixgateway.sh check fix_gwy_3.cfg sleep 2; done diff --git a/MiscATS/MultiMatchingEngineATS/scripts/stop_ats.sh b/MiscATS/MultiMatchingEngineATS/scripts/stop_ats.sh index c9770c3..018e986 100755 --- a/MiscATS/MultiMatchingEngineATS/scripts/stop_ats.sh +++ b/MiscATS/MultiMatchingEngineATS/scripts/stop_ats.sh @@ -1,53 +1,22 @@ #!/bin/sh -echo "DDS_ROOT :" $DDS_ROOT -PROGNAME=DCPSInfoRepo -PRG="$0" - -PRGDIR=`dirname "$PRG"` -BASEDIR=`cd "$PRGDIR/.." > /dev/null; pwd` - -PROCESS_PATTERN="$PROGNAME -ORBEndpoint iiop://localhost:12345 -DCPSDebugLevel=0 -ORBLogFile $BASEDIR/logs/$PROGNAME.log" - -idn=$(id -u) - -echo "User ID :" $idn$a - -if [ ! -d "$BASEDIR/logs/" ] -then - mkdir $BASEDIR/logs/ -fi - -logfile=$BASEDIR/logs/$PROGNAME.startstop.log - -#ldd $DDS_ROOT/bin/$PROGNAME >> $logfile - -BROKER_PID=`pgrep -f "$PROCESS_PATTERN$" -u $idn` -echo $BROKER_PID >> $logfile; -if [ ! -z "$BROKER_PID" ] -then - echo "Killing broker - $BROKER_PID" >> $logfile; - pkill -SIGTERM -f "$PROCESS_PATTERN$" -fi - sleep 1 -$DATS_HOME/DataService/scripts/dataservice.sh stop data_service_a.ini +$DATS_HOME/scripts/dataservice.sh stop data_service_a.ini sleep 1 -$DATS_HOME/DataService/scripts/dataservice.sh stop data_service_b.ini +$DATS_HOME/scripts/dataservice.sh stop data_service_b.ini sleep 1 -$DATS_HOME/MatchingEngine/scripts/matchingengine.sh stop matching_engine_MARKET_Y.ini +$DATS_HOME/scripts/matchingengine.sh stop matching_engine_MARKET_Y.ini sleep 1 -$DATS_HOME/MatchingEngine/scripts/matchingengine.sh stop matching_engine_MARKET_Z.ini +$DATS_HOME/scripts/matchingengine.sh stop matching_engine_MARKET_Z.ini sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh stop fix_gwy_1.cfg +$DATS_HOME/scripts/fixgateway.sh stop fix_gwy_1.cfg sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh stop fix_gwy_2.cfg +$DATS_HOME/scripts/fixgateway.sh stop fix_gwy_2.cfg sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh stop fix_gwy_3.cfg - +$DATS_HOME/scripts/fixgateway.sh stop fix_gwy_3.cfg diff --git a/MiscATS/MultiMatchingEngineATS/sql/populate_db.sh b/MiscATS/MultiMatchingEngineATS/sql/populate_db.sh index 7f7fa3a..920a7fd 100755 --- a/MiscATS/MultiMatchingEngineATS/sql/populate_db.sh +++ b/MiscATS/MultiMatchingEngineATS/sql/populate_db.sh @@ -1,6 +1,8 @@ #!/bin/sh -$SQLITE_HOME/bin/sqlite3 $DATS_HOME/DataService/sql/sqlite/distributed_ats.db < /dev/null; pwd` - -PROCESS_PATTERN="$PROGNAME -ORBEndpoint iiop://localhost:12345 -DCPSDebugLevel=0 -ORBLogFile $BASEDIR/logs/$PROGNAME.log" -echo $PROCESS_PATTERN - -idn=$(id -u) - -echo "User ID :" $idn - -if [ ! -d "$BASEDIR/logs/" ] -then - mkdir $BASEDIR/logs/ -fi - -logfile=$BASEDIR/logs/$PROGNAME.startstop.log - -#ldd $DDS_ROOT/bin/$PROGNAME >> $logfile - -BROKER_PID=`pgrep -f "$PROCESS_PATTERN$"` -echo $BROKER_PID >> $logfile; -if [ ! -z "$BROKER_PID" ] -then - echo "Broker already running - $BROKER_PID"; - echo "Broker already running - $BROKER_PID" >> $logfile; -else - echo "Starting Broker - $PROCESS_PATTERN" - - nohup $DDS_ROOT/bin/$PROCESS_PATTERN & >> $logfile 2>&1 - sleep 1 - BROKER_PID=`pgrep -f "$PROCESS_PATTERN$" -u $idn` - - if [ -z "BROKER_PID" ] - then - echo "Broker is not running - check logs"; - echo "Broker is not running" >> $logfile; - fi; - - echo $(date '+%Y%m%d.%H%M%S') broker-run-done : pid,$BROKER_PID >> $logfile -fi - sleep 1 -$DATS_HOME/DataService/scripts/dataservice.sh start data_service_a.ini +$DATS_HOME/scripts/dataservice.sh start data_service_a.ini sleep 1 -$DATS_HOME/DataService/scripts/dataservice.sh start data_service_b.ini +$DATS_HOME/scripts/dataservice.sh start data_service_b.ini sleep 1 -$DATS_HOME/MatchingEngine/scripts/matchingengine.sh start matching_engine_MARKET_UST.ini +$DATS_HOME/scripts/matchingengine.sh start matching_engine_MARKET_UST.ini sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh start fix_gwy_1.cfg +$DATS_HOME/scripts/fixgateway.sh start fix_gwy_1.cfg sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh start fix_gwy_2.cfg +$DATS_HOME/scripts/fixgateway.sh start fix_gwy_2.cfg while true; do - $DATS_HOME/DataService/scripts/dataservice.sh check data_service_a.ini - $DATS_HOME/DataService/scripts/dataservice.sh check data_service_b.ini - $DATS_HOME/MatchingEngine/scripts/matchingengine.sh check matching_engine_MARKET_UST.ini - $DATS_HOME/FIXGateway/scripts/fixgateway.sh check fix_gwy_1.cfg - $DATS_HOME/FIXGateway/scripts/fixgateway.sh check fix_gwy_2.cfg + $DATS_HOME/scripts/dataservice.sh check data_service_a.ini + $DATS_HOME/scripts/dataservice.sh check data_service_b.ini + $DATS_HOME/scripts/matchingengine.sh check matching_engine_MARKET_UST.ini + $DATS_HOME/scripts/fixgateway.sh check fix_gwy_1.cfg + $DATS_HOME/scripts/fixgateway.sh check fix_gwy_2.cfg sleep 2; done diff --git a/MiscATS/USTreasuryCLOB/scripts/stop_ats.sh b/MiscATS/USTreasuryCLOB/scripts/stop_ats.sh index d28c6d2..35caf69 100755 --- a/MiscATS/USTreasuryCLOB/scripts/stop_ats.sh +++ b/MiscATS/USTreasuryCLOB/scripts/stop_ats.sh @@ -1,46 +1,16 @@ #!/bin/sh -echo "DDS_ROOT :" $DDS_ROOT -PROGNAME=DCPSInfoRepo -PRG="$0" - -PRGDIR=`dirname "$PRG"` -BASEDIR=`cd "$PRGDIR/.." > /dev/null; pwd` - -PROCESS_PATTERN="$PROGNAME -ORBEndpoint iiop://localhost:12345 -DCPSDebugLevel=0 -ORBLogFile $BASEDIR/logs/$PROGNAME.log" - -idn=$(id -u) - -echo "User ID :" $idn$a - -if [ ! -d "$BASEDIR/logs/" ] -then - mkdir $BASEDIR/logs/ -fi - -logfile=$BASEDIR/logs/$PROGNAME.startstop.log - -#ldd $DDS_ROOT/bin/$PROGNAME >> $logfile - -BROKER_PID=`pgrep -f "$PROCESS_PATTERN$" -u $idn` -echo $BROKER_PID >> $logfile; -if [ ! -z "$BROKER_PID" ] -then - echo "Killing broker - $BROKER_PID" >> $logfile; - pkill -SIGTERM -f "$PROCESS_PATTERN$" -fi - sleep 1 -$DATS_HOME/DataService/scripts/dataservice.sh stop data_service_a.ini +$DATS_HOME/scripts/dataservice.sh stop data_service_a.ini sleep 1 -$DATS_HOME/DataService/scripts/dataservice.sh stop data_service_b.ini +$DATS_HOME/scripts/dataservice.sh stop data_service_b.ini sleep 1 -$DATS_HOME/MatchingEngine/scripts/matchingengine.sh stop matching_engine_MARKET_UST.ini +$DATS_HOME/scripts/matchingengine.sh stop matching_engine_MARKET_UST.ini sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh stop fix_gwy_1.cfg +$DATS_HOME/scripts/fixgateway.sh stop fix_gwy_1.cfg sleep 1 -$DATS_HOME/FIXGateway/scripts/fixgateway.sh stop fix_gwy_2.cfg +$DATS_HOME/scripts/fixgateway.sh stop fix_gwy_2.cfg diff --git a/MiscClients/golang_rest_service/components/fix_adapter.go b/MiscClients/golang_rest_service/components/fix_adapter.go new file mode 100644 index 0000000..02f15b7 --- /dev/null +++ b/MiscClients/golang_rest_service/components/fix_adapter.go @@ -0,0 +1,354 @@ +/* + Copyright (C) 2024 Mike Kipnis - DistributedATS +*/ + +package components + +import ( + "encoding/json" + "fmt" + + "github.com/quickfixgo/enum" + "github.com/quickfixgo/field" + fix44incr "github.com/quickfixgo/fix44/marketdataincrementalrefresh" + fix44mdr "github.com/quickfixgo/fix44/marketdatarequest" + fix44mdsfr "github.com/quickfixgo/fix44/marketdatasnapshotfullrefresh" + fix44sl "github.com/quickfixgo/fix44/securitylist" + fix44slr "github.com/quickfixgo/fix44/securitylistrequest" + "github.com/quickfixgo/quickfix" + + _ "github.com/mattn/go-sqlite3" + + "sync" +) + +type FIXTradeClient struct { + market_data_lock sync.Mutex + market_data map[Instrument]*InstrumentMarketData + + instrument_map_lock sync.Mutex + instrument_map map[string]Instrument + + order_status_lock sync.Mutex + investor_order_map map[string][]string + order_execution_report_map map[string][]ExecutionReport + + serviceSessionID quickfix.SessionID + fix_session_password string +} + +func NewFIXTradeClient(password_in string) *FIXTradeClient { + + trade_client := FIXTradeClient{} + + trade_client.market_data = make(map[Instrument]*InstrumentMarketData) + trade_client.instrument_map = make(map[string]Instrument) + trade_client.investor_order_map = make(map[string][]string) + trade_client.order_execution_report_map = make(map[string][]ExecutionReport) + + trade_client.fix_session_password = password_in + + return &trade_client +} + +func (fix_trade_client *FIXTradeClient) getInstrumentMap() map[string]Instrument { + fix_trade_client.instrument_map_lock.Lock() + defer fix_trade_client.instrument_map_lock.Unlock() + return fix_trade_client.instrument_map +} + +func (fix_trade_client *FIXTradeClient) insertInstrument(symbol_field string, instrument Instrument) { + fix_trade_client.instrument_map_lock.Lock() + fix_trade_client.instrument_map[symbol_field] = instrument + fix_trade_client.instrument_map_lock.Unlock() +} + +func (fix_trade_client *FIXTradeClient) insertMarketData(instrument Instrument, instrument_market_data *InstrumentMarketData) { + fix_trade_client.market_data_lock.Lock() + fix_trade_client.market_data[instrument] = instrument_market_data + fix_trade_client.market_data_lock.Unlock() +} + +func (fix_trade_client *FIXTradeClient) hasMarketData(instrument Instrument) bool { + fix_trade_client.market_data_lock.Lock() + _, present := fix_trade_client.market_data[instrument] + fix_trade_client.market_data_lock.Unlock() + return present +} + +func (fix_trade_client *FIXTradeClient) getInstrumentMarketData(instrument Instrument) InstrumentMarketData { + fix_trade_client.market_data_lock.Lock() + defer fix_trade_client.market_data_lock.Unlock() + var market_data_out = NewMarketDataSnapshot() + market_data_out = (*fix_trade_client.market_data[instrument]) + return market_data_out +} + +func (fix_trade_client *FIXTradeClient) UpdateMarketData(instrument Instrument, entry_type enum.MDEntryType, price int, size int) { + fix_trade_client.market_data_lock.Lock() + (*fix_trade_client.market_data[instrument]).InsertMarketDataEntry(entry_type, price, size) + //instrument_market_data.InsertMarketDataEntry(entry_type, price, size) + //fix_trade_client.market_data[instrument] = instrument_market_data + fix_trade_client.market_data_lock.Unlock() +} + +func (e *FIXTradeClient) insertInvestorOrderMap(investor_name string, client_order_id string) { + e.order_status_lock.Lock() + e.investor_order_map[investor_name] = + append(e.investor_order_map[investor_name], client_order_id) + e.order_status_lock.Unlock() +} + +func (fix_trade_client *FIXTradeClient) insertExecutionReport(execution_report ExecutionReport) { + fix_trade_client.order_status_lock.Lock() + fix_trade_client.order_execution_report_map[execution_report.OrderId] = append(fix_trade_client.order_execution_report_map[execution_report.OrderId], execution_report) + fix_trade_client.order_status_lock.Unlock() +} + +func (fix_trade_client *FIXTradeClient) getExecutionReport(order_id string) []ExecutionReport { + fix_trade_client.order_status_lock.Lock() + defer fix_trade_client.order_status_lock.Unlock() + return fix_trade_client.order_execution_report_map[order_id] +} + +// OnCreate implemented as part of Application interface +func (fix_trade_client *FIXTradeClient) OnCreate(sessionID quickfix.SessionID) { +} + +// OnLogon implemented as part of Application interface +func (fix_trade_client *FIXTradeClient) OnLogon(sessionID quickfix.SessionID) { + + var security_req_id field.SecurityReqIDField = field.NewSecurityReqID("SecurityListRequest1") + var security_list_request_type = field.NewSecurityListRequestType(enum.SecurityListRequestType_ALL_SECURITIES) + + var security_list_request = fix44slr.New(security_req_id, security_list_request_type) + fmt.Printf("Security List Request : " + security_list_request.Message.String()) + + fix_trade_client.serviceSessionID = sessionID + quickfix.SendToTarget(security_list_request, sessionID) +} + +// OnLogout implemented as part of Application interface +func (fix_trade_client *FIXTradeClient) OnLogout(sessionID quickfix.SessionID) { + +} + +// FromAdmin implemented as part of Application interface +func (fix_trade_client *FIXTradeClient) FromAdmin(msg *quickfix.Message, sessionID quickfix.SessionID) (reject quickfix.MessageRejectError) { + return nil +} + +// ToAdmin implemented as part of Application interface +func (fix_trade_client *FIXTradeClient) ToAdmin(msg *quickfix.Message, sessionID quickfix.SessionID) { + + // Login with username and password + if msg.IsMsgTypeOf(string(enum.MsgType_LOGON)) { + var sender_comp_id field.SenderCompIDField + msg.Header.Get(&sender_comp_id) + msg.Body.Set(field.NewUsername(sender_comp_id.String())) + msg.Body.Set(field.NewPassword(fix_trade_client.fix_session_password)) + } +} + +// ToApp implemented as part of Application interface +func (fix_trade_client *FIXTradeClient) ToApp(msg *quickfix.Message, sessionID quickfix.SessionID) (err error) { + fmt.Printf("Sending: %s", msg.String()) + return +} + +// FromApp implemented as part of Application interface. This is the callback for all Application level messages from the counter party. +func (fix_trade_client *FIXTradeClient) FromApp(msg *quickfix.Message, sessionID quickfix.SessionID) (reject quickfix.MessageRejectError) { + + if msg.IsMsgTypeOf(string(enum.MsgType_SECURITY_LIST)) { + + var group = fix44sl.NewNoRelatedSymRepeatingGroup() + msg.Body.GetGroup(group) + + var instruments []Instrument + for symbol_index := 0; symbol_index < group.Len(); symbol_index++ { + + var symbol_field field.SymbolField + var security_exchange field.SecurityExchangeField + group.Get(symbol_index).Get(&symbol_field) + group.Get(symbol_index).Get(&security_exchange) + fmt.Println("Group : " + symbol_field.String() + ":" + security_exchange.String() + "\n") + + var requested_instrument = Instrument{security_exchange.String(), symbol_field.String()} + + fix_trade_client.insertInstrument(symbol_field.String(), requested_instrument) + + instruments = append(instruments, requested_instrument) + + type instrument_type struct { + Type string `json:"type"` + } + + var text field.TextField + group.Get(symbol_index).Get(&text) + + var json_instrument_definition instrument_type + + err := json.Unmarshal([]byte(text.String()), &json_instrument_definition) + + if err != nil { + fmt.Println(err) + } + + fmt.Println("Type: " + json_instrument_definition.Type) + + } + + var md_req_id = field.NewMDReqID("MarketDataRequest1") + var subscription_request_type = field.NewSubscriptionRequestType(enum.SubscriptionRequestType_SNAPSHOT_PLUS_UPDATES) + var market_depth = field.NewMarketDepth(0) + + var market_data_request = fix44mdr.New(md_req_id, subscription_request_type, market_depth) + + var no_md_entry_types = field.NewNoMDEntryTypes(2) + market_data_request.Set(no_md_entry_types) + + var no_md_update_type = field.NewMDUpdateType(enum.MDUpdateType_INCREMENTAL_REFRESH) + market_data_request.Set(no_md_update_type) + + var md_request_group = fix44mdr.NewNoMDEntryTypesRepeatingGroup() + var bids = field.NewMDEntryType(enum.MDEntryType_BID) + md_request_group.Add().Set(bids) + market_data_request.Body.SetGroup(md_request_group) + + var offers = field.NewMDEntryType(enum.MDEntryType_OFFER) + md_request_group.Add().Set(offers) + market_data_request.Body.SetGroup(md_request_group) + + var symbol_group = fix44mdr.NewNoRelatedSymRepeatingGroup() + for symbol_index := 0; symbol_index < len(instruments); symbol_index++ { + + var group = symbol_group.Add() + group.Set(field.NewSymbol(instruments[symbol_index].Symbol)) + group.Set(field.NewSecurityExchange(instruments[symbol_index].SecurityExchange)) + market_data_request.Body.SetGroup(symbol_group) + + } + + quickfix.SendToTarget(market_data_request, sessionID) + } else if msg.IsMsgTypeOf(string(enum.MsgType_MARKET_DATA_SNAPSHOT_FULL_REFRESH)) { + + var symbol_field field.SymbolField + var security_exchange field.SecurityExchangeField + msg.Body.Get(&symbol_field) + msg.Body.Get(&security_exchange) + + fmt.Println("Market Data Full Snapshot Symbol :" + symbol_field.String() + ":" + security_exchange.String()) + + var market_data_instrument = Instrument{security_exchange.String(), symbol_field.String()} + + if fix_trade_client.hasMarketData(market_data_instrument) { + // We already received an incremental refresh, incremental refresh takes the precendence because its published by the matching engine + return + } + + // Processing the data from DataService + var md_entry_type_repeating_group = fix44mdsfr.NewNoMDEntriesRepeatingGroup() + msg.Body.GetGroup(md_entry_type_repeating_group) + + var instrument_market_data = NewMarketDataSnapshot() + + for market_data_entry_index := 0; market_data_entry_index < md_entry_type_repeating_group.Len(); market_data_entry_index++ { + + var entry_type field.MDEntryTypeField + var entry_price field.MDEntryPxField + var entry_size field.MDEntrySizeField + md_entry_type_repeating_group.Get(market_data_entry_index).Get(&entry_type) + md_entry_type_repeating_group.Get(market_data_entry_index).Get(&entry_price) + md_entry_type_repeating_group.Get(market_data_entry_index).Get(&entry_size) + + instrument_market_data.InsertMarketDataEntry(enum.MDEntryType(entry_type.String()), + int(entry_price.IntPart()), int(entry_size.IntPart())) + } + + fix_trade_client.insertMarketData(market_data_instrument, &instrument_market_data) + + } else if msg.IsMsgTypeOf(string(enum.MsgType_MARKET_DATA_INCREMENTAL_REFRESH)) { + + var md_entry_type_repeating_group = fix44incr.NewNoMDEntriesRepeatingGroup() + msg.Body.GetGroup(md_entry_type_repeating_group) + + //refresh_market_data := make(map[Instrument]InstrumentMarketData) + + for market_data_entry_index := 0; market_data_entry_index < md_entry_type_repeating_group.Len(); market_data_entry_index++ { + + var entry_type field.MDEntryTypeField + var entry_price field.MDEntryPxField + var entry_size field.MDEntrySizeField + var symbol_field field.SymbolField + var security_exchange field.SecurityExchangeField + + md_entry_type_repeating_group.Get(market_data_entry_index).Get(&entry_type) + md_entry_type_repeating_group.Get(market_data_entry_index).Get(&entry_price) + md_entry_type_repeating_group.Get(market_data_entry_index).Get(&entry_size) + md_entry_type_repeating_group.Get(market_data_entry_index).Get(&symbol_field) + md_entry_type_repeating_group.Get(market_data_entry_index).Get(&security_exchange) + + var market_data_instrument = Instrument{security_exchange.String(), symbol_field.String()} + + fix_trade_client.UpdateMarketData(market_data_instrument, enum.MDEntryType(entry_type.String()), int(entry_price.IntPart()), int(entry_size.IntPart())) + } + + } else if msg.IsMsgTypeOf(string(enum.MsgType_EXECUTION_REPORT)) { + + var order_status_field field.OrdStatusField + var symbol_field field.SymbolField + var security_exchange field.SecurityExchangeField + var orig_cl_ord_id field.OrigClOrdIDField + var order_id field.OrderIDField + var side field.SideField + var order_qty field.OrderQtyField + var cum_qty field.CumQtyField + var leaves_qty field.LeavesQtyField + var exec_id field.ExecIDField + var price field.PriceField + var stop_px field.StopPxField + var last_px field.LastPxField + var last_qty field.LastQtyField + var avg_px field.AvgPxField + + msg.Body.Get(&order_status_field) + msg.Body.Get(&symbol_field) + msg.Body.Get(&security_exchange) + msg.Body.Get(&orig_cl_ord_id) + msg.Body.Get(&order_id) + msg.Body.Get(&side) + msg.Body.Get(&order_qty) + msg.Body.Get(&cum_qty) + msg.Body.Get(&leaves_qty) + msg.Body.Get(&exec_id) + msg.Body.Get(&price) + msg.Body.Get(&stop_px) + msg.Body.Get(&last_px) + msg.Body.Get(&last_qty) + msg.Body.Get(&avg_px) + + fmt.Printf("ExecutionReport: %s", msg.String()) + + + var instrument_out = Instrument{security_exchange.String(), symbol_field.String()} + var execution_report_out ExecutionReport + + execution_report_out.Instrument = instrument_out + execution_report_out.OrderStatusField = order_status_field.String() + execution_report_out.OrigClOrdId = orig_cl_ord_id.String() + execution_report_out.OrderId = order_id.String() + execution_report_out.Side = side.String() + execution_report_out.OrderQty = int32(order_qty.IntPart()) + execution_report_out.CumQty = int32(cum_qty.IntPart()) + execution_report_out.LeavesQty = int32(leaves_qty.IntPart()) + execution_report_out.ExecId = exec_id.String() + execution_report_out.Price = int32(price.IntPart()) + execution_report_out.StopPx = int32(stop_px.IntPart()) + execution_report_out.LastPx = int32(last_px.IntPart()) + execution_report_out.LastQty = int32(last_qty.IntPart()) + execution_report_out.AvgPx = int32(avg_px.IntPart()) + + fix_trade_client.insertExecutionReport(execution_report_out) + } + return +} diff --git a/MiscClients/golang_rest_service/components/investors.go b/MiscClients/golang_rest_service/components/investors.go new file mode 100644 index 0000000..5ceb4cc --- /dev/null +++ b/MiscClients/golang_rest_service/components/investors.go @@ -0,0 +1,73 @@ +/* + Copyright (C) 2024 Mike Kipnis - DistributedATS +*/ + +package components + +import ( + "database/sql" + "fmt" + "os" + + "github.com/golang-jwt/jwt" +) + +type InvestorCredentials struct { + InvestorSecret string + InvestorName string +} + +func PopulateInvestorCredenital(investors_db string) map[string]InvestorCredentials { + + var investor_credentials_map = make(map[string]InvestorCredentials) + + db, err := sql.Open("sqlite3", investors_db) + + if err != nil { + fmt.Println("Unable to open", investors_db) + os.Exit(0) + } + + row, err := db.Query("SELECT * FROM investor") + defer row.Close() + + if row == nil { + fmt.Println("Investor database is empty ... exiting") + os.Exit(0) + } + + for row.Next() { // Iterate and fetch the records from result cursor + var jwt_token string + var secret string + + row.Scan(&jwt_token, &secret) + + token, err := jwt.Parse(jwt_token, func(token *jwt.Token) (interface{}, error) { + // Don't forget to validate the alg is what you expect: + if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { + return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"]) + } + + return []byte(secret), nil + }) + + if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid { + + data := claims["username"].(string) + name := data + fmt.Println(name) + + var investor_credentials InvestorCredentials + investor_credentials.InvestorSecret = secret + investor_credentials.InvestorName = name + + investor_credentials_map[jwt_token] = investor_credentials + + } else { + fmt.Println(err) + } + + } + + return investor_credentials_map +} diff --git a/MiscClients/golang_rest_service/components/market_data.go b/MiscClients/golang_rest_service/components/market_data.go new file mode 100644 index 0000000..a7dff33 --- /dev/null +++ b/MiscClients/golang_rest_service/components/market_data.go @@ -0,0 +1,53 @@ +/* + Copyright (C) 2024 Mike Kipnis - DistributedATS +*/ + +package components + +import "github.com/quickfixgo/enum" + +type PriceLevel struct { + Price int `json:"price"` + Size int `json:"size"` + Side string `json:"side"` +} + +type InstrumentMarketData struct { + LastTradedPrice int `json:"last_traded_price"` + Volume int `json:"volume"` + OpenPrice int `json:"open_price"` + LowPrice int `json:"low_price"` + HighPrice int `json:"high_price"` + + Bids map[int]int `json:"bids"` + Asks map[int]int `json:"asks"` +} + +func NewMarketDataSnapshot() InstrumentMarketData { + new_instrument_market_data := InstrumentMarketData{ + Bids: make(map[int]int), + Asks: make(map[int]int), + } + + return new_instrument_market_data +} + +func (mds *InstrumentMarketData) InsertMarketDataEntry(entry_type enum.MDEntryType, price int, size int) { + + if entry_type == enum.MDEntryType_BID { + mds.Bids[price] = size + } else if entry_type == enum.MDEntryType_OFFER { + mds.Asks[price] = size + } else if entry_type == enum.MDEntryType_TRADE { + mds.LastTradedPrice = price + } else if entry_type == enum.MDEntryType_OPENING_PRICE { + mds.OpenPrice = price + } else if entry_type == enum.MDEntryType_TRADING_SESSION_LOW_PRICE { + mds.LowPrice = price + } else if entry_type == enum.MDEntryType_TRADING_SESSION_HIGH_PRICE { + mds.HighPrice = price + } else if entry_type == enum.MDEntryType_TRADE_VOLUME { + mds.Volume = size + } + +} diff --git a/MiscClients/golang_rest_service/components/ref_data.go b/MiscClients/golang_rest_service/components/ref_data.go new file mode 100644 index 0000000..926a2e0 --- /dev/null +++ b/MiscClients/golang_rest_service/components/ref_data.go @@ -0,0 +1,9 @@ +/* +Copyright (C) 2024 Mike Kipnis - DistributedATS +*/ +package components + +type Instrument struct { + SecurityExchange string `json:"security_exchange"` + Symbol string `json:"symbol"` +} diff --git a/MiscClients/golang_rest_service/components/rest_adapter.go b/MiscClients/golang_rest_service/components/rest_adapter.go new file mode 100644 index 0000000..a2d2990 --- /dev/null +++ b/MiscClients/golang_rest_service/components/rest_adapter.go @@ -0,0 +1,247 @@ +/* + Copyright (C) 2024 Mike Kipnis - DistributedATS +*/ + +package components + +import ( + "encoding/json" + "fmt" + "strconv" + "time" + + "github.com/gin-gonic/gin" + "github.com/quickfixgo/enum" + "github.com/quickfixgo/field" + "github.com/quickfixgo/quickfix" + "github.com/shopspring/decimal" + + "github.com/golang-jwt/jwt" + + fix44nos "github.com/quickfixgo/fix44/newordersingle" + fix44ocr "github.com/quickfixgo/fix44/ordercancelrequest" +) + +type NewOrderSingle struct { + Side string `json:"side"` + OrderQty int32 `json:"order_qty"` + Price int32 `json:"price"` + OrdType string `json:"order_type"` + TimeInForce string `json:"time_in_force"` +} + +type ExecutionReport struct { + Instrument Instrument `json:"instrument"` + OrderStatusField string `json:"order_status_field"` + OrigClOrdId string `json:"orig_cl_ord_id"` + OrderId string `json:"order_id"` + Side string `json:"side"` + OrderQty int32 `json:"order_qty"` + CumQty int32 `json:"cum_qty"` + LeavesQty int32 `json:"leaves_qty"` + ExecId string `json:"exec_id"` + Price int32 `json:"price"` + StopPx int32 `json:"stop_px"` + LastPx int32 `json:"last_px"` + LastQty int32 `json:"last_qty"` + AvgPx int32 `json:"avg_Ppx"` +} + +type InvestorOrderRequest struct { + Instrument Instrument `json:"instrument"` + UserToken string `json:"user_token"` + NewOrderSingle NewOrderSingle `json:"new_order_single"` +} + +type InvestorOrderReply struct { + ClientOrderId string `json:"client_order_id"` +} + +type InvestorOrdersRequest struct { + UserToken string `json:"user_token"` +} + +type InvestorOrdersReply struct { + Orders []string `json:"orders"` +} + +type OrderStatusRequest struct { + UserToken string `json:"user_token"` + Orders []string `json:"orders"` +} + +type OrderStatusRequestReply struct { + OrderStatus map[string][]ExecutionReport `json:"OrderStatus"` +} + +type CancelOrder struct { + Side string `json:"side"` + ClntOrdId string `json:"client_order_id"` +} + +type InvestorOrderCancelRequest struct { + Instrument Instrument `json:"instrument"` + UserToken string `json:"user_token"` + CancelOrder CancelOrder `json:"cancel_order"` +} + +type InvestorCancelOrderReply struct { + ClientCancelOrderId string `json:"client_cancel_order_id"` +} + +func create_order_token(data_out interface{}, secret_key string) (string, error) { + token := jwt.NewWithClaims(jwt.SigningMethodHS256, + jwt.MapClaims{ + "data": data_out, + "timestamp": time.Now().Unix(), + }) + + tokenString, err := token.SignedString([]byte(secret_key)) + if err != nil { + return "", err + } + + return tokenString, nil +} + +var start_time = time.Now().Unix() + +func InstrumentService(rest_service *gin.Engine, fix_trade_client *FIXTradeClient) { + rest_service.GET("/instruments", func(c *gin.Context) { + + jsonString, err := json.Marshal(fix_trade_client.getInstrumentMap()) + fmt.Println(err) + + c.String(200, string(jsonString[:])) + }) +} + +func MarketDataService(rest_service *gin.Engine, fix_trade_client *FIXTradeClient) { + rest_service.POST("/market_data", func(c *gin.Context) { + var instruments []Instrument + c.BindJSON(&instruments) + + //var market_data_out = make(map[instrument]instrument_market_data) + var market_data_out = make(map[string]InstrumentMarketData) + //var market_data_out = make(map[string]instrument_market_data) + + for _, instrument_in := range instruments { + fmt.Println(instrument_in) + var market_data_instrument, _ = json.Marshal(instrument_in) + market_data_out[string(market_data_instrument)] = fix_trade_client.getInstrumentMarketData(instrument_in) + } + + jsonString, err := json.Marshal(market_data_out) + fmt.Println(err) + c.String(200, string(jsonString)) + }) +} + +func SubmitOrderService(rest_service *gin.Engine, fix_trade_client *FIXTradeClient, investors *map[string]InvestorCredentials) { + rest_service.POST("/submit_order", func(c *gin.Context) { + + var investor_order_in InvestorOrderRequest + c.BindJSON(&investor_order_in) + var investor_credentials = (*investors)[investor_order_in.UserToken] + + start_time = start_time + 1 + var client_order_id = investor_credentials.InvestorName + ":" + strconv.Itoa(int(start_time)) + var clordid = field.NewClOrdID(client_order_id) + var side = field.NewSide(enum.Side(investor_order_in.NewOrderSingle.Side)) + var transacttime = field.NewTransactTime(time.Now()) + var ordtype = field.NewOrdType(enum.OrdType(investor_order_in.NewOrderSingle.OrdType)) + + var new_order = fix44nos.New(clordid, side, transacttime, ordtype) + + new_order.Body.Set(field.NewSymbol(investor_order_in.Instrument.Symbol)) + new_order.Body.Set(field.NewSecurityExchange(investor_order_in.Instrument.SecurityExchange)) + new_order.Body.Set(field.NewPrice(decimal.NewFromInt32(investor_order_in.NewOrderSingle.Price), 0)) + new_order.Body.Set(field.NewOrderQty(decimal.NewFromInt32(investor_order_in.NewOrderSingle.OrderQty), 0)) + new_order.Body.Set(field.NewTimeInForce(enum.TimeInForce(investor_order_in.NewOrderSingle.TimeInForce))) + + print("SessionID : " + fix_trade_client.serviceSessionID.String()) + quickfix.SendToTarget(new_order, fix_trade_client.serviceSessionID) + + var order_reply InvestorOrderReply + order_reply.ClientOrderId = client_order_id + + fix_trade_client.insertInvestorOrderMap(investor_credentials.InvestorName, client_order_id) + + var message_out, _ = create_order_token(order_reply, investor_credentials.InvestorSecret) + + c.String(200, string(message_out)) + }) +} + +func CancelOrderService(rest_service *gin.Engine, fix_trade_client *FIXTradeClient, investors *map[string]InvestorCredentials) { + rest_service.POST("/cancel_order", func(c *gin.Context) { + + var investor_order_cancel_request_in InvestorOrderCancelRequest + c.BindJSON(&investor_order_cancel_request_in) + var investor_credentials = (*investors)[investor_order_cancel_request_in.UserToken] + + start_time = start_time + 1 + var cancel_client_order_id = investor_credentials.InvestorName + ":" + strconv.Itoa(int(start_time)) + var orig_clnt_ord_id = field.NewOrigClOrdID(investor_order_cancel_request_in.CancelOrder.ClntOrdId) + var cl_ord_id = field.NewClOrdID(cancel_client_order_id) + var side = field.NewSide(enum.Side(investor_order_cancel_request_in.CancelOrder.Side)) + var transact_time = field.NewTransactTime(time.Now()) + + var cancel_order = fix44ocr.New(orig_clnt_ord_id, cl_ord_id, side, + transact_time) + + cancel_order.Body.Set(field.NewSymbol(investor_order_cancel_request_in.Instrument.Symbol)) + cancel_order.Body.Set(field.NewSecurityExchange(investor_order_cancel_request_in.Instrument.SecurityExchange)) + + quickfix.SendToTarget(cancel_order, fix_trade_client.serviceSessionID) + + var order_cancel_reply InvestorOrderReply + order_cancel_reply.ClientOrderId = cancel_client_order_id + + var message_out, _ = create_order_token(order_cancel_reply, investor_credentials.InvestorSecret) + + c.String(200, string(message_out)) + + }) +} + +func InvestorOrdersService(rest_service *gin.Engine, fix_trade_client *FIXTradeClient, investors *map[string]InvestorCredentials) { + + rest_service.POST("/investor_orders", func(c *gin.Context) { + + var investor_orders_request_in InvestorOrdersRequest + c.BindJSON(&investor_orders_request_in) + var investor_credentials = (*investors)[investor_orders_request_in.UserToken] + + var investor_orders_out InvestorOrdersReply + investor_orders_out.Orders = fix_trade_client.investor_order_map[investor_credentials.InvestorName] + + var message_out, _ = create_order_token(investor_orders_out, investor_credentials.InvestorSecret) + + c.String(200, string(message_out)) + + }) +} + +func InvestorOrderStatusService(rest_service *gin.Engine, fix_trade_client *FIXTradeClient, investors *map[string]InvestorCredentials) { + + rest_service.POST("/order_status_request", func(c *gin.Context) { + + var order_status_request_in OrderStatusRequest + c.BindJSON(&order_status_request_in) + var investor_credentials = (*investors)[order_status_request_in.UserToken] + + var order_status_request_reply_out OrderStatusRequestReply + + order_status_request_reply_out.OrderStatus = make(map[string][]ExecutionReport) + + for _, order := range order_status_request_in.Orders { + order_status_request_reply_out.OrderStatus[order] = fix_trade_client.getExecutionReport(order) + } + + var message_out, _ = create_order_token(order_status_request_reply_out, investor_credentials.InvestorSecret) + + c.String(200, string(message_out)) + + }) +} diff --git a/MiscClients/golang_rest_service/config/tradeclient.cfg b/MiscClients/golang_rest_service/config/tradeclient.cfg new file mode 100644 index 0000000..587b7a5 --- /dev/null +++ b/MiscClients/golang_rest_service/config/tradeclient.cfg @@ -0,0 +1,11 @@ +[DEFAULT] +SocketConnectHost=127.0.0.1 +SocketConnectPort=15001 +HeartBtInt=30 +SenderCompID=CRYPTO_TRADER_1 +TargetCompID=FIX_GWY_1 +ResetOnLogon=Y +FileLogPath=tmp + +[SESSION] +BeginString=FIX.4.4 \ No newline at end of file diff --git a/MiscClients/golang_rest_service/go.mod b/MiscClients/golang_rest_service/go.mod new file mode 100644 index 0000000..17e59bc --- /dev/null +++ b/MiscClients/golang_rest_service/go.mod @@ -0,0 +1,48 @@ +module golang_rest_service + +go 1.21.5 + +require ( + github.com/gin-gonic/gin v1.9.1 + github.com/golang-jwt/jwt v3.2.2+incompatible + github.com/mattn/go-sqlite3 v1.14.22 + github.com/quickfixgo/enum v0.1.0 + github.com/quickfixgo/field v0.1.0 + github.com/quickfixgo/fix44 v0.1.0 + github.com/quickfixgo/quickfix v0.9.0 + github.com/shopspring/decimal v1.3.1 +) + +require ( + github.com/armon/go-proxyproto v0.1.0 // indirect + github.com/bytedance/sonic v1.9.1 // indirect + github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect + github.com/gabriel-vasile/mimetype v1.4.2 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.14.0 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.2.4 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/leodido/go-urn v1.2.4 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/quickfixgo/tag v0.1.0 // indirect + github.com/spf13/cobra v1.8.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.11 // indirect + golang.org/x/arch v0.3.0 // indirect + golang.org/x/crypto v0.15.0 // indirect + golang.org/x/net v0.18.0 // indirect + golang.org/x/sys v0.14.0 // indirect + golang.org/x/text v0.14.0 // indirect + google.golang.org/protobuf v1.30.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/MiscClients/golang_rest_service/go.sum b/MiscClients/golang_rest_service/go.sum new file mode 100644 index 0000000..d8c152d --- /dev/null +++ b/MiscClients/golang_rest_service/go.sum @@ -0,0 +1,125 @@ +github.com/armon/go-proxyproto v0.1.0 h1:TWWcSsjco7o2itn6r25/5AqKBiWmsiuzsUDLT/MTl7k= +github.com/armon/go-proxyproto v0.1.0/go.mod h1:Xj90dce2VKbHzRAeiVQAMBtj4M5oidoXJ8lmgyW21mw= +github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= +github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= +github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= +github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= +github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= +github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= +github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= +github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= +github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= +github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/quickfixgo/enum v0.1.0 h1:TnCPOqxAWA5/IWp7lsvj97x7oyuHYgj3STBJlBzZGjM= +github.com/quickfixgo/enum v0.1.0/go.mod h1:65gdG2/8vr6uOYcjZBObVHMuTEYc5rr/+aKVWTrFIrQ= +github.com/quickfixgo/field v0.1.0 h1:JVO6fVD6Nkyy8e/ROYQtV/nQhMX/BStD5Lq7XIgYz2g= +github.com/quickfixgo/field v0.1.0/go.mod h1:Zu0qYmpj+gljlB2HgpUt9EcTIThs2lIQb8C57qbJr8o= +github.com/quickfixgo/fix44 v0.1.0 h1:g/rTl6mXDlG7iIMbY7zaPbHcj9N/B+tteOZ01yGzeSQ= +github.com/quickfixgo/fix44 v0.1.0/go.mod h1:d6Ia02Eq/JYgKCn/2V9FHxguAl1Alp/yu/xVpry82dA= +github.com/quickfixgo/quickfix v0.9.0 h1:WshR3GUSxR69ZrSQfppKs2zZ12dTYtU3JUgQg+PAOdA= +github.com/quickfixgo/quickfix v0.9.0/go.mod h1:t5Z881dOZ2Dz5vM6KIbMCx3YpAiFPFf/iCLCSn91Qqo= +github.com/quickfixgo/tag v0.1.0 h1:R2A1Zf7CBE903+mOQlmTlfTmNZQz/yh7HunMbgcsqsA= +github.com/quickfixgo/tag v0.1.0/go.mod h1:l/drB1eO3PwN9JQTDC9Vt2EqOcaXk3kGJ+eeCQljvAI= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= +github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= +golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/MiscClients/golang_rest_service/investors/create_investor_tokens.py b/MiscClients/golang_rest_service/investors/create_investor_tokens.py new file mode 100644 index 0000000..e355377 --- /dev/null +++ b/MiscClients/golang_rest_service/investors/create_investor_tokens.py @@ -0,0 +1,24 @@ + # Copyright (C) 2024 Mike Kipnis - DistributedATS +import jwt +import sqlite3 + +connection = sqlite3.connect("investors.db") + +cursor = connection.cursor() + +cursor.execute("CREATE TABLE IF NOT EXISTS investor (jwt TEXT PRIMARY KEY, secret TEXT)") +connection.commit() + +investors = [ + {'username':'investor_1', 'secret':'secret_1'}, + {'username':'investor_2', 'secret':'secret_2'}, + {'username':'investor_3', 'secret':'secret_3'}, + {'username':'investor_4', 'secret':'secret_4'}, + {'username':'investor_5', 'secret':'secret_5'} +] + +for investor in investors: + secret = investor.pop('secret') + encoded_jwt = jwt.encode(investor, secret, algorithm="HS256") + cursor.execute("REPLACE INTO investor (jwt,secret) VALUES (?,?)", (encoded_jwt,secret)) + connection.commit() \ No newline at end of file diff --git a/MiscClients/golang_rest_service/investors/investors.db b/MiscClients/golang_rest_service/investors/investors.db new file mode 100644 index 0000000..94e5178 Binary files /dev/null and b/MiscClients/golang_rest_service/investors/investors.db differ diff --git a/MiscClients/golang_rest_service/python_client/README b/MiscClients/golang_rest_service/python_client/README new file mode 100644 index 0000000..97f8ca4 --- /dev/null +++ b/MiscClients/golang_rest_service/python_client/README @@ -0,0 +1 @@ +python3 test_client.py --base_url='http://localhost:28100' diff --git a/MiscClients/golang_rest_service/python_client/test_client.py b/MiscClients/golang_rest_service/python_client/test_client.py new file mode 100644 index 0000000..025a3e9 --- /dev/null +++ b/MiscClients/golang_rest_service/python_client/test_client.py @@ -0,0 +1,128 @@ +import argparse +import time + +import requests +import json +import jwt + +investor_1 = \ + { + 'secret': 'secret_1', + 'token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImludmVzdG9yXzEifQ.UcFhJ9edf6egfK286FQoeFdfaN-VH8f7Ka1sXHdL38c' + } +investor_2 = \ + { + 'secret': 'secret_2', + 'token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImludmVzdG9yXzIifQ.Bpnm03NeJU_tblzFTqxCpRxUm6K757nSpXkiLaA_UZ4' + } + + +def print_json(json_object: json): + json_formatted_str = json.dumps(json_object, indent=2) + print(json_formatted_str) + + +def get_instruments(base_url: str) -> dict: + response = requests.get(base_url + '/instruments') + return json.loads(response.text) + + +def get_market_data(base_url: str, instrument_list: list) -> dict: + response = requests.post(base_url + '/market_data', json=list(instrument_list)) + response_dict = json.loads(response.text) + return response_dict + + +def submit_order_from_market_data(base_url: str, investor: dict, instrument: dict, side: str, + price: int, order_qty: int): + new_order_single = {} + new_order_single['user_token'] = investor['token'] + new_order_single['instrument'] = instrument + new_order_single['new_order_single'] = {} + new_order_single['new_order_single']['side'] = side + new_order_single['new_order_single']['order_type'] = '1' + new_order_single['new_order_single']['price'] = price + new_order_single['new_order_single']['order_qty'] = order_qty + new_order_single['new_order_single']['time_in_force'] = '0' + print_json(new_order_single) + response = requests.post(base_url + '/submit_order', json=new_order_single) + response_dict = jwt.decode(response.text, investor['secret'], algorithms="HS256") + + return response_dict + + +def cancel_order(base_url: str, investor: dict, instrument: dict, client_order_id: str): + cancel_order = {} + cancel_order['user_token'] = investor['token'] + cancel_order['instrument'] = instrument + cancel_order['cancel_order'] = {} + cancel_order['cancel_order']['side'] = '1' + cancel_order['cancel_order']['client_order_id'] = client_order_id + response = requests.post(base_url + '/cancel_order', json=cancel_order) + response_dict = jwt.decode(response.text, investor['secret'], algorithms="HS256") + + return response_dict + + +def get_inverstor_orders(base_url: str, investor: dict): + investor_order_request = {} + investor_order_request['user_token'] = investor['token'] + response = requests.post(base_url + '/investor_orders', json=investor_order_request) + response_dict = jwt.decode(response.text, investor['secret'], algorithms="HS256") + return response_dict + + +def get_order_status(base_url: str, investor: dict, orders: list): + order_status_request = {} + order_status_request['user_token'] = investor['token'] + order_status_request['orders'] = orders + response = requests.post(base_url + '/order_status_request', json=order_status_request) + response_dict = jwt.decode(response.text, investor['secret'], algorithms="HS256") + return response_dict + + +if __name__ == '__main__': + + parser = argparse.ArgumentParser( + prog='Basic REST Client', + description='Basic test client for golang RESTAPI to DistributedATS') + + parser.add_argument('-u', '--base_url', help='BASE_URL of RESTAPI', required=True) + args = parser.parse_args() + + base_url = args.base_url + print("BaseURL: " + args.base_url) + + instruments = get_instruments(base_url) + market_data = get_market_data(base_url, instruments.values()) + + for instrument, instrument_market_data in market_data.items(): + print("Instrument:") + print_json(json.loads(instrument)) + print_json(instrument_market_data) + passive_order_response = submit_order_from_market_data(base_url, investor_1, json.loads(instrument), '1', + instrument_market_data['open_price'], 100) + print("Passive Order Response:") + print_json(passive_order_response) + time.sleep(1) + aggressive_order_response = submit_order_from_market_data(base_url, investor_2, json.loads(instrument), '2', + instrument_market_data['open_price'], 50) + print("Aggressive Order Response:") + print_json(aggressive_order_response) + time.sleep(1) + print("Cancelling remainder of the passive order:") + cancel_response = cancel_order(base_url, investor_1, json.loads(instrument), + passive_order_response['data']['client_order_id']) + print("Cancel Order Response:") + print_json(cancel_response) + + print("Getting all orders submitted by secret_1") + investor_orders = get_inverstor_orders(base_url, investor_1) + for order in investor_orders['data']['orders']: + print_json(order) + + print("Lets check orders") + order_status = get_order_status(base_url, investor_1, investor_orders['data']['orders']) + print_json(order_status) + + exit(0) diff --git a/MiscClients/golang_rest_service/rest_to_fix.go b/MiscClients/golang_rest_service/rest_to_fix.go new file mode 100644 index 0000000..880374a --- /dev/null +++ b/MiscClients/golang_rest_service/rest_to_fix.go @@ -0,0 +1,83 @@ +/* + Copyright (C) 2024 Mike Kipnis - DistributedATS +*/ + +package main + +import ( + "bytes" + "fmt" + "io" + "os" + + "github.com/gin-gonic/gin" + "github.com/quickfixgo/quickfix" + + _ "github.com/mattn/go-sqlite3" + + components "golang_rest_service/components" + + flag "github.com/spf13/pflag" +) + +func main() { + + var cfgFileName string + + var rest_port_number *int = flag.Int("rest_port_number", 28100, "REST Service Port Number") + var quickfix_config *string = flag.String("quickfix_config", "config/tradeclient.cfg", "QuickFIX Config") + var investors_db *string = flag.String("investor_db", "investors/investors.db", "Investors DB") + + flag.Parse() + + var investors = components.PopulateInvestorCredenital(*investors_db) + + cfg, err := os.Open(*quickfix_config) + if err != nil { + fmt.Printf("error opening %v, %v", cfgFileName, err) + os.Exit(0) + } + defer cfg.Close() + + stringData, readErr := io.ReadAll(cfg) + if readErr != nil { + fmt.Printf("error reading cfg: %s,", readErr) + } + + fmt.Printf("String Data: %s", stringData) + appSettings, err := quickfix.ParseSettings(bytes.NewReader(stringData)) + if err != nil { + fmt.Printf("error reading cfg: %s,", err) + } + + fixTradeClient := components.NewFIXTradeClient("TEST") + fileLogFactory, err := quickfix.NewFileLogFactory(appSettings) + + if err != nil { + fmt.Printf("error creating file log factory: %s,", err) + } + + initiator, err := quickfix.NewInitiator(fixTradeClient, quickfix.NewMemoryStoreFactory(), appSettings, fileLogFactory) + if err != nil { + fmt.Printf("unable to create initiator: %s", err) + } + + err = initiator.Start() + if err != nil { + fmt.Printf("unable to start initiator: %s", err) + } + + rest_service := gin.Default() + + components.InstrumentService(rest_service, fixTradeClient) + components.MarketDataService(rest_service, fixTradeClient) + components.SubmitOrderService(rest_service, fixTradeClient, &investors) + components.CancelOrderService(rest_service, fixTradeClient, &investors) + components.InvestorOrdersService(rest_service, fixTradeClient, &investors) + components.InvestorOrderStatusService(rest_service, fixTradeClient, &investors) + + rest_run_port := fmt.Sprintf(":%d", *rest_port_number) + + rest_service.Run(rest_run_port) + +} diff --git a/MiscClients/python3/main.py b/MiscClients/python3/main.py index e52f1a9..846efa5 100644 --- a/MiscClients/python3/main.py +++ b/MiscClients/python3/main.py @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -108,9 +108,11 @@ def toAdmin(self, message, sessionID): return def fromAdmin(self, message, sessionID): + print("fromAdmin:" + str(message)) return def toApp(self, message, sessionID): + print("toApp:" + str(message)) return def fromApp(self, message, sessionID): @@ -268,4 +270,4 @@ def main(config_file): parser = argparse.ArgumentParser(description='FIX Client') parser.add_argument('file_name', type=str, help='Name of configuration file') args = parser.parse_args() - main(args.file_name) \ No newline at end of file + main(args.file_name) diff --git a/MiscClients/python3/python_client.cfg b/MiscClients/python3/python_client.cfg index 14c3f19..a330e27 100644 --- a/MiscClients/python3/python_client.cfg +++ b/MiscClients/python3/python_client.cfg @@ -13,13 +13,13 @@ ResetOnDisconnect=Y [SESSION] BeginString=FIX.4.4 -SenderCompID=CRYPTO_TRADER_4 +SenderCompID=UST_TRADER_2 Password=TEST Symbol=MTC-CAD SecurityExchange=MARKET_OTHER_COIN NumberOfOrders=1000 -TargetCompID=FIX_GWY_2 +TargetCompID=FIX_GWY_1 SocketConnectHost=localhost -SocketConnectPort=16001 +SocketConnectPort=15001 HeartBtInt=30 DataDictionary=../../FIXGateway/spec/FIX44.xml diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/Controllers/LoginController.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/Controllers/LoginController.java index df0bc17..f1e92bb 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/Controllers/LoginController.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/Controllers/LoginController.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -63,4 +63,4 @@ public Object logonRequest(@RequestBody Login login, HttpServletResponse respons } -} \ No newline at end of file +} diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/Controllers/SessionState.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/Controllers/SessionState.java index 4ed5a50..d09bbc9 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/Controllers/SessionState.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/Controllers/SessionState.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/Controllers/SessionStateController.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/Controllers/SessionStateController.java index af9c19d..0f77512 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/Controllers/SessionStateController.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/Controllers/SessionStateController.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/ServletInitializer.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/ServletInitializer.java index 5c1bab0..3ea0a51 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/ServletInitializer.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/ServletInitializer.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/WebConfig.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/WebConfig.java index ea218b5..bfa6c1d 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/WebConfig.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/WebConfig.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/WebSecurityConfig.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/WebSecurityConfig.java index b5064f4..ad31346 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/WebSecurityConfig.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/WebSecurityConfig.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -40,4 +40,4 @@ public class WebSecurityConfig implements WebMvcConfigurer { public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**"); } -} \ No newline at end of file +} diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/WebTraderRestApplication.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/WebTraderRestApplication.java index aed247f..953d678 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/WebTraderRestApplication.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/WebTraderRestApplication.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/CancelOrder.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/CancelOrder.java index f2781f1..663e7b7 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/CancelOrder.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/CancelOrder.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/ExecutionReport.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/ExecutionReport.java index 0a2453a..60821b6 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/ExecutionReport.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/ExecutionReport.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/Instrument.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/Instrument.java index b820aa2..e0bce32 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/Instrument.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/Instrument.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/Order.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/Order.java index f0ef380..f42d3a3 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/Order.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/Order.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/OrderKey.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/OrderKey.java index 2f6fc5c..72a1877 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/OrderKey.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/OrderKey.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/PriceLevel.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/PriceLevel.java index 072f62c..9adb282 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/PriceLevel.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/PriceLevel.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/PriceLevelKey.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/PriceLevelKey.java index 988fa20..857265b 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/PriceLevelKey.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/entity/PriceLevelKey.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/ConvertUtils.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/ConvertUtils.java index bc7de31..44b7e8c 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/ConvertUtils.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/ConvertUtils.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/ExecutionReportProcessorThread.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/ExecutionReportProcessorThread.java index c1868af..0d68e46 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/ExecutionReportProcessorThread.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/ExecutionReportProcessorThread.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXApplication.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXApplication.java index 34680b6..57038c8 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXApplication.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXApplication.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXConvertUtils.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXConvertUtils.java index 12263ef..8a6ed66 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXConvertUtils.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXConvertUtils.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXMessageBlock.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXMessageBlock.java index 6e45313..a546341 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXMessageBlock.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXMessageBlock.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXServiceInterfaceImpl.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXServiceInterfaceImpl.java index e9dea6c..6fdc46f 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXServiceInterfaceImpl.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXServiceInterfaceImpl.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXSessionID.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXSessionID.java index a84d4dc..136f71a 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXSessionID.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXSessionID.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXSocketInitiator.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXSocketInitiator.java index 2b70cf1..8a50dab 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXSocketInitiator.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXSocketInitiator.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXUserSession.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXUserSession.java index f36d8d0..621538c 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXUserSession.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/FIXUserSession.java @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. @@ -27,33 +27,6 @@ of this software and associated documentation files (the "Software"), to deal package org.DistributedATS.WebTraderRest.quickfix; -/* -Copyright (C) 2022 Mike Kipnis - -This file is part of DistributedATS, a free-software/open-source project -that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies -the process of having multiple FIX gateways communicating with multiple -matching engines in realtime. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/MarketDataProcessorThread.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/MarketDataProcessorThread.java index a4c7ed5..6481f2c 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/MarketDataProcessorThread.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/MarketDataProcessorThread.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/MarketDataSnapshot.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/MarketDataSnapshot.java index 5902f67..c27b727 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/MarketDataSnapshot.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/MarketDataSnapshot.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/OrderMan.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/OrderMan.java index a44dccd..a41110d 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/OrderMan.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/OrderMan.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/Position.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/Position.java index 42d8429..d3d37c8 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/Position.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/Position.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/PositionMan.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/PositionMan.java index aefa765..20551a4 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/PositionMan.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/PositionMan.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/QuickFixRunnableBean.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/QuickFixRunnableBean.java index 04bb953..d16c293 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/QuickFixRunnableBean.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/QuickFixRunnableBean.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/RefDataUtils.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/RefDataUtils.java index ab8304d..7fc2e5b 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/RefDataUtils.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/RefDataUtils.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/SessionManagerThread.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/SessionManagerThread.java index 297bd61..54b7ea0 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/SessionManagerThread.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/SessionManagerThread.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/SessionStateRequest.java b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/SessionStateRequest.java index 4088491..8031f06 100644 --- a/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/SessionStateRequest.java +++ b/MiscClients/spring_reactjs/src/main/java/org/DistributedATS/WebTraderRest/quickfix/SessionStateRequest.java @@ -2,7 +2,7 @@ Copyright (C) 2022 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/MiscClients/spring_reactjs/src/main/resources/fixclient.cfg b/MiscClients/spring_reactjs/src/main/resources/fixclient.cfg index 5f47abe..c6e2cbf 100644 --- a/MiscClients/spring_reactjs/src/main/resources/fixclient.cfg +++ b/MiscClients/spring_reactjs/src/main/resources/fixclient.cfg @@ -1,10 +1,8 @@ [DEFAULT] ConnectionType=initiator TargetCompID=FIX_GWY_1 -# Docker -#SocketConnectHost=distributed_ats -# Dev -SocketConnectHost=127.0.0.1 +SocketConnectHost=distributed_ats +#SocketConnectHost=127.0.0.1 #SocketConnectHost=165.22.179.176 StartTime=00:00:00 EndTime=24:00:00 diff --git a/MiscClients/spring_reactjs/webtrader_reactjs/src/App.js b/MiscClients/spring_reactjs/webtrader_reactjs/src/App.js index 059e9c8..57fcb18 100644 --- a/MiscClients/spring_reactjs/webtrader_reactjs/src/App.js +++ b/MiscClients/spring_reactjs/webtrader_reactjs/src/App.js @@ -25,9 +25,7 @@ function App() const histRef = React.useRef(); const marketDataAndPositionsRef = React.useRef(); - const url = "http://localhost:8080/"; - //const url = "https://dats.ustreasuries.online/"; - //const url = window.location.href; + const url = window.location.href; const last_sequence_number = useRef(0); // sequence number between front-end and rest controller const last_session_state = useRef(null); diff --git a/Protocols/tcp.ini b/Protocols/tcp.ini deleted file mode 100644 index 53886bd..0000000 --- a/Protocols/tcp.ini +++ /dev/null @@ -1,5 +0,0 @@ -[common] -DCPSDebugLevel=1 -DCPSTransportDebugLevel=1 -DCPSInfoRepo=corbaloc::localhost:12345/DCPSInfoRepo - diff --git a/README.md b/README.md index c2d42b0..7eb3214 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## Distributed ATS -DistributedATS is a [**FIX Protocol-based**](https://www.fixtrading.org) alternative trading system that integrates [QuickFIX](https://github.com/quickfix/quickfix) and [LiquiBook](https://github.com/enewhuis/liquibook) over [OpenDDS](https://github.com/objectcomputing/OpenDDS). This project simplifies the process of communication between multiple FIX gateways and multiple matching engines(CLOB) in real-time. FIX Gateways communicate with clients via FIX and Matching Engines and Middleware(Data Service) components via topic-based DDS IDL Pub/Sub mechanism. +DistributedATS is a [**FIX Protocol-based**](https://www.fixtrading.org) alternative trading system that integrates [QuickFIX](https://github.com/quickfix/quickfix) and [LiquiBook](https://github.com/enewhuis/liquibook) over [FastDDS](https://github.com/eProsima/Fast-DDS). This project simplifies the process of communication between multiple FIX gateways and multiple matching engines(CLOB) in real-time. FIX Gateways communicate with clients via FIX and Matching Engines and Middleware(Data Service) components via topic-based DDS IDL Pub/Sub mechanism. ### Components @@ -18,7 +18,7 @@ DistributedATS is a [**FIX Protocol-based**](https://www.fixtrading.org) alterna |Dependency|Component| |----------|---------| -|[OpenDDS](https://www.opendds.org)|[DDS/Middleware](https://www.dds-foundation.org/what-is-dds-3/)| +|[FastDDS](https://github.com/eProsima/Fast-DDS)|[DDS/Middleware](https://www.dds-foundation.org/what-is-dds-3/)| |[QuickFIX](https://github.com/quickfix/quickfix)|[FIXGateway](https://github.com/mkipnis/DistributedATS/tree/master/FIXGateway)| |[LiquiBook](https://github.com/enewhuis/liquibook)|[MatchingEngine](https://github.com/mkipnis/DistributedATS/tree/master/MatchingEngine)| |[SQLite3](https://github.com/sqlite/sqlite)|[DataService](https://github.com/mkipnis/DistributedATS/tree/master/DataService)| @@ -71,34 +71,54 @@ DistributedATS is a [**FIX Protocol-based**](https://www.fixtrading.org) alterna ### Autogeneration of IDL from QuickFIX XML [GenTools](https://github.com/mkipnis/DistributedATS/tree/master/GenTools) is a utility that generates DDS IDL, FIX to IDL, and IDL to FIX adapters and IDL logger helper classes from QuickFIX's XML data dictionary. -### Building Distributed ATS and it's dependencies +### Building Distributed ATS and its dependencies + +To download and build all necessary dependencies, use the provided script: + +[download_deps_and_build_all.sh](https://github.com/mkipnis/DistributedATS/blob/master/download_deps_and_build_all.sh) + +To build the base Docker image: + +[Docker.Build_Distributed_ATS](https://github.com/mkipnis/DistributedATS/blob/master/docker/Docker.Build_Distributed_ATS) + + +## Basic ATS Examples +### Crypto Central Limit Order Book +- Docker Image: [Docker.Crypto_CLOB](https://github.com/mkipnis/DistributedATS/blob/master/docker/Docker.Crypto_CLOB) +- Docker Compose: [docker-compose-crypto.yml](https://github.com/mkipnis/DistributedATS/blob/master/docker/docker-compose-crypto.yml) ``` -download_deps_and_build_all.sh +sudo docker-compose -f docker-compose-crypto.yml up -d ``` +Upon starting the dockerized instance, open in the browser: +* http://localhost:8080 -### Docker +##### +Users: +- CRYPTO_TRADER_1 +- CRYPTO_TRADER_2 +- CRYPTO_TRADER_3 +- CRYPTO_TRADER_4 -[docker-compose.yml](https://github.com/mkipnis/DistributedATS/blob/master/docker/docker-compose.yml) +Password: +- TEST +##### +### US Treasuries Central Limit Order Book + +- Docker Image: [Docker.UST_CLOB](https://github.com/mkipnis/DistributedATS/blob/master/docker/Docker.UST_CLOB) +- Docker Compose: [docker-compose-ust.yml](https://github.com/mkipnis/DistributedATS/blob/master/docker/docker-compose-ust.yml) ``` -version: '2' -services: - # Core: Matching Engines, Data Services, FIX Gateways - distributed_ats: - image: ghcr.io/mkipnis/distributed_ats:latest - command: ["bash", "-c", "cd /opt/DistributedATS/; . ./distributed_ats_env.sh; cd MiscATS/CryptoCLOB/scripts; ./start_ats.sh"] - # volumes: # Users and Instruments - # - "./data:/opt/DistributedATS/DataService/sql/sqlite" - ports: # FIX Gateways - - "15001:15001" - - "16001:16001" - - "17001:17001" - - # Front-End : Tomcat/Spring/React - distributed_ats_webtrader: - image: ghcr.io/mkipnis/distributed_ats_webtrader:latest - ports: - - "8080:8080" +sudo docker-compose -f docker-compose-ust.yml up -d ``` - -Upon starting the dockerized instance, open your browser and go to http://localhost:8080. Then, use either CRYPTO_TRADER_1, CRYPTO_TRADER_2, CRYPTO_TRADER_3, or CRYPTO_TRADER_4 as the username to log in with the password "TEST". +Upon starting the dockerized instance, open in the browser: +* http://localhost:8080 +##### +Users: +- UST_TRADER_1 +- UST_TRADER_2 +- UST_TRADER_3 +- UST_TRADER_4 + +Password: +- TEST +###### diff --git a/SimulatorATS/Application.cpp b/SimulatorATS/Application.cpp index cf04c9d..6c43646 100644 --- a/SimulatorATS/Application.cpp +++ b/SimulatorATS/Application.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/SimulatorATS/Application.h b/SimulatorATS/Application.h index 4b2c61f..bcc567d 100644 --- a/SimulatorATS/Application.h +++ b/SimulatorATS/Application.h @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/SimulatorATS/CMakeLists.txt b/SimulatorATS/CMakeLists.txt new file mode 100644 index 0000000..59325e8 --- /dev/null +++ b/SimulatorATS/CMakeLists.txt @@ -0,0 +1,34 @@ +cmake_minimum_required(VERSION 3.12.4) + +if(NOT CMAKE_VERSION VERSION_LESS 3.0) + cmake_policy(SET CMP0048 NEW) +endif() + +project(SimulatorATS) + +# Find requirements +if(NOT fastcdr_FOUND) + find_package(fastcdr REQUIRED) +endif() + +if(NOT fastdds_FOUND) + find_package(fastdds 3 REQUIRED) +endif() + +find_package(log4cxx REQUIRED) + +# Set C++14 instead of C++11 +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +link_directories(${CMAKE_INSTALL_PREFIX}/lib) +link_directories(${CMAKE_QUICKFIX_PREFIX}/lib) +#link_directories(${Boost_LIBRARY_DIRS}) + +file(GLOB DISTRIBUTED_ATS_SIMULATOR_ATS_SRC *) +add_executable(SimulatorATS ${DISTRIBUTED_ATS_SIMULATOR_ATS_SRC}) +link_directories(DistributedATSLib quickfix log4cxx) +target_link_libraries(SimulatorATS DistributedATSLib quickfix log4cxx boost_program_options) + +set(CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "-o linker-signed") diff --git a/SimulatorATS/Instrument.hpp b/SimulatorATS/Instrument.hpp index 063340e..b19275d 100644 --- a/SimulatorATS/Instrument.hpp +++ b/SimulatorATS/Instrument.hpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/SimulatorATS/Market.cpp b/SimulatorATS/Market.cpp index 2031938..3108985 100644 --- a/SimulatorATS/Market.cpp +++ b/SimulatorATS/Market.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/SimulatorATS/Market.hpp b/SimulatorATS/Market.hpp index 38bbad5..56157a9 100644 --- a/SimulatorATS/Market.hpp +++ b/SimulatorATS/Market.hpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/SimulatorATS/OrderManager.cpp b/SimulatorATS/OrderManager.cpp index 43e1ab0..f8db07f 100644 --- a/SimulatorATS/OrderManager.cpp +++ b/SimulatorATS/OrderManager.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/SimulatorATS/OrderManager.hpp b/SimulatorATS/OrderManager.hpp index 8ab417b..14bdbb4 100644 --- a/SimulatorATS/OrderManager.hpp +++ b/SimulatorATS/OrderManager.hpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/SimulatorATS/SimulatorATS.cpp b/SimulatorATS/SimulatorATS.cpp index b53bc56..ebfca7e 100644 --- a/SimulatorATS/SimulatorATS.cpp +++ b/SimulatorATS/SimulatorATS.cpp @@ -2,7 +2,7 @@ Copyright (C) 2021 Mike Kipnis This file is part of DistributedATS, a free-software/open-source project - that integrates QuickFIX and LiquiBook over OpenDDS. This project simplifies + that integrates QuickFIX and LiquiBook over DDS. This project simplifies the process of having multiple FIX gateways communicating with multiple matching engines in realtime. diff --git a/SimulatorATS/SimulatorATS.mpc b/SimulatorATS/SimulatorATS.mpc deleted file mode 100644 index ab1c1d7..0000000 --- a/SimulatorATS/SimulatorATS.mpc +++ /dev/null @@ -1,29 +0,0 @@ -project(SimulatorATS) : dcpsexe, dcps_tcp, svc_utils { - - dynamicflags = DISTRIBUTEDATS_BUILD_DLL - requires += tao_orbsvcs - after += Svc_Utils - includes += $(TAO_ROOT)/orbsvcs - idlflags += -I$(TAO_ROOT)/orbsvcs \ - -Wb,export_macro=DistributedATS_Export \ - -Wb,export_include=DistributedATS_Export.h - dcps_ts_flags += -Wb,export_macro=DistributedATS_Export - - exename = SimulatorATS - requires += tao_orbsvcs - - includes += $(TAO_ROOT)/orbsvcs $(QUICKFIX_HOME)/include $(DATS_HOME)/GenTools/idl/ $(DATS_HOME)/Common - libpaths += $(QUICKFIX_HOME)/lib $(DATS_HOME)/GenTools/idl/ - - after += Svc_Utils - - libs += quickfix - - Source_Files { - SimulatorATS.cpp - Application.cpp - Market.cpp - OrderManager.cpp - } -} - diff --git a/config/log4cxx.xml b/config/log4cxx.xml new file mode 100644 index 0000000..36ec1fa --- /dev/null +++ b/config/log4cxx.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docker/Docker.Build_Distributed_ATS b/docker/Docker.Build_Distributed_ATS new file mode 100644 index 0000000..2a47d64 --- /dev/null +++ b/docker/Docker.Build_Distributed_ATS @@ -0,0 +1,12 @@ +FROM ubuntu:latest + +RUN apt-get update +RUN apt install -y vim cmake curl build-essential libapr1-dev libaprutil1-dev git libboost-all-dev sqlite3 libsqlite3-dev libtool libasio-dev libtinyxml2-dev zip python3-pip +RUN pip install psutil --break-system-packages + +ADD build_distributed_ats.sh / +RUN /build_distributed_ats.sh + +EXPOSE 15001 +EXPOSE 16001 +EXPOSE 17001 diff --git a/docker/Docker.Crypto_CLOB b/docker/Docker.Crypto_CLOB new file mode 100644 index 0000000..02bd1d6 --- /dev/null +++ b/docker/Docker.Crypto_CLOB @@ -0,0 +1,12 @@ +FROM ghcr.io/mkipnis/distributed_ats:latest + +EXPOSE 15001 +EXPOSE 16001 +EXPOSE 17001 + +WORKDIR /opt/DistributedATS + +COPY crypto_clob_env.sh dats_env.sh +COPY start_crypto_clob.sh /opt/DistributedATS/MiscATS/CryptoCLOB/scripts/ + +RUN chmod +x dats_env.sh diff --git a/docker/Docker.UST_CLOB b/docker/Docker.UST_CLOB new file mode 100644 index 0000000..7770bd7 --- /dev/null +++ b/docker/Docker.UST_CLOB @@ -0,0 +1,12 @@ +FROM ghcr.io/mkipnis/distributed_ats:latest + +EXPOSE 15001 +EXPOSE 16001 +EXPOSE 17001 + +WORKDIR /opt/DistributedATS + +COPY ust_clob_env.sh dats_env.sh +COPY start_ust_clob.sh /opt/DistributedATS/MiscATS/USTreasuryCLOB/scripts/ + +RUN chmod +x dats_env.sh diff --git a/docker/Docker.WebTrader b/docker/Docker.WebTrader index ca0e122..d108ede 100644 --- a/docker/Docker.WebTrader +++ b/docker/Docker.WebTrader @@ -1,6 +1,7 @@ FROM tomcat:9.0 -ENV CATALINA_OUT /dev/stdout - ADD WebTraderRest-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war + +COPY logging.properties /usr/local/tomcat/conf/logging.properties + EXPOSE 8080 diff --git a/docker/Docker.build_distributed_ats b/docker/Docker.build_distributed_ats deleted file mode 100644 index 89b39f0..0000000 --- a/docker/Docker.build_distributed_ats +++ /dev/null @@ -1,16 +0,0 @@ -FROM ubuntu:latest - -FROM ghcr.io/objectcomputing/opendds:DDS-3.23 - -RUN apt-get update -RUN apt-get install -y vim sqlite3 libsqlite3-dev libtool - -ADD build_deps.sh / -RUN /build_deps.sh - -ADD build_distributed_ats.sh / -RUN /build_distributed_ats.sh - -EXPOSE 15001 -EXPOSE 16001 -EXPOSE 17001 diff --git a/docker/build_deps.sh b/docker/build_deps.sh deleted file mode 100755 index 0d1a185..0000000 --- a/docker/build_deps.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -set -x - -CURRENT_DIR=`pwd` - -QUICKFIX_PKG=1.15.1 -LIQUIBOOK_PKG=2.0.0 - -[[ ! -f quickfix-v$QUICKFIX_PKG.tar.gz ]] && curl -L "https://github.com/quickfix/quickfix/archive/refs/tags/v$QUICKFIX_PKG.tar.gz" -o quickfix-v$QUICKFIX_PKG.tar.gz -[[ ! -f liquibook-$LIQUIBOOK_PKG.tar.gz ]] && curl -L "https://github.com/enewhuis/liquibook/archive/refs/tags/$LIQUIBOOK_PKG.tar.gz" -o liquibook-$LIQUIBOOK_PKG.tar.gz - -if [[ ! -f /include/quickfix/config-all.h ]] -then - -[[ ! -d quickfix-$QUICKFIX_PKG ]] && tar xvf quickfix-v$QUICKFIX_PKG.tar.gz -cd quickfix-$QUICKFIX_PKG -./bootstrap -./configure -make install -fi - -if [[ ! -f $INSTALL_DIR/liquibook-$LIQUIBOOK_PKG/src/liquibook_export.h ]] -then - -cd $CURRENT_DIR -[[ ! -d liquibook-$LIQUIBOOK_PKG ]] && tar xvf liquibook-$LIQUIBOOK_PKG.tar.gz - -fi - -ln -sf /usr/lib/x86_64-linux-gnu/libsqlite3.so /usr/lib/libsqlite3.so - -[[ ! -f /opt/DistributedATS ]] && git clone https://github.com/mkipnis/DistributedATS /opt/DistributedATS - -cd /opt/DistributedATS - -/bin/cat < distributed_ats_env.sh - -set -x - -source /opt/OpenDDS/setenv.sh - -export QUICKFIX_HOME=/usr/local -export DATS_HOME=/opt/DistributedATS -export LIQUIDBOOK_HOME=$CURRENT_DIR/liquibook-$LIQUIBOOK_PKG -export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$DATS_HOME/lib: - -EOM - -exit 0 diff --git a/docker/build_distributed_ats.sh b/docker/build_distributed_ats.sh index cfdf89c..9df12f1 100755 --- a/docker/build_distributed_ats.sh +++ b/docker/build_distributed_ats.sh @@ -1,10 +1,6 @@ #!/bin/bash -set -x +[[ ! -f /opt/distributed_ats_src ]] && git clone -b master https://github.com/mkipnis/DistributedATS /opt/distributed_ats_src -cd /opt/DistributedATS - -. ./distributed_ats_env.sh - -mwc.pl -type gnuace -make +cd /opt/distributed_ats_src +HOME=/opt ./download_deps_and_build_all.sh diff --git a/docker/crypto_clob_env.sh b/docker/crypto_clob_env.sh new file mode 100644 index 0000000..fc6da81 --- /dev/null +++ b/docker/crypto_clob_env.sh @@ -0,0 +1,22 @@ +export DATS_HOME=/opt/DistributedATS +export DEPS_HOME=/opt/distributed_ats_deps_build +export LD_LIBRARY_PATH=$DEPS_HOME/lib:$DATS_HOME/lib:$LD_LIBRARY_PATH +export LOG4CXX_CONFIGURATION=/opt/DistributedATS/config/log4cxx.xml + +#echo Specific Specific + +#echo Crypto ATS +export BASEDIR_ATS=$DATS_HOME/MiscATS/CryptoCLOB +export DATS_LOG_HOME=$BASEDIR_ATS/logs +mkdir -p $BASEDIR_ATS/logs + +#echo US Treasuries +#export BASEDIR_ATS=$DATS_HOME/MiscATS/USTreasuryCLOB +#export DATS_LOG_HOME=$BASEDIR_ATS/logs +#mkdir -p $BASEDIR_ATS/logs + +#echo US Treasuries +#export BASEDIR_ATS=$DATS_HOME/MiscATS/MultiMatchingEngineATS +#export DATS_LOG_HOME=$BASEDIR_ATS/logs +#mkdir -p $BASEDIR_ATS/logs + diff --git a/docker/docker-compose-crypto.yml b/docker/docker-compose-crypto.yml new file mode 100644 index 0000000..c5ea1e0 --- /dev/null +++ b/docker/docker-compose-crypto.yml @@ -0,0 +1,31 @@ +version: '2' + +services: + # Core Services: Matching Engines, FIX Gateways + distributed_ats: + container_name: distributed_ats + image: ghcr.io/mkipnis/dats_crypto_clob:latest + command: > + bash -c "cd /opt/DistributedATS/ && + . ./dats_env.sh && + cd /opt/DistributedATS/MiscATS/CryptoCLOB/scripts && ./start_crypto_clob.sh" + volumes: + - ./data_ats:/opt/DistributedATS/DataService/sql/sqlite + - ./logs_ats:/opt/DistributedATS/MiscATS/CryptoCLOB/logs + ports: + - "15001:15001" + - "16001:16001" + - "17001:17001" + restart: unless-stopped + + # WebTrader Front-End + distributed_ats_webtrader: + container_name: distributed_ats_webtrader + image: ghcr.io/mkipnis/distributed_ats_webtrader:latest + depends_on: + - distributed_ats + volumes: + - ./webtrader_logs:/usr/local/tomcat/logs + ports: + - "8080:8080" + restart: unless-stopped diff --git a/docker/docker-compose-ust.yml b/docker/docker-compose-ust.yml new file mode 100644 index 0000000..44104d7 --- /dev/null +++ b/docker/docker-compose-ust.yml @@ -0,0 +1,31 @@ +version: '2' + +services: + # Core Services: Matching Engines, FIX Gateways + distributed_ats: + container_name: distributed_ats + image: ghcr.io/mkipnis/dats_ust_clob:latest + command: > + bash -c "cd /opt/DistributedATS/ && + . ./dats_env.sh && + cd /opt/DistributedATS/MiscATS/USTreasuryCLOB/scripts && ./start_ust_clob.sh" + volumes: + - ./data_ats:/opt/DistributedATS/DataService/sql/sqlite + - ./logs_ats:/opt/DistributedATS/MiscATS/USTreasuryCLOB/logs + ports: + - "15001:15001" + - "16001:16001" + - "17001:17001" + restart: unless-stopped + + # WebTrader Front-End + distributed_ats_webtrader: + container_name: distributed_ats_webtrader + image: ghcr.io/mkipnis/distributed_ats_webtrader:latest + depends_on: + - distributed_ats + volumes: + - ./webtrader_logs:/usr/local/tomcat/logs + ports: + - "8080:8080" + restart: unless-stopped diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml deleted file mode 100644 index 8abc6dd..0000000 --- a/docker/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -version: '2' -services: - # Core: Matching Engines, Data Services, FIX Gateways - distributed_ats: - image: ghcr.io/mkipnis/distributed_ats:latest - command: ["bash", "-c", "cd /opt/DistributedATS/; . ./distributed_ats_env.sh; cd MiscATS/CryptoCLOB/scripts; ./start_ats.sh"] - volumes: # Users and Instruments - # - "./data:/opt/DistributedATS/DataService/sql/sqlite" - - "./logs:/opt/DistributedATS/MiscATS/CryptoCLOB/logs" - ports: # FIX Gateways - - "15001:15001" - - "16001:16001" - - "17001:17001" - - # Front-End: Tomcat/Spring/React - distributed_ats_webtrader: - image: ghcr.io/mkipnis/distributed_ats_webtrader:latest - ports: - - "8080:8080" diff --git a/docker/dockerize_dats.sh b/docker/dockerize_dats.sh new file mode 100755 index 0000000..0175662 --- /dev/null +++ b/docker/dockerize_dats.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +set -x + +# Core +docker build -t ghcr.io/mkipnis/distributed_ats:latest -f Docker.Build_Distributed_ATS . +docker build --no-cache -t ghcr.io/mkipnis/dats_crypto_clob:latest -f Docker.Crypto_CLOB . +docker build --no-cache -t ghcr.io/mkipnis/dats_ust_clob:latest -f Docker.UST_CLOB . + +docker push ghcr.io/mkipnis/distributed_ats:latest +docker push ghcr.io/mkipnis/dats_crypto_clob:latest +docker push ghcr.io/mkipnis/dats_ust_clob:latest diff --git a/docker/dockerize_it.sh b/docker/dockerize_webtrader.sh similarity index 59% rename from docker/dockerize_it.sh rename to docker/dockerize_webtrader.sh index 979724a..78f0cf9 100755 --- a/docker/dockerize_it.sh +++ b/docker/dockerize_webtrader.sh @@ -2,11 +2,6 @@ set -x -# Core -#docker build -t distributed_ats -f Docker.build_distributed_ats . -docker build -t ghcr.io/mkipnis/distributed_ats:latest -f Docker.build_distributed_ats . -docker push ghcr.io/mkipnis/distributed_ats:latest - # Front-end DOCKER_DIR=`pwd` ln -sf ../MiscClients/spring_reactjs/ WebTrader @@ -17,6 +12,5 @@ mvn install cp target/WebTraderRest-0.0.1-SNAPSHOT.war $DOCKER_DIR cd $DOCKER_DIR -#docker build -t distributed_ats_webtrader -f Docker.WebTrader . docker build -t ghcr.io/mkipnis/distributed_ats_webtrader:latest -f Docker.WebTrader . docker push ghcr.io/mkipnis/distributed_ats_webtrader:latest diff --git a/docker/logging.properties b/docker/logging.properties new file mode 100644 index 0000000..b65e90a --- /dev/null +++ b/docker/logging.properties @@ -0,0 +1,17 @@ +# Default global logging level. +.level = INFO + +# Console handler configuration +handlers = java.util.logging.ConsoleHandler + +# Console handler level and formatter +java.util.logging.ConsoleHandler.level = FINE +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter + +# Set logging levels for different components +org.apache.catalina.level = INFO +org.apache.coyote.level = INFO +org.apache.tomcat.util.net.level = INFO + +# Optional: increase granularity +org.apache.level = FINE diff --git a/docker/start_ust_clob.sh b/docker/start_ust_clob.sh new file mode 100755 index 0000000..8642b2a --- /dev/null +++ b/docker/start_ust_clob.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +trap cleanup 1 2 3 6 + +cleanup() +{ + echo "Caught Signal ... cleaning up..." + + $BASEDIR_ATS/scripts/stop_ats.sh + + echo "Done." + + exit 1; +} + +sleep 1 +$DATS_HOME/scripts/matchingengine.sh start matching_engine_MARKET_UST.ini + +sleep 1 +$DATS_HOME/scripts/dataservice.sh start data_service_a.ini +$DATS_HOME/scripts/dataservice.sh start data_service_b.ini + +sleep 1 +$DATS_HOME/scripts/fixgateway.sh start fix_gwy_1.cfg +$DATS_HOME/scripts/fixgateway.sh start fix_gwy_2.cfg + +while true; do + $DATS_HOME/scripts/dataservice.sh check data_service_a.ini + $DATS_HOME/scripts/dataservice.sh check data_service_b.ini + $DATS_HOME/scripts/matchingengine.sh check matching_engine_MARKET_UST.ini + $DATS_HOME/scripts/fixgateway.sh check fix_gwy_1.cfg + $DATS_HOME/scripts/fixgateway.sh check fix_gwy_2.cfg + + sleep 10; +done diff --git a/docker/ust_clob_env.sh b/docker/ust_clob_env.sh new file mode 100644 index 0000000..df7da7e --- /dev/null +++ b/docker/ust_clob_env.sh @@ -0,0 +1,21 @@ +export DATS_HOME=/opt/DistributedATS +export DEPS_HOME=/opt/distributed_ats_deps_build +export LD_LIBRARY_PATH=$DEPS_HOME/lib:$DATS_HOME/lib:$LD_LIBRARY_PATH +export LOG4CXX_CONFIGURATION=/opt/DistributedATS/config/log4cxx.xml + +#echo Specific Specific + +#echo Crypto ATS +#export BASEDIR_ATS=$DATS_HOME/MiscATS/CryptoCLOB +#export DATS_LOG_HOME=$BASEDIR_ATS/logs +#mkdir -p $BASEDIR_ATS/logs + +#echo US Treasuries +export BASEDIR_ATS=$DATS_HOME/MiscATS/USTreasuryCLOB +export DATS_LOG_HOME=$BASEDIR_ATS/logs +mkdir -p $BASEDIR_ATS/logs + +#echo US Treasuries +#export BASEDIR_ATS=$DATS_HOME/MiscATS/MultiMatchingEngineATS +#export DATS_LOG_HOME=$BASEDIR_ATS/logs +#mkdir -p $BASEDIR_ATS/logs diff --git a/docs/BuildingDistributedATS.md b/docs/BuildingDistributedATS.md index 6cefd85..62159ec 100644 --- a/docs/BuildingDistributedATS.md +++ b/docs/BuildingDistributedATS.md @@ -1,28 +1,13 @@ ## Building Distributed ATS -All DistributedATS dependences need to be built and MySQL needs to be installed prior to building the project. +All DistributedATS dependences need to be built prior to building the project. -[See: Dependences](README.md#Dependences) - -The following environmental variables along with DDS variables must be set prior to building the project: DATS_HOME(DistributedATS home), QUICKFIX_HOME, MYSQL_HOME, LIQUIDBOOK_HOME as well as LD_LIBRARY_PATH. - -Example of an environmental variable file where all dependences were built under $HOME and MySQL was installed in its default location: -``` -. $HOME/OpenDDS-3.22/setenv.sh # OpenDDS and it's dependences - -export DATS_HOME=$HOME/DistributedATS # DistributedATS home - -export QUICKFIX_HOME=$HOME/quickfix -export MYSQL_HOME=/usr/local/mysql -export LIQUIDBOOK_HOME=$HOME/liquibook-master -export DYLD_LIBRARY_PATH=$HOME/quickfix/src/C++/.libs:$DYLD_LIBRARY_PATH +Upon successfully building and installing all the dependences, the following set of commands can be used to build the project: ``` +mkdir build +cd build -DistributedATS utilizes Make Project Creator as a build tool (Make Project Creator)[http://downloads.ociweb.com/MPC/docs/html/MakeProjectCreator.html] +cmake .. -Dfastcdr_DIR=$INSTALL_DIR/lib/cmake/fastcdr/ -Dfastrtps_DIR=$INSTALL_DIR/share/fastrtps/cmake/ -Dfoonathan_memory_DIR=$INSTALL_DIR/lib/foonathan_memory/cmake/ -Dlog4cxx_DIR=$INSTALL_DIR/lib/cmake/log4cxx -DCMAKE_INSTALL_PREFIX=$HOME/DistributedATS -DBoost_INCLUDE_DIR=$INSTALL_DIR/include -DLIQUIBOOK_HOME=$INSTALL_DIR/liquibook-$LIQUIBOOK_PKG/src -DQUICKFIX_INSTALL_PREFIX=$INSTALL_DIR -Upon successfully building and installing all the dependences, the following set of commands can be used to build the project: -``` -$ACE_ROOT/bin/mwc.pl -type gnuace -make realclean -make +cmake --build . --target install --config Debug ``` diff --git a/docs/Diagrams/HighLevelSystemDiagram b/docs/Diagrams/HighLevelSystemDiagram index f6db0df..337586c 100644 --- a/docs/Diagrams/HighLevelSystemDiagram +++ b/docs/Diagrams/HighLevelSystemDiagram @@ -31,7 +31,7 @@ - + diff --git a/docs/HighLevelDesign.md b/docs/HighLevelDesign.md index 54b5708..1df09c8 100644 --- a/docs/HighLevelDesign.md +++ b/docs/HighLevelDesign.md @@ -7,7 +7,7 @@ -#### FIX Gateways, Matching Engines and Data Services utilize DDS content filters to filter in published on DDS messages. [See: Chapter 5 - Content Subscription Profile](http://download.objectcomputing.com/OpenDDS/OpenDDS-latest.pdf) +#### FIX Gateways, Matching Engines and Data Services utilize DDS content filters to filter in published on DDS messages. [See: 3.5.8. Filtering data on a Topic](https://fast-dds.docs.eprosima.com/en/latest/fastdds/dds_layer/topic/contentFilteredTopic/createContentFilteredTopic.html) @@ -16,28 +16,31 @@ Example of Matching Engine filter expression: see [MatchingEngine/src/main.cpp]( ``` // Filter expression for the MARKET_NAME specified in config file // filter for messages for this market/security exchange -std::string filter_str = "m_Header.TargetCompID = 'MATCHING_ENGINE' and SecurityExchange='" + market->getMarketName() + "'"; -// filter for mass cancel -std::string filter_str_target_only = "m_Header.TargetCompID = 'MATCHING_ENGINE'"; - - // Incoming data - /////////////////////////////////////////////////////////////////////////////////// - // New Order Single: - // Topic - DDS::Topic_var new_order_single_topic = - participant.createTopicAndRegisterType< - DistributedATS_NewOrderSingle::NewOrderSingleTypeSupport_var, - DistributedATS_NewOrderSingle::NewOrderSingleTypeSupportImpl>( - NEW_ORDER_SINGLE_TOPIC_NAME); - // Filter - DDS::ContentFilteredTopic_ptr cft = - participant.getDomainParticipant()->create_contentfilteredtopic( - "FILTER_MATCHING_ENGINE_NEW_ORDER_SINGLE", new_order_single_topic, - filter_str.c_str(), DDS::StringSeq()); - // Data Reader - DDS::DataReaderListener_var newOrderSingleDataListener( - new MatchingEngine::NewOrderSingleDataReaderListenerImpl(market)); - participant.createDataReaderListener(cft, newOrderSingleDataListener); + std::string filter_str = + "header.TargetCompID = 'MATCHING_ENGINE' and SecurityExchange='" + + market->getMarketName() + "'"; + // filter for mass cancel + std::string filter_str_target_only = + "m_Header.TargetCompID = 'MATCHING_ENGINE'"; + + auto participant_ptr = + std::make_shared(0, "MatchingEngine"); + + participant_ptr->create_subscriber(); + participant_ptr->create_publisher(); + + // Incoming data + // New Order Single: + // Topic + auto new_order_single_topic_tuple = + participant_ptr->make_topic< + DistributedATS_NewOrderSingle::NewOrderSinglePubSubType, + DistributedATS_NewOrderSingle::NewOrderSingle>(NEW_ORDER_SINGLE_TOPIC_NAME); + + auto new_order_single_data_reader_tuple = + participant_ptr->make_data_reader_tuple(new_order_single_topic_tuple, + new MatchingEngine::NewOrderSingleDataReaderListenerImpl(market), + "FILTER_MATCHING_ENGINE_NEW_ORDER_SINGLE", filter_str); ``` Example of a NewOrderSingle received from FIX Client(TRADER_1) on FIX Gateway(FIX_GATEWAY_1) for Symbol(Tag:55) AAA and SecurityExchange(Tag:207) MARKET_Y. @@ -50,7 +53,7 @@ Example of a NewOrderSingle received from FIX Client(TRADER_1) on FIX Gateway(FI Below is a logged version of NewOrderSingle IDL converted by FIX Gateway and published to Matching Engine. Note, FIX Gateway sets header.TargetSubID to assigned to it Data Service. This is required for a copy of an Execution Report published by Matching Engine to be consumed by assigned Data Service in order to process consequent order mass status requests. ``` -(3599678|3599684|2021-02-22 18:25:23.088947) NewOrderSingle : Message : NewOrderSingle { +NewOrderSingle : Message : NewOrderSingle { Header { ddsMsg.BeginString : FIX.4.4 ddsMsg.BodyLength : 164 @@ -77,7 +80,7 @@ NewOrderSingle IDL above is being consumed and processed by a MatchingEngine wit Upon receiving and processing of NewOrderSingle above, Matching Engine publishes the following execution report on EXECUTION_REPORT_TOPIC: ``` -(3599678|3599684|2021-02-22 18:25:23.089071) ExecutionReport : Message : ExecutionReport { +ExecutionReport : Message : ExecutionReport { Header { ddsMsg.BeginString : ddsMsg.BodyLength : 30979815 diff --git a/download_deps_and_build_all.sh b/download_deps_and_build_all.sh index 4d0f741..7b7ef8f 100755 --- a/download_deps_and_build_all.sh +++ b/download_deps_and_build_all.sh @@ -1,113 +1,130 @@ #!/bin/bash -set -x +set -euo pipefail -CURRENT_DIR=`pwd` -DEPS_BUILD_DIR=$HOME/distributed_ats_deps_build +set -x -mkdir -p $DEPS_BUILD_DIR +# Define directories +DATS_SOURCE_DIR="$(pwd)" +DATS_HOME="$HOME/DistributedATS" +DEPS_BUILD_DIR="$HOME/distributed_ats_deps_build" +INSTALL_DIR="${1:-$DEPS_BUILD_DIR}" +LD_LIBRARY_PATH="LD_LIBRARY_PATH" -if [[ "$OSTYPE" == "darwin"* ]]; then - CXXFLAGS="-DWAZOO_64_BIT -std=c++11 -stdlib=libc++" -fi +mkdir -p "$DEPS_BUILD_DIR" +mkdir -p "$DATS_HOME" -if [ -z "$1" ] -then - INSTALL_DIR=$DEPS_BUILD_DIR - echo "Install directory is not supplied, installing in $INSTALL_DIR/" -else - INSTALL_DIR=$1 +# Mac-specific flags +CMAKE_FLAGS="" +if [[ "$OSTYPE" == "darwin"* ]]; then + export CXXFLAGS="-DWAZOO_64_BIT -std=c++11 -stdlib=libc++" + CMAKE_FLAGS="-G Xcode" + LD_LIBRARY_PATH="DYLD_LIBRARY_PATH" fi -OPENDDS_PKG=OpenDDS-3.22 +# Dependency versions +FOONATHAN_MEMORY_PKG=0.7-3 +FAST_CDR_PKG=2.3.0 +ASIO_PKG=1-28-0 +FAST_DDS_PKG=3.2.1 +LOG4CXX_PKG=1.2.0 QUICKFIX_PKG=1.15.1 -SQLITE_PKG=3.39.4 LIQUIBOOK_PKG=2.0.0 -[[ ! -f $DEPS_BUILD_DIR/$OPENDDS_PKG.tar.gz ]] && curl -L "https://github.com/objectcomputing/OpenDDS/releases/download/DDS-3.22/$OPENDDS_PKG.tar.gz" -o $DEPS_BUILD_DIR/$OPENDDS_PKG.tar.gz -[[ ! -f $DEPS_BUILD_DIR/quickfix-v$QUICKFIX_PKG.tar.gz ]] && curl -L "https://github.com/quickfix/quickfix/archive/refs/tags/v$QUICKFIX_PKG.tar.gz" -o $DEPS_BUILD_DIR/quickfix-v$QUICKFIX_PKG.tar.gz -[[ ! -f $DEPS_BUILD_DIR/sqlite-$SQLITE_PKG.tar.gz ]] && curl -L "https://github.com/sqlite/sqlite/archive/refs/tags/version-$SQLITE_PKG.tar.gz" -o $DEPS_BUILD_DIR/sqlite-$SQLITE_PKG.tar.gz -[[ ! -f $DEPS_BUILD_DIR/liquibook-$LIQUIBOOK_PKG.tar.gz ]] && curl -L "https://github.com/enewhuis/liquibook/archive/refs/tags/$LIQUIBOOK_PKG.tar.gz" -o $DEPS_BUILD_DIR/liquibook-$LIQUIBOOK_PKG.tar.gz - -export INSTALL_PREFIX=$INSTALL_DIR - -if [[ ! -f $INSTALL_DIR/include/dds/Version.h ]] -then - -cd $DEPS_BUILD_DIR -[[ ! -d $OPENDDS_PKG ]] && tar xvf $OPENDDS_PKG.tar.gz -cd $OPENDDS_PKG -./configure --std=c++11 -make install -j 10 - -fi - - -if [[ ! -f $INSTALL_DIR/include/quickfix/config-all.h ]] -then - -cd $DEPS_BUILD_DIR -[[ ! -d quickfix-$QUICKFIX_PKG ]] && tar xvf quickfix-v$QUICKFIX_PKG.tar.gz -cd quickfix-$QUICKFIX_PKG -./bootstrap -./configure --prefix=$INSTALL_DIR --exec-prefix=$INSTALL_DIR -make install -j 10 -fi - -if [[ ! -f $INSTALL_DIR/include/sqlite3.h ]] -then - -cd $DEPS_BUILD_DIR -[[ ! -d sqlite-$SQLITE_PKG ]] && tar xvf sqlite-$SQLITE_PKG.tar.gz -cd sqlite-version-$SQLITE_PKG -./configure --prefix=$INSTALL_DIR --exec-prefix=$INSTALL_DIR -make install -j 10 - -fi - -if [[ ! -f $INSTALL_DIR/liquibook-$LIQUIBOOK_PKG/src/liquibook_export.h ]] -then - -cd $DEPS_BUILD_DIR -[[ ! -d liquibook-$LIQUIBOOK_PKG ]] && tar xvf liquibook-$LIQUIBOOK_PKG.tar.gz - -fi - - -/bin/cat < distributed_ats_env.sh - -. $INSTALL_DIR/$OPENDDS_PKG/setenv.sh - -export QUICKFIX_HOME=$INSTALL_DIR -export LIQUIDBOOK_HOME=$INSTALL_DIR/liquibook-$LIQUIBOOK_PKG -export SQLITE_HOME=$INSTALL_DIR -export DATS_HOME=$CURRENT_DIR -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DATS_HOME/lib:$QUICKFIX_HOME/lib +# Download helper +download_if_missing() { + local url=$1 + local dest=$2 + if [[ ! -f "$dest" ]]; then + echo "Downloading $(basename "$dest")..." + curl -L "$url" -o "$dest" || { + echo " Failed to download $(basename "$dest")." + exit 1 + } + fi +} + +# Download dependencies +download_if_missing "https://github.com/foonathan/memory/archive/refs/tags/v$FOONATHAN_MEMORY_PKG.tar.gz" "$DEPS_BUILD_DIR/memory-v$FOONATHAN_MEMORY_PKG.tar.gz" +download_if_missing "https://github.com/eProsima/Fast-CDR/archive/refs/tags/v$FAST_CDR_PKG.tar.gz" "$DEPS_BUILD_DIR/Fast-CDR-v$FAST_CDR_PKG.tar.gz" +download_if_missing "https://github.com/eProsima/Fast-DDS/archive/refs/tags/v$FAST_DDS_PKG.tar.gz" "$DEPS_BUILD_DIR/Fast-DDS-v$FAST_DDS_PKG.tar.gz" +#download_if_missing "https://github.com/chriskohlhoff/asio/archive/refs/tags/asio-$ASIO_PKG.tar.gz" "$DEPS_BUILD_DIR/asio-$ASIO_PKG.tar.gz" +download_if_missing "https://github.com/apache/logging-log4cxx/archive/refs/tags/rel/v$LOG4CXX_PKG.tar.gz" "$DEPS_BUILD_DIR/log4cxx-$LOG4CXX_PKG.tar.gz" +download_if_missing "https://github.com/quickfix/quickfix/archive/refs/tags/v$QUICKFIX_PKG.tar.gz" "$DEPS_BUILD_DIR/quickfix-v$QUICKFIX_PKG.tar.gz" +download_if_missing "https://github.com/enewhuis/liquibook/archive/refs/tags/$LIQUIBOOK_PKG.tar.gz" "$DEPS_BUILD_DIR/liquibook-$LIQUIBOOK_PKG.tar.gz" + +export INSTALL_PREFIX="$INSTALL_DIR" + +build_and_install() { + + local tarball="$1" + local dir="$2" + local configure_cmd="${3:-./configure --prefix=$INSTALL_PREFIX --exec-prefix=$INSTALL_PREFIX}" + local build_cmd="${4:-make install -j $(nproc)}" + + cd "$DEPS_BUILD_DIR" + [[ ! -d "$dir" ]] && tar xvf "$tarball" + cd "$dir" + + if [[ -f CMakeLists.txt ]]; then + mkdir -p build && cd build + cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_PREFIX" -DBUILD_SHARED_LIBS=ON "$configure_cmd" + cmake --build . --target install + else + eval "$configure_cmd" + eval "$build_cmd" + fi + +} + +[[ ! -f $INSTALL_DIR/include/log4cxx/log4cxx.h ]] && build_and_install "$DEPS_BUILD_DIR/log4cxx-$LOG4CXX_PKG.tar.gz" "$DEPS_BUILD_DIR/logging-log4cxx-rel-v$LOG4CXX_PKG" "-DBUILD_TESTING=false" +[[ ! -f $INSTALL_DIR/include/foonathan_memory/foonathan/memory/config.hpp ]] && build_and_install "$DEPS_BUILD_DIR/memory-v$FOONATHAN_MEMORY_PKG.tar.gz" "memory-$FOONATHAN_MEMORY_PKG" "" +[[ ! -f $INSTALL_DIR/include/fastcdr/config.h ]] && build_and_install "$DEPS_BUILD_DIR/Fast-CDR-v$FAST_CDR_PKG.tar.gz" "Fast-CDR-$FAST_CDR_PKG" "" +#[[ ! -f $INSTALL_DIR/include/asio.hpp ]] && build_and_install "$DEPS_BUILD_DIR/asio-$ASIO_PKG.tar.gz" "asio-asio-$ASIO_PKG" "cd asio && ./autogen.sh && ./configure --prefix=$INSTALL_PREFIX --exec-prefix=$INSTALL_PREFIX}" +[[ ! -f $INSTALL_DIR/include/fastdds/config.hpp ]] && build_and_install "$DEPS_BUILD_DIR/Fast-DDS-v$FAST_DDS_PKG.tar.gz" "Fast-DDS-$FAST_DDS_PKG" "" +[[ ! -f $INSTALL_DIR/include/quickfix/config-all.h ]] && build_and_install "$DEPS_BUILD_DIR/quickfix-v$QUICKFIX_PKG.tar.gz" "quickfix-$QUICKFIX_PKG" "-DCMAKE_CXX_STANDARD=11 -DCMAKE_CXX_EXTENSIONS=OFF" +[[ ! -f $INSTALL_DIR/liquibook-$LIQUIBOOK_PKG/src/liquibook_export.h ]] && build_and_install "$DEPS_BUILD_DIR/liquibook-$LIQUIBOOK_PKG.tar.gz" "liquibook-$LIQUIBOOK_PKG" ":" ":" + + +# Generate environment script +cat < "$HOME/DistributedATS/dats_env.sh" +export DATS_HOME=\$HOME/DistributedATS +export DEPS_HOME=$INSTALL_DIR +export $LD_LIBRARY_PATH=\$DEPS_HOME/lib:\$DATS_HOME/lib:\$LD_LIBRARY_PATH +export LOG4CXX_CONFIGURATION=$DATS_HOME/config/log4cxx.xml + +#echo Specific Specific + +#echo Crypto ATS +export BASEDIR_ATS=\$DATS_HOME/MiscATS/CryptoCLOB +export DATS_LOG_HOME=\$BASEDIR_ATS/logs +mkdir -p \$BASEDIR_ATS/logs + +#echo US Treasuries +#export BASEDIR_ATS=\$DATS_HOME/MiscATS/USTreasuryCLOB +#export DATS_LOG_HOME=\$BASEDIR_ATS/logs +#mkdir -p \$BASEDIR_ATS/logs + +#echo US Treasuries +#export BASEDIR_ATS=\$DATS_HOME/MiscATS/MultiMatchingEngineATS +#export DATS_LOG_HOME=\$BASEDIR_ATS/logs +#mkdir -p \$BASEDIR_ATS/logs EOM -. ./distributed_ats_env.sh -$ACE_ROOT/bin/mwc.pl -type gnuace -make realclean -make - -cd DataService/sql/sqlite -./create_database.sh - -cd $CURRENT_DIR - -cd MiscATS/MultiMatchingEngineATS/sql/ -./populate_db.sh - -cd $CURRENT_DIR - -#cd MiscATS/MultiMatchingEngineATS/scripts -#./start_ats.sh - -#cd $CURRENT_DIR +cd $DATS_SOURCE_DIR -#cd MiscATS/MultiMatchingEngineATS/scripts -#./stop_ats.sh +# Build DistributedATS +mkdir -p build +cd build -#cd $CURRENT_DIR +cmake $CMAKE_FLAGS .. \ + -Dfastcdr_DIR=$INSTALL_DIR/lib/cmake/fastcdr/ \ + -Dfastdds_DIR=$INSTALL_DIR/share/fastdds/cmake/ \ + -Dfoonathan_memory_DIR=$INSTALL_DIR/lib/foonathan_memory/cmake/ \ + -Dlog4cxx_DIR=$INSTALL_DIR/lib/cmake/log4cxx \ + -DCMAKE_INSTALL_PREFIX="$HOME/DistributedATS" \ + -DLIQUIBOOK_HOME="$INSTALL_DIR/liquibook-$LIQUIBOOK_PKG/src" \ + -DQUICKFIX_INSTALL_PREFIX="$INSTALL_DIR" +cmake --build . --target install --config Debug