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()9rpcOutcome::rpcOutcome() : valid(false) {} 10 rpcOutcome(xmlrpc_c::value const result)11rpcOutcome::rpcOutcome(xmlrpc_c::value const result) : 12 valid(true), _succeeded(true), result(result) 13 {} 14 15 16 rpcOutcome(xmlrpc_c::fault const fault)17rpcOutcome::rpcOutcome(xmlrpc_c::fault const fault) : 18 valid(true), _succeeded(false), fault(fault) 19 {} 20 21 22 23 bool succeeded() const24rpcOutcome::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() const33rpcOutcome::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() const46rpcOutcome::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