• Classes
  • Modules
  • Namespaces
  • Files
  • Related Pages
  • File List
  • File Members

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 Jan 12 2012 23:13:50 for ACS-10.0 C++ API by  doxygen 1.7.0