Newer
Older
/*----- PROTECTED REGION ID(AlarmHandler.cpp) ENABLED START -----*/

Graziano Scalamera
committed
//=============================================================================
//

Graziano Scalamera
committed
//
// description : C++ source for the AlarmHandler class and its commands.

Graziano Scalamera
committed
// The class is derived from Device. It represents the
// CORBA servant object which will be accessed from the
// network. All commands which can be executed on the
// AlarmHandler are implemented in this file.

Graziano Scalamera
committed
//
// project : Elettra alarm handler device server

Graziano Scalamera
committed
//
// This file is part of Tango device class.
//
// Tango is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Tango 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Tango. If not, see <http://www.gnu.org/licenses/>.
//
//
//
//=============================================================================
// This file is generated by POGO
// (Program Obviously used to Generate tango Object)
//=============================================================================
#include <AlarmHandler.h>
#include <AlarmHandlerClass.h>

Graziano Scalamera
committed
#include <ctype.h> //for tolower
#include "alarm-thread.h"
#include "alarm_grammar.h"
#include "update-thread.h"
//#define _DUMP_TREE_XML
#ifdef _DUMP_TREE_XML
#if BOOST_VERSION < 103600
#include <boost/spirit/iterator/fixed_size_queue.hpp>
#include <boost/spirit/core.hpp>
#include <boost/spirit/tree/ast.hpp>
#include <boost/spirit/tree/tree_to_xml.hpp>
using namespace boost::spirit;
#else
#include <boost/spirit/include/classic_fixed_size_queue.hpp>
#include <boost/spirit/include/classic_core.hpp>
#include <boost/spirit/include/classic_ast.hpp>
#include <boost/spirit/include/classic_tree_to_xml.hpp>
using namespace boost::spirit::classic;
#endif
#include <iostream>
#include <stack>
#include <functional>
#include <string>
#include <cassert>
#endif //_DUMP_TREE_XML
#include <sstream>

Graziano Scalamera
committed
std::map<parser_id, std::string> rule_names; //only for log messages
int AlarmHandler_ns::AlarmHandler::instanceCounter = 0;

Graziano Scalamera
committed
#ifndef ALARM_BUILDTIME
#define ALARM_BUILDTIME __DATE__ " " __TIME__ " boost=" BOOST_LIB_VERSION
#endif
const char version_string[] = "$Build: @buildID@ " ALARM_BUILDTIME " $";
static const char __FILE__rev[] = __FILE__ " $Revision: 1.29 $";
/*----- PROTECTED REGION END -----*/ // AlarmHandler.cpp

Graziano Scalamera
committed
/**
* AlarmHandler class description:
* Elettra alarm handler device server

Graziano Scalamera
committed
*/
//================================================================
// The following table gives the correspondence
// between command and method names.
//

Graziano Scalamera
committed
// Command name | Method name

Graziano Scalamera
committed
//================================================================

Graziano Scalamera
committed
// State | Inherited (no method)
// Status | Inherited (no method)
// Ack | ack
// Load | load
// Remove | remove
// SearchAlarm | search_alarm
// StopAudible | stop_audible
// Silence | silence
// Modify | modify
// Shelve | shelve
// Enable | enable
// Disable | disable
// ResetStatistics | reset_statistics
// StopNew | stop_new
// GetAlarmInfo | get_alarm_info

Graziano Scalamera
committed
//================================================================
//================================================================

Graziano Scalamera
committed
// Attributes managed are:

