К вопросу о функциях работы с DB
День добрый!
Прилагаю копию моего предыдущего письма.
1)В последнем письме я предлагал еще две функции
int FDBPutEvent(CMessageEvent *event);
int FDBPutCommand(CMessageCommand *cmd);
2)На самом деле еще нужна функция, соответствующая посылке KeepAlive.
Давайте сделаем функцию
int FDBSetKeepAlive(CMessageKeepAlive *message);
class CMessageKeepAlive
{public:
//--
int MessageType;
char *SensorID; int LSensorID;
int SensorType;
time_t EventTime;
//-
};
Структуру я предлагал, кажется, в одном из первых писем.
3)Может быть, имеет смысл сделать отдельную функцию для полученмя статуса сенсора
(в нем в первом бите лежит критерий его живости):
int FDBGetSensorData(CSensor *s);
имя сенсора берется из структуры, в нее же записываются данные.
return 0 - if success
4)Нужна функция установок параметров для DB. Например, имеет смысл задавать интервал
времени прихода KeepAlive, при превышении которого в бит Alive статуса сенсора кладется 0.
Наверняка, потребуется что-то еще.
Все параметры в DB задаются по умолчанию, но их можно изменить данной функцией.
Давайте создадим функцию
int FDBSetParameter(int ParType, void *par,int parLength);
ParType=1 установка инетрвала времени для KeepAlive
par = (int*)DTMax
parLength=sizeof(int)
5)Для упрощения связи с библиотекой DB введен файл
...\Config\Funs.def
Файл содержит внутренние имена функций из DB, которые надо передавать функции
dlsym(...).
На данный момент файл имеет вид:
FDBGetSensors="_Z13FDBGetSensorsPiPP7CSensor"
FInitDBSensors="_Z14FInitDBSensorsPKc"
FDBGetEvents="_Z12FDBGetEventsPiPP13CMessageEventP20CMessageEventRequest"
FInitDBEvents="_Z13FInitDBEventsPKc"
FDBGetCommands="_Z14FDBGetCommandsPiPP15CMessageCommandP22CMessageCommandRequest"
FInitDBCommands="_Z15FInitDBCommandsPKc"
FDBPutCommand="_Z13FDBPutCommandP15CMessageCommand"
FDBPutEvent="_Z11FDBPutEventP13CMessageEvent"
FDBDeleteCommand="_Z16FDBDeleteCommandi"
FDBDeleteEvent="_Z14FDBDeleteEventi"
Просьба считывать имена функций из этого файла (если он присутствует)