#pragma once /******************************************************************************/ #include #include #include "types.h" #include "amqp/schema/Schema.h" #include "amqp/schema/Envelope.h" #include "amqp/schema/Composite.h" #include "amqp/consumer/PropertyReader.h" #include "amqp/consumer/CompositeReader.h" /******************************************************************************/ class CompositeFactory { private : using SchemaPtr = uPtr; using CompositePtr = uPtr; using EnvelopePtr = uPtr; /** * */ spStrMap_t m_readersByType; spStrMap_t m_readersByDescriptor; public : CompositeFactory() = default; void process (const SchemaPtr &); const std::shared_ptr byType (const std::string &); const std::shared_ptr byDescriptor (const std::string &); private : std::shared_ptr process(const amqp::internal::schema::AMQPTypeNotation &); std::shared_ptr processComposite (const amqp::internal::schema::AMQPTypeNotation &); std::shared_ptr processRestricted (const amqp::internal::schema::AMQPTypeNotation &); /* std::shared_ptr process ( amqp::internal::schema::OrderedTypeNotations::const_iterator, std::set &); std::shared_ptr processComposite ( amqp::internal::schema::Schema::SchemaSet::const_iterator, std::set &); std::shared_ptr processRestricted ( amqp::internal::schema::Schema::SchemaSet::const_iterator, std::set &); */ }; /******************************************************************************/