[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