conduitFriends.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 #ifndef CONDUITFRIENDS_H
00009 #define CONDUITFRIENDS_H
00010 
00011 #include <cstdio>
00012 #include <conduit.h>
00013 #include <statusCodes.h>
00014 
00015 using namespace std;
00016 
00017 
00021 struct change_alarmStatus
00022 {
00023         change_alarmStatus (const dbr_short_t  & new_alarmStatus): new_alarmStatus(new_alarmStatus){}
00024 
00025         void operator() (Conduit& c) {
00027                 c.alarmStatus =  new_alarmStatus;
00029         }
00030 
00031 private:
00032         dbr_short_t  new_alarmStatus;
00033 };
00034 struct change_alarmSeverity
00035 {
00036         change_alarmSeverity (const dbr_short_t  & new_alarmSeverity): new_alarmSeverity(new_alarmSeverity){}
00037 
00038         void operator() (Conduit& c) {
00040                 c.alarmSeverity =  new_alarmSeverity;
00042         }
00043 
00044 private:
00045         dbr_short_t  new_alarmSeverity;
00046 };
00047 struct change_epicsTimeStamp
00048 {
00049         change_epicsTimeStamp (const epicsTimeStamp  & new_epicsTimeStamp): new_epicsTimeStamp(new_epicsTimeStamp){}
00050 
00051         void operator() (Conduit& c) {
00053                 c.ts =  new_epicsTimeStamp;
00054                 //Do this to prevent overflow error in epicsTime time(ts) routines!
00055                 //This bad number can occur in timeouts
00056                 if(c.ts.nsec>1000000000) {c.ts.nsec=0;}
00058         }
00059 
00060 private:
00061         epicsTimeStamp  new_epicsTimeStamp;
00062 };
00063 
00064 
00068 struct change_accessRead
00069 {
00070     change_accessRead (const unsigned int  & new_accessRead): new_accessRead(new_accessRead){}
00071 
00072     void operator() (Conduit& c) {
00074         c.channelRegalia.accessRead =  new_accessRead;
00076     }
00077 
00078 private:
00079     unsigned int  new_accessRead;
00080 };
00081 
00082 
00086 struct change_accessWrite
00087 {
00088     change_accessWrite (const unsigned int  & new_accessWrite): new_accessWrite(new_accessWrite){}
00089 
00090     void operator() (Conduit& c) {
00092         c.channelRegalia.accessWrite =  new_accessWrite;
00094     }
00095 
00096 private:
00097     unsigned int  new_accessWrite;
00098 };
00099 
00100 
00105 struct change_accessRightsHandlerArgs
00106 {
00107     change_accessRightsHandlerArgs (const struct access_rights_handler_args & new_accessRightsHandlerArgs):
00108         new_accessRightsHandlerArgs(new_accessRightsHandlerArgs){}
00109 
00110     void operator() (Conduit& c) {
00111 
00113         c.channelRegalia.accessRead =  new_accessRightsHandlerArgs.ar.read_access;
00114         c.channelRegalia.accessWrite=  new_accessRightsHandlerArgs.ar.write_access;
00116     }
00117 
00118 private:
00119         access_rights_handler_args new_accessRightsHandlerArgs;
00120 };
00121 
00122 
00123 
00127 struct change_channelDeviceAttribute
00128 {
00129     change_channelDeviceAttribute (const ChannelDeviceAttribute  & new_channelDeviceAttribute):
00130             new_channelDeviceAttribute(new_channelDeviceAttribute){}
00131 
00132     void operator() (Conduit& c) {c.channelDeviceAttribute =  new_channelDeviceAttribute;}
00133 
00134 private:
00135     ChannelDeviceAttribute new_channelDeviceAttribute;
00136 };
00137 
00138 
00139 
00143 struct change_channelID
00144 {
00145     change_channelID (const chid & new_channelID): new_channelID(new_channelID){}
00146 
00147     void operator() (Conduit& c) {
00148         c.channelRegalia.channelID=new_channelID;
00149         c.channelID=new_channelID;
00150     }
00151 
00152 private:
00153     chid new_channelID;
00154 };
00155 
00156 
00157 
00161 struct change_channelGetActionWhenMonitorPolicy
00162 {
00163         change_channelGetActionWhenMonitorPolicy (
00164                 const ChannelGetActionWhenMonitorPolicy & new_channelGetActionWhenMonitorPolicy):
00165                 new_channelGetActionWhenMonitorPolicy(new_channelGetActionWhenMonitorPolicy){}
00166 
00167         void operator() (Conduit& c) {
00168             //
00169             c.channelGetActionWhenMonitorPolicy =  new_channelGetActionWhenMonitorPolicy;
00170         }
00171 private:
00172         ChannelGetActionWhenMonitorPolicy new_channelGetActionWhenMonitorPolicy;
00173 };
00174 
00175 
00179 struct change_channelGetCacheWaitPolicy
00180 {
00181         change_channelGetCacheWaitPolicy (
00182                 const ChannelGetCacheWaitPolicy & new_channelGetCacheWaitPolicy):
00183                 new_channelGetCacheWaitPolicy(new_channelGetCacheWaitPolicy){}
00184 
00185         void operator() (Conduit& c) {
00186             //
00187             c.channelGetCacheWaitPolicy =  new_channelGetCacheWaitPolicy;
00188         }
00189 private:
00190         ChannelGetCacheWaitPolicy new_channelGetCacheWaitPolicy;
00191 };
00192 
00193 
00194 
00195 
00196 
00200 struct change_hasNewData
00201 {
00202         change_hasNewData (const bool  & new_hasNewData): new_hasNewData(new_hasNewData){}
00203 
00204         void operator() (Conduit& c) {c.hasNewData =  new_hasNewData;}
00205 
00206 private:
00207         bool new_hasNewData;
00208 };
00209 
00210 
00211 
00215 struct change_channelRegalia
00216 {
00217     change_channelRegalia (const ChannelRegalia  & new_channelRegalia): new_channelRegalia(new_channelRegalia){}
00218 
00219     void operator() (Conduit& c) {c.channelRegalia =  new_channelRegalia;}
00220 
00221 private:
00222     ChannelRegalia new_channelRegalia;
00223 };
00224 
00225 
00229 struct change_channelRequestDataTypePolicy
00230 {
00231         change_channelRequestDataTypePolicy (
00232                 const ChannelRequestDataTypePolicy & new_channelRequestDataTypePolicy):
00233                 new_channelRequestDataTypePolicy(new_channelRequestDataTypePolicy){}
00234 
00235         void operator() (Conduit& c) {
00236             //
00237             c.channelRequestDataTypePolicy =  new_channelRequestDataTypePolicy;
00238         }
00239 private:
00240         ChannelRequestDataTypePolicy new_channelRequestDataTypePolicy;
00241 };
00242 
00243 
00244 
00248 struct change_channelRequestMetaCtrl
00249 {
00250         change_channelRequestMetaCtrl (const ChannelRequestMetaData & new_channelData):
00251                 new_channelData(new_channelData){}
00252 
00253         void operator() (Conduit& c) {
00254             //
00255             c.channelRequestMetaCtrl =  new_channelData;
00256         }
00257 private:
00258         ChannelRequestMetaData new_channelData;
00259 };
00260 
00261 
00262 
00266 struct change_channelRequestMetaCtrlClient
00267 {
00268         change_channelRequestMetaCtrlClient (const ChannelRequestMetaDataClient & new_channelData):
00269                 new_channelData(new_channelData){}
00270 
00271         void operator() (Conduit& c) {
00272             //
00273             c.channelRequestMetaCtrlClient =  new_channelData;
00274                                         
00275         }
00276 private:
00277         ChannelRequestMetaDataClient new_channelData;
00278 };
00279 
00280 
00281 
00282 
00283 
00287 struct change_channelRequestMetaData
00288 {
00289         change_channelRequestMetaData (const ChannelRequestMetaData & new_channelData):
00290                 new_channelData(new_channelData){}
00291 
00292         void operator() (Conduit& c) {
00293             //
00294             c.channelRequestMetaData =  new_channelData;
00295         }
00296 private:
00297         ChannelRequestMetaData new_channelData;
00298 };
00299 
00300 
00301 
00305 struct change_channelRequestMetaDataClient
00306 {
00307         change_channelRequestMetaDataClient (const ChannelRequestMetaDataClient & new_channelData):
00308                 new_channelData(new_channelData){}
00309 
00310         void operator() (Conduit& c) {
00311             //
00312             c.channelRequestMetaDataClient =  new_channelData;
00313         }
00314 private:
00315         ChannelRequestMetaDataClient new_channelData;
00316 };
00317 
00318 
00319 
00323 struct change_channelRequestMetaPrimitive
00324 {
00325         change_channelRequestMetaPrimitive (const ChannelRequestMetaData & new_channelData):
00326                 new_channelData(new_channelData){}
00327 
00328         void operator() (Conduit& c) {
00329             //
00330             c.channelRequestMetaPrimitive =  new_channelData;
00331         }
00332 private:
00333         ChannelRequestMetaData new_channelData;
00334 };
00335 
00336 
00340 struct change_channelRequestPolicyGet
00341 {
00342         change_channelRequestPolicyGet (const ChannelRequestPolicy & new_ChannelRequestPolicy):
00343                 new_ChannelRequestPolicy(new_ChannelRequestPolicy){}
00344 
00345         void operator() (Conduit& c) {
00346             //This does a deep copy!
00347             c.channelRequestPolicyGet =  new_ChannelRequestPolicy;
00348         }
00349 private:
00350         ChannelRequestPolicy new_ChannelRequestPolicy;
00351 };
00352 
00353 
00357 struct change_channelRequestPolicyGetCtrl
00358 {
00359         change_channelRequestPolicyGetCtrl (const ChannelRequestPolicy & new_ChannelRequestPolicy):
00360                 new_ChannelRequestPolicy(new_ChannelRequestPolicy){}
00361 
00362         void operator() (Conduit& c) {
00363             //This does a deep copy!
00364             c.channelRequestPolicyGetCtrl =  new_ChannelRequestPolicy;
00365         }
00366 private:
00367         ChannelRequestPolicy new_ChannelRequestPolicy;
00368 };
00369 
00370 
00371 
00375 struct change_channelRequestPolicyPut
00376 {
00377         change_channelRequestPolicyPut (const ChannelRequestPolicy & new_ChannelRequestPolicy):
00378                 new_ChannelRequestPolicy(new_ChannelRequestPolicy){}
00379 
00380         void operator() (Conduit& c) {
00381             //This does a deep copy!
00382             c.channelRequestPolicyPut =  new_ChannelRequestPolicy;
00383         }
00384 private:
00385         ChannelRequestPolicy new_ChannelRequestPolicy;
00386 };
00387 
00388 
00389 
00390 
00394 struct change_channelRequestStatusGet
00395 {
00396     change_channelRequestStatusGet (const ChannelRequestStatus & new_ChannelRequestStatus):
00397                 new_ChannelRequestStatus(new_ChannelRequestStatus){}
00398 
00399     void operator() (Conduit& c) {
00400         //This does a deep copy!
00401 
00402         c.channelRequestStatusGet =  new_ChannelRequestStatus;
00403     }
00404 
00405 private:
00406     ChannelRequestStatus new_ChannelRequestStatus;
00407 };
00408 
00409 
00410 
00414 struct change_channelRequestStatusGetCtrl
00415 {
00416     change_channelRequestStatusGetCtrl (const ChannelRequestStatus & new_ChannelRequestStatus):
00417                 new_ChannelRequestStatus(new_ChannelRequestStatus){}
00418 
00419     void operator() (Conduit& c) {
00420         //This does a deep copy!
00421         c.channelRequestStatusGetCtrl =  new_ChannelRequestStatus;
00422     }
00423 private:
00424     ChannelRequestStatus new_ChannelRequestStatus;
00425 };
00426 
00427 
00431 struct change_channelRequestStatusGetSTSACK
00432 {
00433     change_channelRequestStatusGetSTSACK (const ChannelRequestStatus & new_ChannelRequestStatus):
00434                 new_ChannelRequestStatus(new_ChannelRequestStatus){}
00435 
00436     void operator() (Conduit& c) {
00437         //This does a deep copy!
00438         c.channelRequestStatusGetSTSACK =  new_ChannelRequestStatus;
00439     }
00440 private:
00441     ChannelRequestStatus new_ChannelRequestStatus;
00442 };
00443 
00444 
00445 
00449 struct change_channelRequestStatusGetClassName
00450 {
00451     change_channelRequestStatusGetClassName (const ChannelRequestStatus & new_ChannelRequestStatus):
00452                 new_ChannelRequestStatus(new_ChannelRequestStatus){}
00453 
00454     void operator() (Conduit& c) {
00455         //This does a deep copy!
00456         c.channelRequestStatusGetClassName  =  new_ChannelRequestStatus;
00457     }
00458 private:
00459     ChannelRequestStatus new_ChannelRequestStatus;
00460 };
00461 
00462 
00466 struct change_channelRequestStatusPut
00467 {
00468     change_channelRequestStatusPut (const ChannelRequestStatus & new_ChannelRequestStatus):
00469                 new_ChannelRequestStatus(new_ChannelRequestStatus){}
00470 
00471     void operator() (Conduit& c) {
00472         //This does a deep copy!
00473         c.channelRequestStatusPut =  new_ChannelRequestStatus;
00474     }
00475 private:
00476     ChannelRequestStatus new_ChannelRequestStatus;
00477 };
00478 
00479 
00480 
00481 
00485 struct change_channelTimeoutPolicyGet
00486 {
00487     change_channelTimeoutPolicyGet (const ChannelTimeoutPolicy & new_channelTimeoutPolicy):
00488                 new_channelTimeoutPolicy(new_channelTimeoutPolicy){}
00489 
00490     void operator() (Conduit& c) {
00491         //This does a deep copy!
00492         c.channelTimeoutPolicyGet =  new_channelTimeoutPolicy;
00493     }
00494 private:
00495     ChannelTimeoutPolicy new_channelTimeoutPolicy;
00496 };
00497 
00498 
00502 struct change_channelTimeoutPolicyPut
00503 {
00504     change_channelTimeoutPolicyPut (const ChannelTimeoutPolicy & new_channelTimeoutPolicy):
00505                 new_channelTimeoutPolicy(new_channelTimeoutPolicy){}
00506 
00507     void operator() (Conduit& c) {
00508     //This does a deep copy!
00509         c.channelTimeoutPolicyPut =  new_channelTimeoutPolicy;
00510     }
00511 private:
00512         ChannelTimeoutPolicy new_channelTimeoutPolicy;
00513 };
00514 
00515 
00516 
00521 struct change_monitorAction
00522 {
00523         change_monitorAction (string  &new_monitorAction): new_monitorAction(new_monitorAction){}
00524 
00525         void operator() (Conduit& c) {
00526                 c.monitorAction.push_back(new_monitorAction);
00527         }
00528 private:
00529         string new_monitorAction;
00530 };
00531 
00532 
00533 
00538 struct change_monitorActionClear
00539 {
00540     change_monitorActionClear (){}
00541 
00542     void operator() (Conduit& c) {
00543         c.monitorAction.clear();
00544     }
00545 
00546 };
00547 
00548 
00549 
00554 struct change_monitorActionErase
00555 {
00556         change_monitorActionErase (string  &new_monitorAction): new_monitorAction(new_monitorAction){}
00557 
00558         void operator() (Conduit& c) {
00559             bool maFound=false;
00560             vector<string>::iterator it;
00561 
00562 
00563             for (it = c.monitorAction.begin(); it != c.monitorAction.end(); ) {
00564                 if( (*it)==new_monitorAction) {
00565                     it = c.monitorAction.erase(it);
00566                     maFound=true;
00567                 }
00568                 else {
00569                     ++it;
00570                 }
00571             }
00572 
00573             if (!maFound) {
00574                 cout << "monitorAction " << new_monitorAction << " NOT FOUND! " << endl;
00575                 cout << "Could not delete entry!" << endl;
00576             }
00577 
00578         }
00579 private:
00580         string new_monitorAction;
00581 };
00582 
00583 
00588 struct change_monitorPolicyErase
00589 {
00590     change_monitorPolicyErase (unsigned int  & new_evid): new_evid(new_evid){}
00591 
00592     void operator() (Conduit& c) {
00593 
00594         bool evidFound=false;
00595         vector<MonitorPolicy>::iterator it;
00596         //Iterate
00597         for (it = c.mpV.begin(); it != c.mpV.end();) {
00598             //cout << "ID " << (*it).getID() << " " << endl;
00599 
00600             if ( (*it).getID()==new_evid) {
00601                 evidFound=true;
00602                 it=(c.mpV).erase(it);
00603                 break;
00604             }
00605             else {
00606                  ++it;
00607             }
00608         }
00609 
00610         if (!evidFound) {
00611             cout << "evid " << new_evid << " NOT FOUND! " << endl;
00612             cout << "Could not delete entry!" << endl;
00613         }
00614     }
00615 
00616 private:
00617     unsigned int  new_evid;
00618 };
00619 
00620 
00621 
00622 
00627 struct change_monitorPolicyInsert
00628 {
00629     change_monitorPolicyInsert (class MonitorPolicy & new_monitorPolicy): new_monitorPolicy(new_monitorPolicy){}
00630 
00631     void operator() (Conduit& c) {
00632 
00633 
00634         //insert into mpV
00635         (c.mpV).push_back(new_monitorPolicy);
00636 
00637         if (c.mpV.size()>(MAX_NO_MONITORS_PER_CHANNEL/2)) {
00638             cout << "HEY DUDE - YOU NOW HAVE " << c.mpV.size() << " MONITORS " << endl;
00639             cout << "for channel " << c.pv << " with handle " << c.handle << endl;
00640         }
00641 
00642 
00643     }
00644 
00645 private:
00646     class MonitorPolicy new_monitorPolicy;
00647 };
00648 
00649 
00650 
00655 struct change_monitorPolicyInWaitingErase
00656 {
00657     change_monitorPolicyInWaitingErase (unsigned int  & new_evid): new_evid(new_evid){}
00658 
00659     void operator() (Conduit& c) {
00660 
00661         bool evidFound=false;
00662         vector<MonitorPolicy>::iterator it;
00663         //Iterate
00664         for (it = c.mpInWaitingV.begin(); it != c.mpInWaitingV.end(); ++it) {
00665 
00666             if ( (*it).getID()==new_evid) {
00667                 evidFound=true;
00668                 (c.mpInWaitingV).erase(it);
00669                 break;
00670             }
00671         }
00672 
00673         if (!evidFound) {
00674             cout << "evid " << new_evid << " NOT FOUND! " << endl;
00675             cout << "Could not delete entry!" << endl;
00676         }
00677     }
00678 
00679 private:
00680     unsigned int  new_evid;
00681 };
00682 
00683 
00684 
00689 struct change_monitorPolicyInWaitingInsert
00690 {
00691     change_monitorPolicyInWaitingInsert (class MonitorPolicy & new_monitorPolicy): new_monitorPolicy(new_monitorPolicy){}
00692 
00693     void operator() (Conduit& c) {
00694 
00695         //insert into mpnWaitingV
00696         (c.mpInWaitingV).push_back(new_monitorPolicy);
00697 
00698         if (c.mpInWaitingV.size()>6) {
00699             cout << "HEY DUDE - YOU NOW HAVE " << c.mpInWaitingV.size()
00700                     << " MONITORS IN WAITING" << endl;
00701             cout << "for channel " << c.pv << " with handle " << c.handle << endl;
00702         }
00703     }
00704 
00705 private:
00706     class MonitorPolicy new_monitorPolicy;
00707 };
00708 
00709 
00710 
00711 
00715 struct change_pvAlias
00716 {
00717     change_pvAlias (const char * & new_pvAlias): new_pvAlias(new_pvAlias){}
00718 
00719     void operator() (Conduit& c) {
00720         c.pvAlias =  new_pvAlias;
00721         //No longer supporting c,pvd
00723         //strcpy(c.pvc.pvAlias, new_pvAlias);
00724     }
00725 
00726 private:
00727     const char * new_pvAlias;
00728 };
00729 
00730 
00731 
00732 
00751 struct change_status
00752 {
00753     change_status (const int  & new_status): new_status(new_status){}
00754     void operator() (Conduit& c) {c.status =  new_status;}
00755 
00756 private:
00757     int  new_status;
00758 };
00759 
00760 
00761 
00765 struct change_usrArgs
00766 {
00767     change_usrArgs (const unsigned int  & new_usrArgs): new_usrArgs(new_usrArgs){}
00768     void operator() (Conduit& c) {c.usrArgs =  (void *) new_usrArgs;}
00769 
00770 private:
00771     unsigned int  new_usrArgs;
00772 };
00773 
00774 
00778 struct change_groupHandle
00779 {
00780         change_groupHandle (const unsigned int  & new_groupHandle): new_groupHandle(new_groupHandle){}
00781 
00782         void operator() (Conduit& c) {c.groupHandle =  new_groupHandle;}
00783 
00784 private:
00785         unsigned int  new_groupHandle;
00786 };
00787 
00788 
00789 
00790 #endif // CONDUITFRIENDS_H

Generated on 3 May 2017 for CAFE by  doxygen 1.6.1