14#include <pv/serialize.h>
15#include <pv/byteBuffer.h>
20namespace epics {
namespace pvData {
30 POINTER_DEFINITIONS(
Status);
45 static const char* StatusTypeName[];
49 static inline Status warn(
const std::string& m) {
return Status(STATUSTYPE_WARNING, m); }
50 static inline Status error(
const std::string& m) {
return Status(STATUSTYPE_ERROR, m); }
51 static inline Status fatal(
const std::string& m) {
return Status(STATUSTYPE_FATAL, m); }
56 Status() :m_statusType(STATUSTYPE_OK) {}
80 inline const std::string&
getMessage()
const {
return m_message; }
86 inline const std::string&
getStackDump()
const {
return m_stackDump; }
96 return (m_statusType == STATUSTYPE_OK);
104 return (m_statusType == STATUSTYPE_OK || m_statusType == STATUSTYPE_WARNING);
107#if __cplusplus>=201103L
108 FORCE_INLINE
explicit operator bool()
const {
113 typedef bool (Status::*truth_type)()
const;
115 FORCE_INLINE
operator truth_type()
const {
116 return isSuccess() ? &Status::isSuccess : 0;
140 void dump(std::ostream& o)
const;
145 std::string m_message;
146 std::string m_stackDump;
150 FORCE_INLINE std::ostream&
operator<<(std::ostream& o,
const Status& status) {
156 o << Status::StatusTypeName[statusType];
basic_ostream< _CharT, _Traits > & operator<<(basic_ostream< _CharT, _Traits > &__os, const basic_string< _CharT, _Traits, _Alloc > &__str)
This class implements a Bytebuffer that is like the java.nio.ByteBuffer.
Callback class for deserialization.
Callback class for serialization.
Base class for serialization.
const std::string & getMessage() const
Status & operator|=(const Status &o)
short hand for "this->maximize(o)"
StatusType getType() const
void serialize(ByteBuffer *buffer, SerializableControl *flusher) const
void deserialize(ByteBuffer *buffer, DeserializableControl *flusher)
Status(StatusType type, std::string const &message)
Status(StatusType type, std::string const &message, std::string const &stackDump)
void maximize(const Status &o)
const std::string & getStackDump() const