Goby v2
moos_serializer.h
1 // Copyright 2009-2018 Toby Schneider (http://gobysoft.org/index.wt/people/toby)
2 // GobySoft, LLC (2013-)
3 // Massachusetts Institute of Technology (2007-2014)
4 // Community contributors (see AUTHORS file)
5 //
6 //
7 // This file is part of the Goby Underwater Autonomy Project Libraries
8 // ("The Goby Libraries").
9 //
10 // The Goby Libraries are free software: you can redistribute them and/or modify
11 // them under the terms of the GNU Lesser General Public License as published by
12 // the Free Software Foundation, either version 2.1 of the License, or
13 // (at your option) any later version.
14 //
15 // The Goby Libraries are distributed in the hope that they will be useful,
16 // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 // GNU Lesser General Public License for more details.
19 //
20 // You should have received a copy of the GNU Lesser General Public License
21 // along with Goby. If not, see <http://www.gnu.org/licenses/>.
22 
23 #include <string>
24 
25 #include "goby/moos/moos_header.h"
26 
27 namespace goby
28 {
29 namespace moos
30 {
32 {
33  public:
34  static void serialize(const CMOOSMsg& const_msg, std::string* data)
35  {
36  // copy because Serialize wants to modify the CMOOSMsg
37  CMOOSMsg msg(const_msg);
38  // adapted from MOOSCommPkt.cpp
39  int serialized_size = msg.GetSizeInBytesWhenSerialised();
40  data->resize(serialized_size);
41  serialized_size =
42  msg.Serialize(reinterpret_cast<unsigned char*>(&(*data)[0]), serialized_size);
43  data->resize(serialized_size);
44  }
45 
46  static void parse(CMOOSMsg* msg, std::string data)
47  {
48  msg->Serialize(reinterpret_cast<unsigned char*>(&data[0]), data.size(), false);
49  }
50 };
51 } // namespace moos
52 } // namespace goby
The global namespace for the Goby project.