Improved CLI connection error note. 19/46919/7
authorPawel Kubik <p.kubik@samsung.com>
Fri, 21 Aug 2015 15:19:46 +0000 (17:19 +0200)
committerDariusz Michaluk <d.michaluk@samsung.com>
Thu, 27 Aug 2015 14:31:31 +0000 (07:31 -0700)
[Feature]       CLI connection error note, and suggestion to launch
                vasum-server
[Cause]         Previous information was inacurate
[Solution]      Added proper error handling
[Verification]  Build, install, run cli/vsm when the server is not
                running

Change-Id: I59a4467a25ef40e6ed650485c8ac690f955e29cc

cli/cli-exception.hpp [new file with mode: 0644]
cli/command-line-interface.cpp
cli/main.cpp

diff --git a/cli/cli-exception.hpp b/cli/cli-exception.hpp
new file mode 100644 (file)
index 0000000..982f52d
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ *  Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Contact: Pawel Kubik <p.kubik@samsung.com>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License
+ */
+
+/**
+ * @file
+ * @author  Pawel Kubik (p.kubik@samsung.com)
+ * @brief   Exceptions for the cli
+ */
+
+
+#ifndef CLI_EXCEPTION_HPP
+#define CLI_EXCEPTION_HPP
+
+#include "base-exception.hpp"
+
+
+namespace vasum {
+namespace cli {
+
+
+/**
+ * Base class for exceptions in Vasum CLI
+ */
+struct CliException: public VasumException {
+
+    CliException(const std::string& error) : VasumException(error) {}
+};
+
+struct IOException: public CliException {
+
+    IOException(const std::string& error) : CliException(error) {}
+};
+
+} // namespace cli
+} // namespace vasum
+
+#endif // CLI_EXCEPTION_HPP
index 93201c3..27d7cac 100644 (file)
@@ -26,6 +26,7 @@
 #include "command-line-interface.hpp"
 #include "vasum-client.h"
 #include "utils/c-array.hpp"
+#include "cli-exception.hpp"
 
 #include <map>
 #include <stdexcept>
@@ -204,7 +205,7 @@ void CommandLineInterface::connect()
         string msg = vsm_get_status_message(CommandLineInterface::client);
         vsm_client_free(CommandLineInterface::client);
         CommandLineInterface::client = nullptr;
-        throw runtime_error(msg);
+        throw IOException(msg);
     }
 }
 
index 528c4c8..537ad69 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 #include "command-line-interface.hpp"
+#include "cli-exception.hpp"
 
 #include <cstdlib>
 #include <map>
@@ -284,6 +285,10 @@ int connect()
 {
     try {
         CommandLineInterface::connect();
+    } catch (const IOException& ex) {
+        std::cerr << ex.what() << std::endl;
+        std::cout << "Client connection error. Is vasum-server running?" << std::endl;
+        return EXIT_FAILURE;
     } catch (const std::runtime_error& ex) {
         std::cerr << ex.what() << std::endl;
         return EXIT_FAILURE;