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

baciMonitor_T.h

Go to the documentation of this file.
00001 #ifndef baciMonitor_T_H 00002 #define baciMonitor_T_H 00003 00004 /******************************************************************************* 00005 * ALMA - Atacama Large Millimiter Array 00006 * (c) European Southern Observatory, 2003 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: baciMonitor_T.h,v 1.104 2008/10/01 02:26:45 cparedes Exp $" 00023 * 00024 * who when what 00025 * -------- -------- ---------------------------------------------- 00026 * oat 2003-01-21 added templates for Monitors 00027 */ 00028 00034 #ifndef __cplusplus 00035 #error This is a C++ include file and cannot be used from plain C 00036 #endif 00037 00038 #include <acsutil.h> 00039 #include <ace/SString.h> 00040 #include <baci.h> 00041 #include <baciS.h> 00042 #include <logging.h> 00043 #include <baciRecovery.h> 00044 #include <baciRecoverableObject.h> 00045 00046 00047 namespace baci { 00048 00049 #ifdef MAKE_VXWORKS 00050 unsigned long long convString2LLU(char *); 00051 char *printLLUasString(unsigned long long); 00052 #endif 00053 00054 #ifdef MAKE_VXWORKS 00055 #define HEADER_PRINT_GET_OBJECT_STATE \ 00056 ACE_OS::sprintf(buffer_p, "%s %s %lu %s %s %s %s %d %u %u", \ 00057 getName(), ior.in(), \ 00058 printLLUasString(tag), \ 00059 printLLUasString(bcb_p->getDescIn().normal_timeout), \ 00060 printLLUasString(monitor_mp->getTransmitTime()), \ 00061 monitor_mp->getTriggerTime(), \ 00062 valueTrigger.c_str(), \ 00063 monitor_mp->getUpdateMode(), monitor_mp->getTriggerOnValue(), \ 00064 monitor_mp->isSuspended()); 00065 #else 00066 00069 #define HEADER_PRINT_GET_OBJECT_STATE \ 00070 ACE_OS::sprintf(buffer_p, "%s %s %lu %llu %llu %llu %s %d %u %u", \ 00071 getName(), ior.in(), tag, bcb_p->getDescIn().normal_timeout, \ 00072 monitor_mp->getTransmitTime(), monitor_mp->getTriggerTime(), \ 00073 valueTrigger.c_str(), \ 00074 monitor_mp->getUpdateMode(), monitor_mp->getTriggerOnValue(), \ 00075 monitor_mp->isSuspended()); 00076 #endif 00077 00078 #ifdef MAKE_VXWORKS 00079 #define IMPL_PRINT_GET_OBJECT_STATE \ 00080 ACE_OS::sprintf(buffer_p, "%s %s %lu %s %s %s %d %u", \ 00081 getName(), ior.in(), \ 00082 printLLUasString(tag), \ 00083 printLLUasString(bcb_p->getDescIn().normal_timeout), \ 00084 monitor_mp->getTransmitTime(), \ 00085 printLLUasString(monitor_mp->getTriggerTime()), \ 00086 monitor_mp->getUpdateMode(), \ 00087 monitor_mp->isSuspended()); 00088 #else 00089 00092 #define IMPL_PRINT_GET_OBJECT_STATE \ 00093 ACE_OS::sprintf(buffer_p, "%s %s %lu %llu %llu %llu %d %u", \ 00094 getName(), ior.in(), tag, bcb_p->getDescIn().normal_timeout, \ 00095 monitor_mp->getTransmitTime(), \ 00096 monitor_mp->getTriggerTime(), \ 00097 monitor_mp->getUpdateMode(), \ 00098 monitor_mp->isSuspended()); 00099 #endif 00100 00101 #ifdef MAKE_VXWORKS 00102 #define HEADER_SCAN_SET_OBJECT_STATE \ 00103 char *tmpPtr1, *tmpPtr2, *tmpPtr3; \ 00104 sscanf(state, "%s %s %lu %s %s %s %s %d %u %u", \ 00105 cname, ior, &tag, \ 00106 tmpPtr1, \ 00107 tmpPtr2, \ 00108 tmpPtr3, \ 00109 valueTrigger, &mode, \ 00110 &triggerOnValue, &isSuspended); \ 00111 descIn.normal_timeout = convString2LLU(tmpPtr1); \ 00112 transmitTime = convString2LLU(tmpPtr2); \ 00113 timeTrigger = convString2LLU(tmpPtr3); 00114 #else 00115 00118 #define HEADER_SCAN_SET_OBJECT_STATE \ 00119 sscanf(state, "%s %s %lu %llu %llu %llu %s %d %u %u", \ 00120 cname, ior, &tag, &descIn.normal_timeout, \ 00121 &transmitTime, &timeTrigger, valueTrigger, &mode, \ 00122 &triggerOnValue, &isSuspended); 00123 #endif 00124 00125 #ifdef MAKE_VXWORKS 00126 #define IMPL_SCAN_SET_OBJECT_STATE \ 00127 char *tmpPtr1, *tmpPtr2, *tmpPtr3; \ 00128 sscanf(state, "%s %s %lu %s %s %s %d %u", \ 00129 cname, ior, &tag, \ 00130 tmpPtr1, \ 00131 tmpPtr2, \ 00132 tmpPtr3, \ 00133 &mode, \ 00134 &isSuspended); \ 00135 descIn.normal_timeout = convString2LLU(tmpPtr1); \ 00136 transmitTime = convString2LLU(tmpPtr2); \ 00137 timeTrigger = convString2LLU(tmpPtr3); 00138 #else 00139 00142 #define IMPL_SCAN_SET_OBJECT_STATE \ 00143 sscanf(state, "%s %s %lu %llu %llu %llu %d %u", \ 00144 cname, ior, &tag, &descIn.normal_timeout, \ 00145 &transmitTime, &timeTrigger, &mode, \ 00146 &isSuspended); 00147 #endif 00148 00152 #define MAX_VALUE_LENGTH 500 00153 00157 #define ACS_MONITOR_C class TCORBA, class TCORBA_out, class TCB, class TPOA, baci::BACIValue::Type TBACIValuetype 00158 00161 #define ACS_MONITOR_T TCORBA, TCORBA_out, TCB, TPOA, TBACIValuetype 00162 00166 #define ACS_MONITOR_SEQ(T,TCORBA) TCORBA, TCORBA##_out, ACS::CB##T##Seq, POA_ACS::Monitor##T, baci::BACIValue::type_##T##Seq 00167 00170 #define ACS_MONITOR(T,TCORBA) TCORBA, TCORBA##_out, ACS::CB##T, POA_ACS::Monitor##T, baci::BACIValue::type_##T 00171 00172 template <ACS_MONITOR_C> 00173 class baci_EXPORT Monitor: public virtual PortableServer::RefCountServantBase, 00174 public TPOA, 00175 public RecoverableObject, 00176 public MonitorImplementator 00177 { 00178 public: 00179 00180 Monitor(ACE_CString name, 00181 const ACS::TimeInterval& minTriggerTime, 00182 const baci::BACIValue& minTriggerValue, 00183 BACIProperty* property); 00184 00185 Monitor(ACE_CString name, 00186 Callback_ptr callback_p, const CBDescIn& inDesc, 00187 const ACS::TimeInterval& triggerTime, 00188 const baci::BACIValue& triggerValue, 00189 const ACS::TimeInterval& minTriggerTime, 00190 const baci::BACIValue& minTriggerValue, 00191 BACIProperty* property, 00192 const ACS::TimeInterval& transmitTime = 0, 00193 const BACIMonitor::UpdateMode& updateMode=BACIMonitor::mumLast); 00194 00195 virtual ~Monitor(); 00196 00197 virtual int initialization() 00198 { 00199 return initialization_m; 00200 } 00201 00202 CORBA::Object_ptr getCORBAReference() const 00203 { 00204 return reference_mp; 00205 } 00206 00207 BACIMonitor* getMonitor() const 00208 { 00209 return monitor_mp; 00210 } 00211 00212 virtual int getId(void); 00213 virtual const char* getName(void); 00214 virtual char* getObjectState(void); 00215 virtual void setObjectState(const char * state); 00216 00217 virtual void setObjectState(const char * state, 00218 const ACS::TimeInterval& minTriggerTime, 00219 const baci::BACIValue& minTriggerValue, 00220 BACIProperty * property); 00221 00222 00223 virtual void monitorDestroyed(void); 00224 00225 virtual void monitorStateChanged(void); 00226 00227 00228 virtual void suspend (); 00229 00230 virtual void resume (); 00231 00232 virtual void destroy (); 00233 00234 virtual void set_timer_trigger (ACS::TimeInterval timer); 00235 00236 virtual void get_timer_trigger (ACS::TimeInterval_out timer); 00237 00238 virtual void set_value_trigger (TCORBA delta, CORBA::Boolean enable); 00239 00240 virtual void get_value_trigger (TCORBA_out delta, CORBA::Boolean_out enable); 00241 00242 virtual ACS::Time start_time (); 00243 00244 private: 00245 00246 int initialization_m; 00247 00248 BACIMonitor* monitor_mp; 00249 00250 CORBA::Object_ptr reference_mp; 00251 00255 void operator=(const Monitor&); 00256 00260 Monitor(const Monitor&); 00261 00262 }; 00263 00267 #define ACS_MONITOR_BASIC_C class TCORBA, class TCORBA_out, class TCB, class TPOA, baci::BACIValue::Type TBACIValuetype 00268 00271 #define ACS_MONITOR_BASIC_T TCORBA, TCORBA_out, TCB, TPOA, TBACIValuetype 00272 00273 template<ACS_MONITOR_BASIC_C> 00274 class baci_EXPORT MonitorBasic: public virtual PortableServer::RefCountServantBase, 00275 public POA_ACS::Monitor, 00276 public RecoverableObject, 00277 public MonitorImplementator 00278 { 00279 00280 public: 00281 00282 MonitorBasic(ACE_CString name, 00283 const ACS::TimeInterval& minTriggerTime, 00284 const baci::BACIValue& minTriggerValue, 00285 BACIProperty* property); 00286 00287 MonitorBasic(ACE_CString name, 00288 Callback_ptr callback_p, const CBDescIn& inDesc, 00289 const ACS::TimeInterval& triggerTime, 00290 const baci::BACIValue& triggerValue, 00291 const ACS::TimeInterval& minTriggerTime, 00292 const baci::BACIValue& minTriggerValue, 00293 BACIProperty* property, 00294 const ACS::TimeInterval& transmitTime = 0, 00295 const BACIMonitor::UpdateMode& updateMode=BACIMonitor::mumLast); 00296 00297 virtual ~MonitorBasic(); 00298 00299 virtual int initialization() 00300 { 00301 return initialization_m; 00302 } 00303 00304 CORBA::Object_ptr getCORBAReference() const 00305 { 00306 return reference_mp; 00307 } 00308 00309 BACIMonitor* getMonitor() const 00310 { 00311 return monitor_mp; 00312 } 00313 00314 00315 virtual int getId(void); 00316 virtual const char* getName(void); 00317 virtual char* getObjectState(void); 00318 virtual void setObjectState(const char * state); 00319 00320 virtual void setObjectState(const char * state, 00321 const ACS::TimeInterval& minTriggerTime, 00322 BACIProperty * property); 00323 00324 00325 virtual void monitorDestroyed(void); 00326 00327 virtual void monitorStateChanged(void); 00328 00329 00330 virtual void suspend (); 00331 00332 virtual void resume (); 00333 00334 virtual void destroy (); 00335 00336 virtual void set_timer_trigger (ACS::TimeInterval timer); 00337 00338 virtual void get_timer_trigger (ACS::TimeInterval_out timer); 00339 00340 virtual ACS::Time start_time (); 00341 00342 private: 00343 00344 int initialization_m; 00345 00346 BACIMonitor* monitor_mp; 00347 00348 CORBA::Object_ptr reference_mp; 00349 00353 void operator=(const MonitorBasic&); 00354 00358 MonitorBasic(const MonitorBasic&); 00359 00360 }; 00361 00362 }; 00363 00364 #endif /* baciMonitorTempl_H */ 00365 00366 00367 00368 00369 00370

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