[Devel-conf] описание структуры бакенда на примере пользователей (was alterator backends and XML Schema)
Peter V. Saveliev
=?iso-8859-1?q?peet_=CE=C1_altlinux=2Eorg?=
Ср Окт 17 13:06:31 MSD 2007
В сообщении от Wednesday 17 October 2007 12:48:03 Alexander Bokovoy
написал(а):
> Stanislav Ievlev пишет:
> > Видимо проще начать с примеров:
> > Возьмем для примера пользователей.
> >
> > Внешне это выглядит так (пишу не на idl, а не некотором языке):
> > namespace users {
> > int max_uid;
> > int min_uid
> > [list] object account {
> > key string name; //имя будем считать ключевым параметром по
> > которому различаются объекты в списке
> > string gecos;
> > }
> > }
> >
> > Хотелось бы иметь возможность делать следующие запросы (описываю в
> > стиле языка запросов alterator, слово account не употребляю ибо пока
> > не понимаю куда вставить):
> >
> > /users action=list
> >
> > На выходе получаю список пользователей и некоторых атрибутов
> > ((name "test1" uid "111")
> > (name "test2" uid "222")
> > ... )
> >
> > /users name=test action read
> >
> > На выходе получаю значение атрибутов пользователя
> >
> > /users name=test action write gecos "zzz"
> > /users name=test action delete
> > /users name=test action new.
> >
> > Можно ли всё это как-то "вложить" в idl, принятые в Samba4?
>
> Выглядеть это будет примерно вот так. Специально не комментирую этот
> интерфейс, чтобы изучить, как он читается людьми, которые не имели дело
> с классическим DCE-RPC IDL.
>
> #include "idl_types.h"
> [ uuid("12345778-1234-abcd-ef00-0123456789ac"),
>
>
> version(1.0),
> helpstring("User administration service")
>
>
> ]
> interface users {
> typedef struct {
> string name;
> string gecos;
> uint32 uid;
> } user_account;
>
> typedef struct {
> uint32 count;
> [size_is(count)] users_account *users;
> } user_account_array;
>
> uint32 users_list(
> [out] user_account_array *users,
> [out] uint32 count
> );
>
> uint32 users_read(
> [in,ref] string *name,
> [out] user_account *account
> );
>
> uint32 users_write(
> [in,ref] string *name,
> [in,ref] user_account *account
> );
>
> uint32 users_delete(
> [in,ref] string *name
> );
>
> uint32 users_new(
> [in,ref] string *name,
> [out,ref] user_account *account
> );
> }
слова про xml и андроидов беру назад... ;)
--
Peter V. Saveliev
Подробная информация о списке рассылки devel-conf