00001 /*----------------------------------------------------------------------------- 00002 Name: Destination.cpp 00003 Project: xmlBlaster.org 00004 Copyright: xmlBlaster.org, see xmlBlaster-LICENSE file 00005 Comment: Holding destination address attributes 00006 -----------------------------------------------------------------------------*/ 00007 00008 #include <util/Destination.h> 00009 #include <util/Global.h> 00010 00011 using namespace std; 00012 00013 namespace org { namespace xmlBlaster { namespace util { 00014 00015 Destination::Destination(Global& global, 00016 const SessionName& sessionName, 00017 const string &queryType, 00018 bool forceQueuing) 00019 : global_(global), 00020 log_(global.getLog("org.xmlBlaster.util")), 00021 sessionName_(0) 00022 { 00023 SessionName *p = new SessionName(global_, sessionName.getAbsoluteName()); 00024 SessionNameRef r(p); 00025 sessionName_ = r; 00026 00027 queryType_ = queryType; 00028 forceQueuing_ = forceQueuing; 00029 } 00030 00031 Destination::Destination(Global& global, 00032 const string& address, 00033 const string &queryType, 00034 bool forceQueuing) 00035 : global_(global), 00036 log_(global.getLog("org.xmlBlaster.util")), 00037 sessionName_(0) 00038 { 00039 SessionName *p = new SessionName(global_, address); 00040 SessionNameRef r(p); 00041 sessionName_ = r; 00042 00043 queryType_ = queryType; 00044 forceQueuing_ = forceQueuing; 00045 } 00046 00047 00048 Destination::Destination(const Destination& dest) 00049 : global_(dest.global_), log_(dest.log_), sessionName_(0) 00050 { 00051 copy(dest); 00052 } 00053 00054 Destination& Destination::operator =(const Destination& dest) 00055 { 00056 copy(dest); 00057 return *this; 00058 } 00059 00060 bool Destination::isXPathQuery() const 00061 { 00062 return queryType_ == "XPATH"; 00063 } 00064 00065 bool Destination::isExactAddress() const 00066 { 00067 return queryType_ == "EXACT"; 00068 } 00069 00070 bool Destination::forceQueuing() const 00071 { 00072 return forceQueuing_; 00073 } 00074 00075 void Destination::forceQueuing(bool forceQueuing) 00076 { 00077 forceQueuing_ = forceQueuing; 00078 } 00079 00080 /* 00081 void Destination::setDestination(const SessionName& sessionName) 00082 { 00083 sessionName_ = sessionName; 00084 } 00085 */ 00086 00087 SessionNameRef Destination::getDestination() const 00088 { 00089 return sessionName_; 00090 } 00091 00092 void Destination::setQueryType(const string &queryType) 00093 { 00094 if (queryType.compare("EXACT") == 0) queryType_ = queryType; 00095 else 00096 if (queryType.compare("XPATH") == 0) {} 00097 else 00098 log_.error(ME, string("Sorry, destination queryType='") 00099 + queryType_ + string("' is not supported")); 00100 } 00101 00102 string Destination::toXml(const string &extraOffset) const 00103 { 00104 string offset = Constants::OFFSET + extraOffset; 00105 string ret; 00106 ret += offset + "<destination queryType='" + queryType_ + "'"; 00107 ret += " forceQueuing='" + lexical_cast<string>(forceQueuing()) + "'"; 00108 ret += ">" + sessionName_->getAbsoluteName() + "</destination>"; 00109 return ret; 00110 } 00111 00112 }}} // namespace 00113