From c571f6b4fb4084073806b07b182350de679670e6 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sun, 11 Dec 2016 20:33:13 -0500 Subject: [PATCH] Msg: Migrated to use libshared --- src/CMakeLists.txt | 2 +- src/Msg.cpp | 107 -------------------------------------------- src/Msg.h | 53 ---------------------- test/.gitignore | 1 - test/CMakeLists.txt | 2 +- test/msg.t.cpp | 73 ------------------------------ 6 files changed, 2 insertions(+), 236 deletions(-) delete mode 100644 src/Msg.cpp delete mode 100644 src/Msg.h delete mode 100644 test/msg.t.cpp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 564c68f73..d6ae2e22a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,7 +17,6 @@ add_library (task CLI2.cpp CLI2.h Hooks.cpp Hooks.h ISO8601.cpp ISO8601.h Lexer.cpp Lexer.h - Msg.cpp Msg.h Nibbler.cpp Nibbler.h TDB2.cpp TDB2.h Task.cpp Task.h @@ -38,6 +37,7 @@ add_library (libshared libshared/src/Datetime.cpp libshared/src/Datetime.h libshared/src/Duration.cpp libshared/src/Duration.h libshared/src/FS.cpp libshared/src/FS.h libshared/src/JSON.cpp libshared/src/JSON.h + libshared/src/Msg.cpp libshared/src/Msg.h libshared/src/Pig.cpp libshared/src/Pig.h libshared/src/RX.cpp libshared/src/RX.h libshared/src/Table.cpp libshared/src/Table.h diff --git a/src/Msg.cpp b/src/Msg.cpp deleted file mode 100644 index 86efa0930..000000000 --- a/src/Msg.cpp +++ /dev/null @@ -1,107 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// -// http://www.opensource.org/licenses/mit-license.php -// -//////////////////////////////////////////////////////////////////////////////// - -#include -#include -#include -#include - -//////////////////////////////////////////////////////////////////////////////// -void Msg::set (const std::string& name, const std::string& value) -{ - _header[name] = value; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Msg::get (const std::string& name) const -{ - auto i = _header.find (name); - if (i != _header.end ()) - return i->second; - - return ""; -} - -//////////////////////////////////////////////////////////////////////////////// -void Msg::setPayload (const std::string& payload) -{ - _payload = payload; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Msg::getPayload () const -{ - return _payload; -} - -//////////////////////////////////////////////////////////////////////////////// -std::vector Msg::all () const -{ - std::vector names; - for (auto& i : _header) - names.push_back (i.first); - - return names; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Msg::serialize () const -{ - std::string output; - for (auto& i : _header) - output += i.first + ": " + i.second + '\n'; - - output += '\n' + _payload + '\n'; - return output; -} - -//////////////////////////////////////////////////////////////////////////////// -bool Msg::parse (const std::string& input) -{ - _header.clear (); - _payload = ""; - - auto separator = input.find ("\n\n"); - if (separator == std::string::npos) - throw std::string ("ERROR: Malformed message"); - - // Parse header. - for (auto& i : split (input.substr (0, separator), '\n')) - { - auto delimiter = i.find (':'); - if (delimiter == std::string::npos) - throw std::string ("ERROR: Malformed message header '") + i + '\''; - - _header[Lexer::trim (i.substr (0, delimiter))] = Lexer::trim (i.substr (delimiter + 1)); - } - - // Parse payload. - _payload = input.substr (separator + 2); - - return true; -} - -//////////////////////////////////////////////////////////////////////////////// diff --git a/src/Msg.h b/src/Msg.h deleted file mode 100644 index 72736b6d2..000000000 --- a/src/Msg.h +++ /dev/null @@ -1,53 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// -// http://www.opensource.org/licenses/mit-license.php -// -//////////////////////////////////////////////////////////////////////////////// - -#ifndef INCLUDED_MSG -#define INCLUDED_MSG - -#include -#include -#include - -class Msg -{ -public: - void set (const std::string&, const std::string&); - std::string get (const std::string&) const; - - void setPayload (const std::string&); - std::string getPayload () const; - - std::vector all () const; - std::string serialize () const; - bool parse (const std::string&); - -private: - std::map _header {}; - std::string _payload {""}; -}; - -#endif - diff --git a/test/.gitignore b/test/.gitignore index c0a96c1c5..0d38f628a 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -11,7 +11,6 @@ eval.t iso8601d.t iso8601p.t lexer.t -msg.t nibbler.t t.t taskmod.t diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3dc02f2ba..20a3c0512 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -14,7 +14,7 @@ include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/test ${TASK_INCLUDE_DIRS}) -set (test_SRCS col.t color.t config.t msg.t nibbler.t t.t tdb2.t util.t view.t lexer.t iso8601d.t iso8601p.t eval.t dates.t variant_add.t variant_and.t variant_cast.t variant_divide.t variant_equal.t variant_exp.t variant_gt.t variant_gte.t variant_inequal.t variant_lt.t variant_lte.t variant_match.t variant_math.t variant_modulo.t variant_multiply.t variant_nomatch.t variant_not.t variant_or.t variant_partial.t variant_subtract.t variant_xor.t) +set (test_SRCS col.t color.t config.t nibbler.t t.t tdb2.t util.t view.t lexer.t iso8601d.t iso8601p.t eval.t dates.t variant_add.t variant_and.t variant_cast.t variant_divide.t variant_equal.t variant_exp.t variant_gt.t variant_gte.t variant_inequal.t variant_lt.t variant_lte.t variant_match.t variant_math.t variant_modulo.t variant_multiply.t variant_nomatch.t variant_not.t variant_or.t variant_partial.t variant_subtract.t variant_xor.t) add_custom_target (test ./run_all --verbose DEPENDS ${test_SRCS} task_executable diff --git a/test/msg.t.cpp b/test/msg.t.cpp deleted file mode 100644 index dd5f469dd..000000000 --- a/test/msg.t.cpp +++ /dev/null @@ -1,73 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// -// http://www.opensource.org/licenses/mit-license.php -// -//////////////////////////////////////////////////////////////////////////////// - -#include -#include -#include -#include - -Context context; - -//////////////////////////////////////////////////////////////////////////////// -int main (int, char**) -{ - UnitTest t (13); - - Msg m; - t.is (m.serialize (), "\n\n", "Msg::serialize '' --> '\\n\\n'"); - - m.set ("name", "value"); - t.is (m.serialize (), "name: value\n\n\n", - "Msg::serialize 1 var"); - - m.set ("foo", "bar"); - t.is (m.serialize (), "foo: bar\nname: value\n\n\n", - "Msg::serialize 2 vars"); - - m.setPayload ("payload"); - t.is (m.serialize (), "foo: bar\nname: value\n\npayload\n", - "Msg::serialize 2 vars + payload"); - - Msg m2; - t.ok (m2.parse ("foo: bar\nname: value\n\npayload\n"), - "Msg::parse ok"); - t.is (m2.get ("foo"), "bar", "Msg::get"); - t.is (m2.get ("name"), "value", "Msg::get"); - t.is (m2.getPayload (), "payload\n", "Msg::getPayload"); - - Msg m3; - t.ok (m3.parse ("foo:bar\nname: value\n\npayload\n"), - "Msg::parse ok"); - t.is (m3.get ("foo"), "bar", "Msg::get"); - t.is (m3.get ("name"), "value", "Msg::get"); - t.is (m3.getPayload (), "payload\n", "Msg::getPayload"); - t.ok (m3.all () == std::vector {"foo", "name"}, - "Msg::all --> {'foo', 'name'}"); - - return 0; -} - -////////////////////////////////////////////////////////////////////////////////