Commit 8f7a389a authored by Pavel Vainerman's avatar Pavel Vainerman

(2.0): небольшие правки описаний

parent 3bb178a2
/* This file is part of the UniSet project
* Copyright (c) 2002 Free Software Foundation, Inc.
* Copyright (c) 2002 Pavel Vainerman
*
* This program 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 2 of the License, or
* (at your option) any later version.
*
* This program 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 this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
// --------------------------------------------------------------------------
/*! \file
* \brief "Пустая" реализация интерфейса работы с сообщениями
* \author Pavel Vainerman
*/
// --------------------------------------------------------------------------
#ifndef DefaultMessageInterface_H_
#define DefaultMessageInterface_H_
// --------------------------------------------------------------------------
#include "MessageInterface.h"
// --------------------------------------------------------------------------
class DefaultMessageInterface:
public MessageInterface
{
public:
DefaultMessageInterface(){}
virtual ~DefaultMessageInterface(){}
virtual std::string getMessage( UniSetTypes::MessageCode code ){ return ""; }
virtual bool isExist(UniSetTypes::MessageCode code){ return false; }
virtual UniSetTypes::MessageCode getCode( const std::string& msg ){ return UniSetTypes::DefaultMessageCode; }
virtual UniSetTypes::MessageCode getCodeByIdName( const std::string& name ){ return UniSetTypes::DefaultMessageCode; }
virtual std::ostream& printMessagesMap(std::ostream& os){ return os; }
};
// --------------------------------------------------------------------------
#endif
......@@ -30,8 +30,8 @@
(как фильтр от кратковременных изменений) с "накоплением времени".
Аналогия с песочными часами:
\par
Выставляете время(run).. устанавливаются в какое-то положение часы (rotate)...
песок сыплется... если весь пересыпался - срабатывает условие (check()==true).
Выставляете время 'run(msec)'.. устанавливаются в какое-то положение часы 'rotate(true)'...
песок сыплется... если весь пересыпался - срабатывает условие 'check()==true'.
Если во время работы условие изменилось (часы перевернули в обратную сторону), то
уже успевший пересыпаться песок, начинает пересыпаться в обратную сторону. Если опять
повернули часы... продолжает сыпаться опять (добвляясь к тому песку, что "не успел" высыпаться обратно).
......@@ -51,7 +51,7 @@
while( ....)
{
hg.rotate(in_overheating); // управляем состоянием песочных часов (прямой или обратный ход).
hg.rotate(in_overheating); // управляем состоянием песочных часов (прямой или обратный ход часов).
isOverheating = hg.check();
}
......
......@@ -5,6 +5,13 @@
#include <iostream>
#include "PassiveTimer.h"
// --------------------------------------------------------------------------
/*! Класс реализующий формирование импульсов заданной длительности(t1) и заданных пауз между ними(t0).
Класс пассивный, для работы требует постоянного вызова функции step().
Для получения текущего состояния "выхода" использовать out().
Формирование импульсов включается функцией run() либо функцией set(true).
Вызов reset() тоже включает формирование импульсов.
Выключается формирование вызовом set(false).
*/
class Pulse
{
public:
......@@ -58,6 +65,7 @@ class Pulse
}
inline bool out(){ return ostate; }
inline void set( bool state )
{
isOn = state;
......
......@@ -27,19 +27,26 @@
// ---------------------------------------------------------------------------
#include <string>
// ---------------------------------------------------------------------------
/*! Защита от поторного запуска программы(процесса).
При вызове lock(lockFile) в файл lockFile записывается pid текущего процесса.
При вызове isLocked() проверяется состояние процесса по его pid (записанному в файл).
unlock() - удаляет файл.
\warning Код не переносимый, т.к. рассчитан на наличие каталога /proc,
по которому проверяется статус процесса (по pid).
*/
class RunLock
{
public:
RunLock();
~RunLock();
static bool isLocked(const std::string& lockName); //, char* **argv );
static bool lock(const std::string& lockName);
static bool unlock(const std::string& lockName);
static bool isLocked(const std::string& lockFile); //, char* **argv );
static bool lock(const std::string& lockFile);
static bool unlock(const std::string& lockFile);
protected:
};
// ----------------------------------------------------------------------------
#endif
......@@ -49,11 +49,7 @@ namespace UniversalIO
}
// -----------------------------------------------------------------------------------------
//#define REPEAT_TIMEOUT 100 // [мс] пауза между попытками вызвать удаленную функцию объекта
//#define REPEAT_COUNT 5 // количество попыток, после которого вырабатывается TimeOut
#define IO_THROW_EXCEPTIONS UniSetTypes::TimeOut,UniSetTypes::IOBadParam,UniSetTypes::ORepFailed
// -----------------------------------------------------------------------------------------
/*!
* \class UniversalInterface
......@@ -94,7 +90,7 @@ class UniversalInterface
//! Выставление состояния датчика
void setValue ( UniSetTypes::ObjectId id, long value, UniSetTypes::ObjectId node ) throw(IO_THROW_EXCEPTIONS);
void setValue ( UniSetTypes::ObjectId id, long value);
void setValue ( UniSetTypes::ObjectId id, long value );
void setValue ( IOController_i::SensorInfo& si, long value, UniSetTypes::ObjectId supplier );
void fastSetValue( IOController_i::SensorInfo& si, long value, UniSetTypes::ObjectId supplier );
......@@ -112,7 +108,7 @@ class UniversalInterface
//! Заказ информации об изменении дискретного датчика
void askThreshold ( UniSetTypes::ObjectId sensorId, UniSetTypes::ThresholdId tid,
void askThreshold( UniSetTypes::ObjectId sensorId, UniSetTypes::ThresholdId tid,
UniversalIO::UIOCommand cmd,
CORBA::Long lowLimit=0, CORBA::Long hiLimit=0, CORBA::Long sensibility=0,
UniSetTypes::ObjectId backid = UniSetTypes::DefaultObjectId );
......@@ -216,16 +212,14 @@ class UniversalInterface
UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() ); // used exist
bool waitWorking( UniSetTypes::ObjectId id, int msec, int pause=3000,
UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() ); // used getState
UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() ); // used getValue
inline void setCacheMaxSize( unsigned int newsize)
{
rcache.setMaxSize(newsize);
}
/*!
\todo Убедится в уникальности возвращаемого результата hash(...)
*/
/*! Кэш ссылок на объекты */
class CacheOfResolve
{
public:
......@@ -237,7 +231,7 @@ class UniversalInterface
void cache(UniSetTypes::ObjectId id, UniSetTypes::ObjectId node, UniSetTypes::ObjectVar ptr);
void erase(UniSetTypes::ObjectId id, UniSetTypes::ObjectId node);
inline void setMaxSize( unsigned int ms)
inline void setMaxSize( unsigned int ms )
{
MaxSize = ms;
};
......@@ -246,6 +240,7 @@ class UniversalInterface
protected:
CacheOfResolve(){};
private:
bool clean(); /*!< функция очистки кэш-а от старых ссылок */
......@@ -260,7 +255,7 @@ class UniversalInterface
*/
struct Info
{
Info( UniSetTypes::ObjectVar ptr, time_t tm=0):
Info( UniSetTypes::ObjectVar ptr, time_t tm=0 ):
ptr(ptr)
{
if(!tm)
......@@ -306,6 +301,7 @@ class UniversalInterface
void initBackId( UniSetTypes::ObjectId backid );
protected:
std::string set_err(const std::string& pre, UniSetTypes::ObjectId id, UniSetTypes::ObjectId node);
private:
void init();
......
......@@ -24,7 +24,6 @@
// --------------------------------------------------------------------------
#include <dirent.h>
#include "RunLock.h"
#include "Exceptions.h"
#include "Configuration.h"
// --------------------------------------------------------------------------
using namespace UniSetTypes;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment