initial load of upstream version 1.06.32
[xmlrpc-c] / src / cpp / outcome.cpp
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
9 rpcOutcome::rpcOutcome() : valid(false) {}
10
11 rpcOutcome::rpcOutcome(xmlrpc_c::value const result) :
12     valid(true), _succeeded(true), result(result) 
13     {}
14
15
16
17 rpcOutcome::rpcOutcome(xmlrpc_c::fault const fault) :
18     valid(true), _succeeded(false), fault(fault)
19     {}
20
21
22
23 bool
24 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
33 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
46 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