00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "weiTransport.h"
00022 #include "weHelper.h"
00023
00024 iweTransport* WeCreateNamedTransport( string name )
00025 {
00026 return weTransportFactory.CreateTransport(name);
00027 }
00028
00030
00032 iweTransport::iweTransport()
00033 {
00034 parent = NULL;
00035 relocCount = 0;
00036 siteDepth = 0;
00037 responces.clear();
00038 }
00039
00040 WeOption& iweTransport::Option(const string& name )
00041 {
00042 WeOptions::iterator it;
00043
00044 it = options.find(name);
00045 if (it != options.end()) {
00046 return *(it->second);
00047 }
00048
00049 if (parent != NULL) {
00050 return parent->Option(name);
00051 }
00052
00053 return *(new WeOption);
00054 }
00055
00056 bool iweTransport::IsSet(const string& name )
00057 {
00058 bool retval = false;
00059 WeOptions::iterator it;
00060 WeOption* opt;
00061
00062 try
00063 {
00064 it = options.find(name);
00065 if (it != options.end())
00066 {
00067 opt = it->second;
00068 opt->GetValue(retval);
00069 }
00070 else if (parent != NULL) {
00071 retval = parent->IsSet(name);
00072 }
00073 }
00074 catch (...)
00075 {
00076 if (parent != NULL) {
00077 retval = parent->IsSet(name);
00078 }
00079 }
00080
00081 return retval;
00082 }
00083
00084 void iweTransport::Option(const string& name, WeOptionVal val )
00085 {
00086 WeOptions::iterator it;
00087 WeOption* opt;
00088
00089 it = options.find(name);
00090 if (it != options.end())
00091 {
00092 opt = it->second;
00093 opt->SetValue(val);
00094 }
00095 else {
00096 opt = new WeOption();
00097 opt->Name(name);
00098 opt->SetValue(val);
00099 options[name] = opt;
00100 }
00101 }
00102
00104
00106 iweOperation::~iweOperation()
00107 {
00108 vector<iweOperationPtr*>::iterator it;
00109
00110 for (it = children.begin(); it != children.end(); it++) {
00111 delete (*it);
00112 }
00113 children.clear();
00114 }
00115
00116 void iweOperation::AddChild( iweOperationPtr* chld )
00117 {
00118 vector<iweOperationPtr*>::iterator it;
00119
00120 it = find(children.begin(), children.end(), chld);
00121 if (it == children.end()) {
00122 children.push_back(chld);
00123 }
00124 (*chld)->previous = this;
00125 }
00126
00127 void iweOperation::RemoveChild( iweOperationPtr* chld )
00128 {
00129 vector<iweOperationPtr*>::iterator it;
00130
00131 it = find(children.begin(), children.end(), chld);
00132 if (it != children.end()) {
00133 delete (*it);
00134 }
00135 }