1 #include "xmlrpc-c/girerr.hpp"
2 using girerr::error;
3 #include "xmlrpc-c/base.hpp"
4 
5 using namespace std;
6 
7 namespace xmlrpc_c {
8 
rpcOutcome()9 rpcOutcome::rpcOutcome() : valid(false) {}
10 
rpcOutcome(xmlrpc_c::value const result)11 rpcOutcome::rpcOutcome(xmlrpc_c::value const result) :
12     valid(true), _succeeded(true), result(result)
13     {}
14 
15 
16 
rpcOutcome(xmlrpc_c::fault const fault)17 rpcOutcome::rpcOutcome(xmlrpc_c::fault const fault) :
18     valid(true), _succeeded(false), fault(fault)
19     {}
20 
21 
22 
23 bool
succeeded() const24 rpcOutcome::succeeded() const {
25     if (!valid)
26         throw(error("Attempt to access rpcOutcome object before setting it"));
27     return _succeeded;
28 }
29 
30 
31 
32 fault
getFault() const33 rpcOutcome::getFault() const {
34 
35     if (!valid)
36         throw(error("Attempt to access rpcOutcome object before setting it"));
37     if (_succeeded)
38         throw(error("Attempt to get fault description from a non-failure "
39                     "RPC outcome"));
40     return fault;
41 }
42 
43 
44 
45 value
getResult() const46 rpcOutcome::getResult() const {
47 
48     if (!valid)
49         throw(error("Attempt to access rpcOutcome object before setting it"));
50     if (!_succeeded)
51         throw(error("Attempt to get result from an unsuccessful RPC outcome"));
52     return result;
53 }
54 
55 
56 } // namespace
57 
58