ds

Сервер данных, обеспечивающий поддержание совместного используемого состояния между процессами

Синтаксис:

ds &

Поддерживаемые платформы:

Neutrino

Опции:

Нет.


Описание:

Сервер данных представляет собой процесс, обеспечивающий поддержание совместного использования состояния между другими процессами подобно глобальной среде. Возможность хранения или извлечения данных для процессов обеспечивается с помощью набора вызовов из библиотек сервера данных. Сервер данных можно использовать для реализации различных задач. В частности доступ к нему можно осуществлять с web-сервера Slinger с поддержкой динамического HTML. Для HTTP-сервера slinger используются сервер данных и библиотека сервера данных.

Для хранения данных используются имена переменных, обозначающие буферы данных. Все переменные являются глобальными и доступ к ним может осуществляться из любого процесса (доступ не ограничивается), поэтому в сервере данных может храниться только один экземпляр переменной (имя).

Библиотека сервера данных

Библиотека сервера данных состоит из следующих функций, описанных в документе Руководство по библиотекам:

ds_register()

Регистрация приложения в сервере данных.

ds_deregister()

Отмена регистрации приложения в сервере данных.

ds_create()

Создание переменной сервера данных.

ds_clear()

Удаление переменной сервера данных.

ds_set()

Установка переменной сервера данных.

ds_get()

Получение переменной сервера данных.

ds_flags()

Установка флагов для переменной сервера данных.


Примеры:

Ниже приведен простой (и нефункциональный) пример мониторинга температуры печи с удаленного клиента:

Примечание. В качестве интерфейса для работы с сервером данных в данном примере используется HTML, но набор поддерживаемых интерфейсов не ограничивается только интерфейсом HTML.

Ниже приведен пример отображения маркеров qnxvar на web-странице на стороне клиента:

<!--Show the current oven temperature-->

<!--#qnxvar format="<P>The oven temperature is %s degrees F." -->

<!--#qnxvar read="oven1 5" -->

Если температура печи в настоящее время составляет 500 градусов по шкале Фаренгейта, то выходные данные будут представлены следующим образом:

<P>The oven temperature is 500 degrees F.

Ниже приведен пример приложения, обеспечивающего мониторинг печи:

// Данная программа обеспечивает получение температуры печи

// с последующим обновлением значения переменной в сервере данных,

// считываемой web-сервером Slinger при наличии соответствующего маркера

// на HTML-странице, обслуживаемой web-сервером Slinger.

#include <stdlib.h>

#include <stdio.h>

#include <ds.h>

#include <string.h>

#define MAXLEN 4

int main(void)

{

ds_t ds_descriptor;

char ovenID[7], oven_temp[MAXLEN], flag=0;

int length = MAXLEN;

ds_descriptor = ds_register();

if(ds_descriptor==-1){

perror("ds_register");

exit(1);

}

strcpy(ovenID,"oven1");

if(ds_create(ds_descriptor, ovenID, flag, 0)==-1){

perror("ds_create");

exit(1);

}

// Получение начальной температуры печи

// для инициализации переменной сервера данных

// Копирование этого значения в переменную oven_temp с помощью функции strcpy.

ds_set(ds_descriptor,ovenID,oven_temp,length);

// Обновление температуры через определенный интервал.

while(1)

// Может потребоваться возможность принятия решения для выхода из программы.

{

// Получение текущей температуры печи.

// Копирование этих временных показаний в переменную oven_temp с помощью функции strcpy.

ds_set(ds_descriptor,ovenID,oven_temp,length);

// Ожидание на протяжении предварительно определенного периода времени.

}

ds_clear(ds_descriptor,ovenID);

ds_deregister(ds_descriptor);

}


На HTML-странице с результатами отображается текущее значение температуры, сохраненное в сервере данных.

После завершения процесса переменная сервера данных становится недоступной, поскольку значением аргумента флаг, переданного для функции ds_create(), было значение 0.

Если для данного приложения требуется обеспечить передачу определенных данных из текста HTML, то с помощью вызова функции ds_create() создается еще одна переменная. Данная переменная используется для передачи информации в приложение с помощью маркера qnxvar write в тексте HTML. Для передачи данных в приложение производится вызов функции ds_get() и/или оно реагирует на изменения в данных при получении импульса или сигнала.

Ниже приведено описание данной процедуры:

Пример с печью


Мониторинг печи через сервер данных

Сводная информация: Для получения информации о маркере qnxvar см. описание утилиты slinger.