11#include < csp/adapters/utils/MessageStructConverter.h>
22#include < csp/adapters/utils/JSONMessageStructConverter.h>
3- #include < csp/adapters/utils/ProtobufMessageStructConverter.h>
43#include < csp/adapters/utils/RawBytesMessageStructConverter.h>
54
65namespace csp ::adapters::utils
@@ -14,14 +13,13 @@ MessageStructConverter::MessageStructConverter( const CspTypePtr & type, const D
1413
1514MessageStructConverterCache::MessageStructConverterCache ()
1615{
17- registerConverter ( MsgProtocol::RAW_BYTES, &RawBytesMessageStructConverter::create );
18- registerConverter ( MsgProtocol::JSON, &JSONMessageStructConverter::create );
19- registerConverter ( MsgProtocol::PROTOBUF, &ProtobufMessageStructConverter::create );
16+ registerConverter ( " RAW_BYTES" , &RawBytesMessageStructConverter::create );
17+ registerConverter ( " JSON" , &JSONMessageStructConverter::create );
2018}
2119
22- bool MessageStructConverterCache::registerConverter ( MsgProtocol protocol, Creator creator )
20+ bool MessageStructConverterCache::registerConverter ( std::string protocol, Creator creator )
2321{
24- if ( m_creators[ protocol ] )
22+ if ( m_creators. find ( protocol ) != m_creators. end () )
2523 CSP_THROW ( RuntimeException, " Attempted to register creator for MessageStructConverter type " << protocol << " more than once" );
2624
2725 m_creators[ protocol ] = creator;
@@ -42,12 +40,12 @@ MessageStructConverterPtr MessageStructConverterCache::create( const CspTypePtr
4240 if ( !rv.second )
4341 return rv.first -> second;
4442
45- auto protocol = MsgProtocol ( properties.get <std::string>( " protocol" ) );
46- auto creator = m_creators[ protocol ] ;
47- if ( !creator )
43+ auto protocol = properties.get <std::string>( " protocol" );
44+ auto creatorIt = m_creators. find ( protocol ) ;
45+ if ( creatorIt == m_creators. end () )
4846 CSP_THROW ( ValueError, " MessageStructConverter for type " << protocol << " is not defined" );
4947
50- auto result = std::shared_ptr<MessageStructConverter>( creator ( type, properties ) );
48+ auto result = std::shared_ptr<MessageStructConverter>( creatorIt -> second ( type, properties ) );
5149 rv.first -> second = result;
5250 return rv.first -> second;
5351}
0 commit comments