Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

baciTestUtils.h

Go to the documentation of this file.
00001 #ifndef baciTestUtils_h 00002 #define baciTestUtils_h 00003 00004 /******************************************************************************* 00005 * ALMA - Atacama Large Millimiter Array 00006 * (c) European Southern Observatory, 2004 00007 * 00008 *This library is free software; you can redistribute it and/or 00009 *modify it under the terms of the GNU Lesser General Public 00010 *License as published by the Free Software Foundation; either 00011 *version 2.1 of the License, or (at your option) any later version. 00012 * 00013 *This library is distributed in the hope that it will be useful, 00014 *but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 *Lesser General Public License for more details. 00017 * 00018 *You should have received a copy of the GNU Lesser General Public 00019 *License along with this library; if not, write to the Free Software 00020 *Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00021 * 00022 * "@(#) $Id: baciTestUtils.h,v 1.104 2008/10/01 02:26:45 cparedes Exp $" 00023 * 00024 * who when what 00025 * -------- -------- ---------------------------------------------- 00026 * bjeram 2003-06-06 added baciTestCBpattern 00027 * msekoran 2002-02-07 Added ComponentAShutdown class. 00028 * gchiozzi 2001-10-19 Created 00029 */ 00030 00031 /************************************************************************ 00032 * 00033 *---------------------------------------------------------------------- 00034 */ 00035 00041 #ifndef __cplusplus 00042 #error This is a C++ include file and cannot be used from plain C 00043 #endif 00044 00045 #include <tao/corba.h> 00046 #include <ace/Read_Buffer.h> 00047 00048 #include <string> 00049 #include <baci.h> 00050 00051 class baciTestCBvoid: public virtual POA_ACS::CBvoid 00052 { 00053 public: 00054 baciTestCBvoid(std::string _prop) : prop(_prop) {} 00055 00056 virtual void working (const ACSErr::Completion & c, 00057 const ACS::CBDescOut & desc 00058 ) 00059 { 00060 ACS_SHORT_LOG((LM_INFO, "(%s::CBvoid::working)", prop.c_str())); 00061 } 00062 00063 virtual void done (const ACSErr::Completion & c, 00064 const ACS::CBDescOut & desc 00065 ) 00066 { 00067 ACS_SHORT_LOG ((LM_INFO, "(%s::CBvoid::done)", prop.c_str())); 00068 } 00069 00070 virtual CORBA::Boolean negotiate (ACS::TimeInterval time_to_transmit, 00071 const ACS::CBDescOut & desc 00072 ) 00073 { 00074 return true; 00075 } 00076 00077 protected: 00078 std::string prop; 00079 00080 }; /* end baciTestCBvoid */ 00081 00082 class baciTestCBdouble: public virtual POA_ACS::CBdouble 00083 { 00084 00085 public: 00086 baciTestCBdouble(std::string _prop, int c=5, int dc=1) : prop(_prop), count(c), done_c(dc) {} 00087 00088 virtual void working ( 00089 CORBA::Double value, 00090 const ACSErr::Completion & c, 00091 const ACS::CBDescOut & desc 00092 ) 00093 { 00094 if (count>0) 00095 { 00096 CompletionImpl completion(c); 00097 if (completion.isErrorFree()) 00098 { 00099 ACS_SHORT_LOG((LM_INFO, "(%s::CBdouble::working) desc.id_tag: %u Value: %f TimeStamp: %s", 00100 prop.c_str(), (unsigned)desc.id_tag, value, getStringifiedUTC(c.timeStamp).c_str())); 00101 } 00102 else 00103 { 00104 ACS_SHORT_LOG((LM_INFO, "(%s::CBdouble::working) desc.id_tag: %u TimeStamp: %s containes an error", prop.c_str(), (unsigned)desc.id_tag, getStringifiedUTC(c.timeStamp).c_str())); 00105 completion.log(); 00106 }//if-else 00107 } 00108 count--; 00109 } 00110 00111 virtual void done ( 00112 CORBA::Double value, 00113 const ACSErr::Completion & c, 00114 const ACS::CBDescOut & desc 00115 ) 00116 { 00117 if (done_c > 0 ) 00118 { 00119 ACS_SHORT_LOG((LM_INFO, "(%s::CBdouble::done) desc.id_tag: %u Value: %f TimeStamp: %s", 00120 prop.c_str(), (unsigned)desc.id_tag, value, getStringifiedUTC(c.timeStamp).c_str())); 00121 }//if 00122 done_c--; 00123 } 00124 00125 00126 virtual CORBA::Boolean negotiate ( 00127 ACS::TimeInterval time_to_transmit, 00128 const ACS::CBDescOut & desc 00129 ) 00130 { 00131 return 1; 00132 } 00133 00134 int getCount(){ return count+done_c;} 00135 protected: 00136 std::string prop; 00137 int count, done_c; 00138 00139 }; /* end baciTestCBdouble */ 00140 00141 class baciTestCBfloat: public virtual POA_ACS::CBfloat 00142 { 00143 00144 public: 00145 baciTestCBfloat(std::string _prop, int c=5, int dc=1) : prop(_prop), count(c), done_c(dc) {} 00146 00147 virtual void working ( 00148 CORBA::Float value, 00149 const ACSErr::Completion & c, 00150 const ACS::CBDescOut & desc 00151 ) 00152 { 00153 if (count>0) 00154 { 00155 ACS_SHORT_LOG((LM_INFO, "(%s::CBfloat::working) desc.id_tag: %u Value: %f TimeStamp: %s", 00156 prop.c_str(), (unsigned)desc.id_tag, value, getStringifiedUTC(c.timeStamp).c_str())); 00157 } 00158 count--; 00159 } 00160 00161 virtual void done ( 00162 CORBA::Float value, 00163 const ACSErr::Completion & c, 00164 const ACS::CBDescOut & desc 00165 ) 00166 { 00167 if (done_c > 0 ) 00168 { 00169 ACS_SHORT_LOG((LM_INFO, "(%s::CBfloat::done) desc.id_tag: %u Value: %f TimeStamp: %s", 00170 prop.c_str(), (unsigned)desc.id_tag, value, getStringifiedUTC(c.timeStamp).c_str())); 00171 }//if 00172 done_c--; 00173 } 00174 00175 00176 virtual CORBA::Boolean negotiate ( 00177 ACS::TimeInterval time_to_transmit, 00178 const ACS::CBDescOut & desc 00179 ) 00180 { 00181 return 1; 00182 } 00183 00184 int getCount(){ return count+done_c;} 00185 protected: 00186 std::string prop; 00187 int count, done_c; 00188 00189 }; /* end baciTestCBfloat */ 00190 00191 class baciTestCBpattern: public virtual POA_ACS::CBpattern 00192 { 00193 00194 public: 00195 baciTestCBpattern(std::string _prop, int c=5, int dc=1) : prop(_prop), count(c), done_c(dc) {} 00196 00197 virtual void working ( 00198 ACS::pattern value, 00199 const ACSErr::Completion & c, 00200 const ACS::CBDescOut & desc 00201 ) 00202 { 00203 if (count>0) 00204 { 00205 ACS_SHORT_LOG((LM_INFO, "(%s::CBpattern::working) desc.id_tag: %u Value: %llu TimeStamp: %s", 00206 prop.c_str(), (unsigned)desc.id_tag, value, getStringifiedUTC(c.timeStamp).c_str())); 00207 } 00208 count--; 00209 } 00210 00211 virtual void done ( 00212 ACS::pattern value, 00213 const ACSErr::Completion & c, 00214 const ACS::CBDescOut & desc 00215 ) 00216 { 00217 if (done_c > 0 ) 00218 { 00219 ACS_SHORT_LOG((LM_INFO, "(%s::CBpattern::done) desc.id_tag: %u Value: %llu TimeStamp: %s", 00220 prop.c_str(), (unsigned)desc.id_tag, value, getStringifiedUTC(c.timeStamp).c_str())); 00221 }//if 00222 done_c--; 00223 } 00224 00225 00226 virtual CORBA::Boolean negotiate ( 00227 ACS::TimeInterval time_to_transmit, 00228 const ACS::CBDescOut & desc 00229 ) 00230 { 00231 return 1; 00232 } 00233 00234 int getCount(){ return count+done_c;} 00235 protected: 00236 std::string prop; 00237 int count, done_c; 00238 00239 }; /* end baciTestCBdouble */ 00240 00241 int write_iors_to_file (const int count, 00242 CORBA::String_var name[], 00243 CORBA::String_var type[], 00244 CORBA::String_var ior[]); 00245 int read_IOR_from_file (std::string device, std::string &readIOR); 00246 00247 class CORBAShutdown 00248 { 00249 public: 00250 typedef void (*ShutdownFunction)(); 00251 00252 static void setShutdownFunction(ShutdownFunction function); 00253 static void shutdown(); 00254 00255 private: 00256 static ShutdownFunction m_func; 00257 00258 }; 00259 00260 #endif /* baciTestUtils_h */ 00261 00262 00263 00264

Generated on Thu Apr 30 02:30:50 2009 for ACS C++ API by doxygen 1.3.8