Skip to content

Commit

Permalink
Brought GobyMOOSApp::publish_pb in line with moos translators publica…
Browse files Browse the repository at this point in the history
…tion
  • Loading branch information
tsaubergine committed Jul 11, 2016
1 parent 2e648d9 commit 0e14fa1
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 15 deletions.
7 changes: 5 additions & 2 deletions src/moos/goby_moos_app.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

#include "goby/moos/moos_header.h"
#include "goby/util/as.h"
#include "goby/moos/moos_translator.h"

#include <boost/date_time/posix_time/posix_time.hpp>
#include <map>
Expand Down Expand Up @@ -109,9 +110,11 @@ template <class MOOSAppType = MOOSAppShell>
template<typename ProtobufMessage>
void publish_pb(const std::string& key, const ProtobufMessage& msg)
{

std::string serialized;
serialize_for_moos(&serialized, msg);
publish(key, serialized);
bool is_binary = serialize_for_moos(&serialized, msg);
CMOOSMsg moos_msg = goby::moos::MOOSTranslator::make_moos_msg(key, serialized, is_binary, goby::moos::moos_technique, msg.GetDescriptor()->full_name());
publish(moos_msg);
}


Expand Down
18 changes: 8 additions & 10 deletions src/moos/moos_protobuf_helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -1317,33 +1317,31 @@ namespace goby
}


inline void serialize_for_moos(std::string* out, const google::protobuf::Message& msg)
inline bool serialize_for_moos(std::string* out, const google::protobuf::Message& msg)
{
switch(goby::moos::moos_technique)
{
case goby::moos::protobuf::TranslatorEntry::TECHNIQUE_PROTOBUF_NATIVE_ENCODED:
goby::moos::MOOSTranslation<goby::moos::protobuf::TranslatorEntry::TECHNIQUE_PROTOBUF_NATIVE_ENCODED>::serialize(out, msg);
break;
return true;
case goby::moos::protobuf::TranslatorEntry::TECHNIQUE_PROTOBUF_NATIVE_HEX:
goby::moos::MOOSTranslation<goby::moos::protobuf::TranslatorEntry::TECHNIQUE_PROTOBUF_NATIVE_HEX>::serialize(out, msg);
break;
return false;
case goby::moos::protobuf::TranslatorEntry::TECHNIQUE_PROTOBUF_TEXT_FORMAT:
goby::moos::MOOSTranslation<goby::moos::protobuf::TranslatorEntry::TECHNIQUE_PROTOBUF_TEXT_FORMAT>::serialize(out, msg);
break;

return false;
case goby::moos::protobuf::TranslatorEntry::TECHNIQUE_PREFIXED_PROTOBUF_NATIVE_ENCODED:
goby::moos::MOOSTranslation<goby::moos::protobuf::TranslatorEntry::TECHNIQUE_PREFIXED_PROTOBUF_NATIVE_ENCODED>::serialize(out, msg);
break;
return true;
case goby::moos::protobuf::TranslatorEntry::TECHNIQUE_PREFIXED_PROTOBUF_NATIVE_HEX:
goby::moos::MOOSTranslation<goby::moos::protobuf::TranslatorEntry::TECHNIQUE_PREFIXED_PROTOBUF_NATIVE_HEX>::serialize(out, msg);
break;
return false;
case goby::moos::protobuf::TranslatorEntry::TECHNIQUE_PREFIXED_PROTOBUF_TEXT_FORMAT:
goby::moos::MOOSTranslation<goby::moos::protobuf::TranslatorEntry::TECHNIQUE_PREFIXED_PROTOBUF_TEXT_FORMAT>::serialize(out, msg);
break;
return false;
default:
goby::glog.is(goby::common::logger::DIE) && goby::glog << "Non-PROTOBUF techniques are not supported for 'moos_parser_technique': " << goby::moos::protobuf::TranslatorEntry::ParserSerializerTechnique_Name(goby::moos::moos_technique) << std::endl;
break;

return false;
}
}

Expand Down
10 changes: 7 additions & 3 deletions src/moos/moos_translator.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
// You should have received a copy of the GNU Lesser General Public License
// along with Goby. If not, see <http://www.gnu.org/licenses/>.

#ifndef MOOS_TRANSLATOR_H
#define MOOS_TRANSLATOR_H

#include <set>
#include <map>
#include <string>
Expand Down Expand Up @@ -133,8 +136,7 @@ namespace goby

const std::map<std::string, goby::moos::protobuf::TranslatorEntry>& dictionary() const { return dictionary_; }

private:
CMOOSMsg make_moos_msg(const std::string& var, const std::string& str, bool is_binary, goby::moos::protobuf::TranslatorEntry::ParserSerializerTechnique technique, const std::string& pb_name)
static CMOOSMsg make_moos_msg(const std::string& var, const std::string& str, bool is_binary, goby::moos::protobuf::TranslatorEntry::ParserSerializerTechnique technique, const std::string& pb_name)
{
if(is_binary)
{
Expand All @@ -157,7 +159,8 @@ namespace goby
}
}
}

private:


void initialize(double lat_origin = std::numeric_limits<double>::quiet_NaN(),
double lon_origin = std::numeric_limits<double>::quiet_NaN(),
Expand Down Expand Up @@ -456,3 +459,4 @@ GoogleProtobufMessagePointer goby::moos::MOOSTranslator::moos_to_protobuf(const
}


#endif

0 comments on commit 0e14fa1

Please sign in to comment.