/* * ALMA - Atacama Large Millimiter Array * (c) European Southern Observatory, 2003 * *This library is free software; you can redistribute it and/or *modify it under the terms of the GNU Lesser General Public *License as published by the Free Software Foundation; either *version 2.1 of the License, or (at your option) any later version. * *This library is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *Lesser General Public License for more details. * *You should have received a copy of the GNU Lesser General Public *License along with this library; if not, write to the Free Software *Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "baciROSeqContImpl_T.h" #include "baciROcontImpl_T.i" template baci::ROSeqContImpl::ROSeqContImpl(const ACE_CString& name, BACIComponent *component_p, DevIO *devIO, bool flagdeldevIO) : ROcontImpl(false, name, component_p, devIO, flagdeldevIO) { ACS_TRACE("baci::ROSeqContImpl<>::ROSeqContImpl"); if ( this->devIO_mp->initializeValue()==true) { //devIO_mp->write(defaultValue_m, timeStamp); ACS_DEBUG("baci::ROSeqContImpl<>::ROSeqContImpl", "DevIO initial value set not implemented yet."); } if (this->monitorEventDispatcher_mp!=0 && this->alarmTimerTrig_m!=0) { this->alarmSystemMonitor_mp = new AlarmSystemMonitorSeqCont(this, this->monitorEventDispatcher_mp); }//if this->initialization_m = 0; // property successfuly initialized } template baci::ROSeqContImpl::~ROSeqContImpl() { ACS_TRACE("baci::ROSeqContImpl<>::~ROSeqContImpl"); if (this->alarmSystemMonitor_mp) { delete this->alarmSystemMonitor_mp; this->alarmSystemMonitor_mp = 0; }//if } template ACS::Subscription_ptr baci::ROSeqContImpl::new_subscription_Alarm (TAlarm *cb, const ACS::CBDescIn & desc ) { //TBD: this could be done just in the constructor if (this->alarmTimerTrig_m==0) { ACS_LOG(LM_RUNTIME_CONTEXT, "baci::ROSeqContImpl<>::new_subscription_Alarm", (LM_ERROR, "Can not create alarm dispatcher for %s because alarm_timer_trig=0", this->getProperty()->getName())); throw CORBA::NO_RESOURCES(); }//if if (this->monitorEventDispatcher_mp==0) { CBDescIn descIn; descIn.id_tag = 0; this->monitorEventDispatcher_mp = new MonitorEventDispatcher(descIn, this->alarmTimerTrig_m, this->property_mp); if (this->monitorEventDispatcher_mp==0) throw CORBA::NO_RESOURCES(); } AlarmEventStrategyContSeq * eventStrategy_p = new AlarmEventStrategyContSeq(cb, desc, this->alarmTimerTrig_m, this, this->monitorEventDispatcher_mp); if (eventStrategy_p==0) throw CORBA::NO_RESOURCES(); this->monitorEventDispatcher_mp->subscribe(eventStrategy_p); ACS::Subscription_var subscription = ACS::Subscription::_narrow(eventStrategy_p->getCORBAReference()); return subscription._retn(); }// new_subscription_Alarm