[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