[Devel-conf] описание структуры бакенда на примере пользователей (was alterator backends and XML Schema)
Alexander Bokovoy
=?iso-8859-1?q?ab_=CE=C1_altlinux=2Eorg?=
Ср Окт 17 12:48:03 MSD 2007
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
);
}
--
/ Alexander Bokovoy
Samba Team http://www.samba.org/
ALT Linux Team http://www.altlinux.org/
Midgard Project Ry http://www.midgard-project.org/
Подробная информация о списке рассылки devel-conf