Imported Upstream version 17.23.5
[platform/upstream/libzypp.git] / zypp / PluginScriptException.h
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9 /** \file       zypp/PluginScriptException.h
10  *
11 */
12 #ifndef ZYPP_PLUGINSCRIPTEXCEPTION_H
13 #define ZYPP_PLUGINSCRIPTEXCEPTION_H
14
15 #include <iosfwd>
16
17 #include <zypp/base/Exception.h>
18 #include <zypp/Pathname.h>
19
20 ///////////////////////////////////////////////////////////////////
21 namespace zypp
22 { /////////////////////////////////////////////////////////////////
23
24   /** Base class for \ref PluginScript \ref Exception. */
25   class PluginScriptException : public Exception
26   {
27     public:
28       PluginScriptException();
29       PluginScriptException( const std::string & msg_r );
30       PluginScriptException( const std::string & msg_r, const std::string & hist_r );
31       virtual ~PluginScriptException() throw();
32   };
33
34   /** Convenience macro to declare more specific PluginScriptExceptions. */
35 #define declException( EXCP, BASE )                                                             \
36   class EXCP : public BASE {                                                                    \
37     public:                                                                                     \
38       EXCP() : BASE( #EXCP ) {}                                                                 \
39       EXCP( const std::string & msg_r ) : BASE( msg_r ) {}                                      \
40       EXCP( const std::string & msg_r, const std::string & hist_r ) : BASE( msg_r, hist_r ) {}  \
41       virtual ~EXCP() throw() {}                                                                \
42   }
43
44   /** Script connection not open. */
45   declException( PluginScriptNotConnected, PluginScriptException );
46
47   /** Script died unexpectedly. */
48   declException( PluginScriptDiedUnexpectedly, PluginScriptException );
49
50
51   /** Communication timeout. */
52   declException( PluginScriptTimeout, PluginScriptException );
53
54   /** Timeout while sending data. */
55   declException( PluginScriptSendTimeout, PluginScriptTimeout );
56
57   /** Timeout while receiving data. */
58   declException( PluginScriptReceiveTimeout, PluginScriptTimeout );
59
60 #undef declException
61
62   /////////////////////////////////////////////////////////////////
63 } // namespace zypp
64 ///////////////////////////////////////////////////////////////////
65 #endif // ZYPP_PLUGINSCRIPTEXCEPTION_H