nrtb-core team mailing list archive
-
nrtb-core team
-
Mailing list archive
-
Message #00531
[Branch ~fpstovall/nrtb/fps-sprint-003] Rev 30: Completed the sim-engine's general purpuse message. Unit tested and ready to go.
------------------------------------------------------------
revno: 30
committer: Rick Stovall <fpstovall>
branch nick: ricks-sprint-003
timestamp: Fri 2013-11-15 11:54:12 -0500
message:
Completed the sim-engine's general purpuse message. Unit tested and ready to go.
added:
cpp/sim_engine/messages/
cpp/sim_engine/messages/Makefile
cpp/sim_engine/messages/messages.cpp
cpp/sim_engine/messages/messages.h
cpp/sim_engine/messages/messages_test.cpp
--
lp:~fpstovall/nrtb/fps-sprint-003
https://code.launchpad.net/~fpstovall/nrtb/fps-sprint-003
Your team NRTB Core is subscribed to branch lp:~fpstovall/nrtb/fps-sprint-003.
To unsubscribe from this branch go to https://code.launchpad.net/~fpstovall/nrtb/fps-sprint-003/+edit-subscription
=== added directory 'cpp/sim_engine/messages'
=== added file 'cpp/sim_engine/messages/Makefile'
--- cpp/sim_engine/messages/Makefile 1970-01-01 00:00:00 +0000
+++ cpp/sim_engine/messages/Makefile 2013-11-15 16:54:12 +0000
@@ -0,0 +1,47 @@
+#***********************************************
+# This file is part of the NRTB project (https://launchpad.net/nrtb).
+#
+# NRTB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# NRTB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with NRTB. If not, see <http://www.gnu.org/licenses/>.
+#
+#***********************************************
+
+target=messages
+
+lib: ${target}_test
+ @./${target}_test
+ @cp -v ${target}.h ../include/
+ @cp -v ${target}.o ../obj/
+ @echo build complete
+
+${target}_test: ${target}.o ${target}_test.cpp
+ @rm -f ${target}_test
+ g++ -c -O3 ${target}_test.cpp -I ../include ${bargs}
+ g++ -o ${target}_test ${target}_test.o ${target}.o ${largs}
+
+
+${target}.o: ${target}.cpp ${target}.h Makefile
+ @rm -f ${target}.o
+ g++ -c -O3 ${target}.cpp -I ../include ${bargs}
+
+clean:
+ @rm -vf *.o ../include/${target}.h ../obj/${target}.o ${target}_test
+ @echo all objects and executables have been erased.
+
+switches=-std=gnu++11 -D _GLIBCXX_USE_SCHED_YIELD -D _GLIBCXX_USE_NANOSLEEP
+libs=../../common/lib/nrtb_common.a -lpthread
+include=-I../../common/include -I../include
+bargs=${switches} ${include}
+largs=${switches} ${libs}
+
+
=== added file 'cpp/sim_engine/messages/messages.cpp'
--- cpp/sim_engine/messages/messages.cpp 1970-01-01 00:00:00 +0000
+++ cpp/sim_engine/messages/messages.cpp 2013-11-15 16:54:12 +0000
@@ -0,0 +1,62 @@
+/***********************************************
+ This file is part of the NRTB project (https://*launchpad.net/nrtb).
+
+ NRTB is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ NRTB is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with NRTB. If not, see <http://www.gnu.org/licenses/>.
+
+ **********************************************/
+
+// see base_socket.h for documentation
+
+#include "messages.h"
+#include <sstream>
+
+using namespace nrtb;
+
+gp_sim_message::gp_sim_message(ipc_queue& q, int t, int n, int v)
+ : abs_ipc_record(q), _noun (n), _verb (v), _type (t)
+{
+ _data.reset();
+};
+
+gp_sim_message::gp_sim_message(ipc_queue & q, int t,
+ int n, int v, void_p d)
+: abs_ipc_record(q), _noun (n), _verb (v), _type (t), _data (d)
+{
+ // no actions to take.
+};
+
+int gp_sim_message::msg_type()
+{
+ return _type;
+};
+
+std::string gp_sim_message::as_str()
+{
+ std::stringstream t;
+ t << _type << ":"
+ << _noun << ":"
+ << _verb << ":"
+ << _data.get();
+ return t.str();
+};
+
+int gp_sim_message::noun()
+{
+ return _noun;
+};
+
+int gp_sim_message::verb()
+{
+ return _verb;
+};
=== added file 'cpp/sim_engine/messages/messages.h'
--- cpp/sim_engine/messages/messages.h 1970-01-01 00:00:00 +0000
+++ cpp/sim_engine/messages/messages.h 2013-11-15 16:54:12 +0000
@@ -0,0 +1,61 @@
+/***********************************************
+ This file is part of the NRTB project (https://*launchpad.net/nrtb).
+
+ NRTB is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ NRTB is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with NRTB. If not, see <http://www.gnu.org/licenses/>.
+
+ **********************************************/
+
+#ifndef sim_messages_header
+#define sim_messages_header
+
+#include <ipc_channel.h>
+#include <memory>
+
+
+namespace nrtb
+{
+
+typedef std::shared_ptr<void> void_p;
+
+class gp_sim_message : public abs_ipc_record
+{
+public:
+ gp_sim_message(ipc_queue & q, int t, int n, int v);
+ gp_sim_message(ipc_queue & q, int t, int n, int v, void_p d);
+ int msg_type();
+ std::string as_str();
+ int noun();
+ int verb();
+ template <class T>
+ T & data();
+private:
+ int _noun;
+ int _verb;
+ int _type;
+ void_p _data;
+};
+
+typedef gp_sim_message * gp_sim_message_p;
+
+
+template <class T>
+ T & gp_sim_message::data()
+{
+ return *(static_cast<T*>(_data.get()));
+};
+
+
+} // namepace nrtb
+
+#endif // sim_messages_header
=== added file 'cpp/sim_engine/messages/messages_test.cpp'
--- cpp/sim_engine/messages/messages_test.cpp 1970-01-01 00:00:00 +0000
+++ cpp/sim_engine/messages/messages_test.cpp 2013-11-15 16:54:12 +0000
@@ -0,0 +1,85 @@
+/***********************************************
+ This file is part of the NRTB project (https://*launchpad.net/nrtb).
+
+ NRTB is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ NRTB is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with NRTB. If not, see <http://www.gnu.org/licenses/>.
+
+ **********************************************/
+
+#include "messages.h"
+#include <iostream>
+#include <string>
+
+using namespace nrtb;
+using namespace std;
+
+typedef shared_ptr<string> string_p;
+
+int main()
+{
+ cout << "=========== sim messages test ============="
+ << endl;
+
+ ipc_queue queue;
+
+ void_p s(new string("this is a test"));
+
+ queue.push(ipc_record_p(new gp_sim_message(queue, 1, 1, 0)));
+ queue.push(ipc_record_p(new gp_sim_message(queue, 2, 1, 1, s)));
+
+ ipc_record_p raw(queue.pop());
+ gp_sim_message_p msg = static_cast<gp_sim_message_p>(raw.get());
+ cout << msg->as_str() << endl;
+ bool failed = (msg->as_str() != "1:1:0:0");
+
+ raw = queue.pop();
+ msg = static_cast<gp_sim_message_p>(raw.get());
+ cout << msg->as_str() << endl;
+ failed = failed
+ or (msg->msg_type() != 2)
+ or (msg->noun() != 1)
+ or (msg->verb() != 1)
+ or (msg->data<string>() != "this is a test");
+
+ cout << "=========== sim_messages test complete ============="
+ << endl;
+
+ return failed;
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+