baciMonitor_T.h
Go to the documentation of this file.00001
#ifndef baciMonitor_T_H
00002
#define baciMonitor_T_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
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
00365
00366
00367
00368
00369
00370
Generated on Thu Apr 30 02:30:50 2009 for ACS C++ API by
1.3.8