00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _SERVICEH
00023 #define _SERVICEH
00024
00025 #include "wsdlparser/WsdlElement.h"
00026 #include "xmlpull/wsdlpull_export.h"
00027
00028 namespace WsdlPull {
00029 class Binding;
00030
00031 class WSDLPULL_EXPORT Service :public WsdlElement {
00032 public:
00033 typedef struct {
00034 std::string name_;
00035 const Binding* binding_;
00036 int serviceExtId_;
00037 }ServicePort;
00038 typedef std::list<ServicePort>::const_iterator cServicePortIterator;
00039
00040 public:
00041 Service(WsdlParser & w);
00042
00043
00044
00045
00046 void addPort(const std::string& name,const Binding* bn,int serviceExtId);
00047
00048 int getPortExtension(const std::string& name)const;
00049 const Binding* getPortBinding(const std::string& name)const;
00050 void getPortBindings(cServicePortIterator &from, cServicePortIterator &to)const;
00051 std::list<std::string> getPorts()const;
00052
00053 private:
00054
00055 std::list<ServicePort> ports_;
00056 };
00057
00058
00059 inline
00060 Service::Service(WsdlParser& w)
00061 :WsdlElement(w)
00062 {
00063 }
00064 inline
00065 void
00066 Service::addPort(const std::string& n,const Binding* bn,int serviceExtId)
00067 {
00068 ServicePort sp;
00069 sp.name_=n;
00070 sp.binding_ = bn;
00071 sp.serviceExtId_ = serviceExtId;
00072 ports_.push_back(sp);
00073 }
00074
00075 inline
00076 int
00077 Service::getPortExtension(const std::string & name)const
00078 {
00079 for(std::list<ServicePort>::const_iterator it = ports_.begin();
00080 it != ports_.end();
00081 it++){
00082 if(it->name_ == name)
00083 return it->serviceExtId_;
00084 }
00085 return 0;
00086 }
00087
00088 inline
00089 const Binding*
00090 Service::getPortBinding(const std::string & name)const
00091 {
00092 for(std::list<ServicePort>::const_iterator it = ports_.begin();
00093 it != ports_.end();
00094 it++){
00095 if(it->name_ == name)
00096 return it->binding_;
00097 }
00098 return 0;
00099 }
00100
00101 inline
00102 void
00103 Service::getPortBindings(cServicePortIterator &from,
00104 cServicePortIterator &to)const
00105 {
00106 if (ports_.size()> 0)
00107 {
00108 from = ports_.begin();
00109 to = ports_.end();
00110 }
00111 }
00112
00113 inline
00114 std::list<std::string>
00115 Service::getPorts()const
00116 {
00117 std::list<std::string> names;
00118 for(std::list<ServicePort>::const_iterator it = ports_.begin();
00119 it != ports_.end();
00120 it++){
00121 names.push_back(it->name_);
00122 }
00123 return names;
00124 }
00125 }
00126 #endif
00127