ds

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

Синтаксис:

ds &

Опции:

Нет.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

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

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

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

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

ds_register()
Регистрация приложения в сервере данных.
ds_deregister()
Отмена регистрации приложения в сервере данных.
ds_create()
Создание переменной сервера данных.
ds_clear()
Удаление переменной сервера данных.
ds_set()
Установка переменной сервера данных.
ds_get()
Получение переменной сервера данных.
ds_flags()
Установка флагов для переменной сервера данных.

Примеры:

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


Note: В качестве интерфейса для работы с сервером данных в данном примере используется 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() и/или оно реагирует на изменения в данных при получении импульса или сигнала.

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

ds.png
Рисунок 1. Мониторинг печи средствами сервера данных

Сводная информация:

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

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино»

Тематические ссылки:

slinger

ds_clear(), ds_create(), ds_deregister(), ds_flags(), ds_get(), ds_register(), ds_set()




Предыдущий раздел: Сервисы