Graziano Scalamera
committed
//================================================================
// alarmAudible | Tango::DevBoolean Scalar
// StatisticsResetTime | Tango::DevDouble Scalar
// alarm | Tango::DevString Spectrum ( max = 1024)
// alarmNormal | Tango::DevString Spectrum ( max = 10000)
// alarmUnacknowledged | Tango::DevString Spectrum ( max = 10000)
// alarmAcknowledged | Tango::DevString Spectrum ( max = 10000)
// alarmUnacknowledgedNormal | Tango::DevString Spectrum ( max = 10000)
// alarmShelved | Tango::DevString Spectrum ( max = 10000)
// alarmOutOfService | Tango::DevString Spectrum ( max = 10000)
// alarmSilenced | Tango::DevString Spectrum ( max = 10000)
// alarmList | Tango::DevString Spectrum ( max = 10000)
// alarmFrequency | Tango::DevDouble Spectrum ( max = 10000)
// alarmSummary | Tango::DevString Spectrum ( max = 10000)
// eventList | Tango::DevString Spectrum ( max = 10000)
// eventSummary | Tango::DevString Spectrum ( max = 10000)

Graziano Scalamera
committed
//================================================================

Graziano Scalamera
committed
{
/*----- PROTECTED REGION ID(AlarmHandler::namespace_starting) ENABLED START -----*/

Graziano Scalamera
committed
// static initializations
/*----- PROTECTED REGION END -----*/ // AlarmHandler::namespace_starting

Graziano Scalamera
committed
//--------------------------------------------------------
/**
* Method : AlarmHandler::AlarmHandler()

Graziano Scalamera
committed
* Description : Constructors for a Tango device
* implementing the classAlarmHandler

Graziano Scalamera
committed
*/
//--------------------------------------------------------
AlarmHandler::AlarmHandler(Tango::DeviceClass *cl, string &s)

Graziano Scalamera
committed
: TANGO_BASE_CLASS(cl, s.c_str())
{
/*----- PROTECTED REGION ID(AlarmHandler::constructor_1) ENABLED START -----*/

Graziano Scalamera
committed
init_device();
/*----- PROTECTED REGION END -----*/ // AlarmHandler::constructor_1

Graziano Scalamera
committed
}
//--------------------------------------------------------
AlarmHandler::AlarmHandler(Tango::DeviceClass *cl, const char *s)

Graziano Scalamera
committed
: TANGO_BASE_CLASS(cl, s)
{
/*----- PROTECTED REGION ID(AlarmHandler::constructor_2) ENABLED START -----*/

Graziano Scalamera
committed
init_device();
/*----- PROTECTED REGION END -----*/ // AlarmHandler::constructor_2

Graziano Scalamera
committed
}
//--------------------------------------------------------
AlarmHandler::AlarmHandler(Tango::DeviceClass *cl, const char *s, const char *d)

Graziano Scalamera
committed
: TANGO_BASE_CLASS(cl, s, d)
{
/*----- PROTECTED REGION ID(AlarmHandler::constructor_3) ENABLED START -----*/

Graziano Scalamera
committed
init_device();
/*----- PROTECTED REGION END -----*/ // AlarmHandler::constructor_3

Graziano Scalamera
committed
}
//--------------------------------------------------------
/**
* Method : AlarmHandler::delete_device()

Graziano Scalamera
committed
* Description : will be called at device destruction or at init command
*/
//--------------------------------------------------------
void AlarmHandler::delete_device()

Graziano Scalamera
committed
{
DEBUG_STREAM << "AlarmHandler::delete_device() " << device_name << endl;
/*----- PROTECTED REGION ID(AlarmHandler::delete_device) ENABLED START -----*/

Graziano Scalamera
committed
// Delete device allocated objects

Graziano Scalamera
committed
* unsubscribe events and release memory
*/
bool starting = Tango::Util::instance()->is_svr_starting();
bool shutting_down = Tango::Util::instance()->is_svr_shutting_down();
bool restarting = Tango::Util::instance()->is_device_restarting(device_name);
DEBUG_STREAM << __func__ << " starting="<<(int)starting << " shutting_down="<<(int)shutting_down<<" restarting="<<(int)restarting;

Graziano Scalamera
committed
abortflag = true;
DEBUG_STREAM << "AlarmHandler::delete_device(): after abortflag=true..." << endl;
Loading full blame...