Recent Changes - Search:

Accueil

OpenSSL

SyncML

Apache Portable Runtime

Libxml2

Net-snmp

CUrl

Boost

Perl

ZLib

Samba

VPN

Serveurs de messagerie

edit

APR/APR-bucket-brigade

APR.APR-bucket-brigade History

Hide minor edits - Show changes to markup

October 24, 2007, at 08:10 PM by Arnaud Grandville -
Changed line 48 from:
to:
	apr_pool_destroy(p);
October 24, 2007, at 08:06 PM by Arnaud Grandville -
Changed lines 1-2 from:

Les buckets est un concept essentiel pour la maitrise de l'écriture de modules Apache.\\

to:

Les buckets sont un concept essentiel pour la maitrise de l'écriture de modules Apache.\\

Changed line 6 from:

Les buckets sont des containers de données (Strings, Sockets, Fichiers, etc) organisés dans une liste doublement chaînée appelée Brigade Bucket Brigades: Data Management for Apache 2.0. Le principe est de ne plus solliciter l'OS par de nombreux Malloc et Free consommateurs en ressources mais de s'appuyer sur une couche d'abstraction gérant les ressources sous jacentes pour le mieux. Par exemple le split d'une chaine de caractères en deux buckets n'a aucune incidence sur la chaine de caractères mais modifie les références des buckets vers celle-ci en modifiant les pointeurs de début et les longueurs de chacun.\\

to:

Les buckets sont des containers de données (Strings, Sockets, Fichiers, etc) organisés dans une liste doublement chaînée appelée Brigade Bucket Brigades: Data Management for Apache 2.0. Le principe est de ne plus solliciter l'OS par de nombreux Malloc et Free consommateurs en ressources mais de s'appuyer sur une couche d'abstraction gérant les ressources sous-jacentes pour le mieux. Par exemple le split d'une chaine de caractères en deux buckets n'a aucune incidence sur la chaine de caractères elle même, mais ne modifie que les références des buckets vers celle-ci en modifiant les pointeurs de début et les longueurs de chacun.\\

Changed line 10 from:

Les brigades sont forts pratiques pour le traitement de chaines, voici un exemple faisant la découpe par bloc de trois caractères de deux chaines.

to:

Les brigades sont forts pratiques pour le traitement de chaines, voici un exemple trivial faisant la découpe par bloc de trois caractères de deux chaines.

October 24, 2007, at 08:04 PM by Arnaud Grandville -
Added lines 1-53:

Les buckets est un concept essentiel pour la maitrise de l'écriture de modules Apache.

L'implémentation est fournie avec les libaires Apache Portable Runtime.


Les buckets sont des containers de données (Strings, Sockets, Fichiers, etc) organisés dans une liste doublement chaînée appelée Brigade Bucket Brigades: Data Management for Apache 2.0. Le principe est de ne plus solliciter l'OS par de nombreux Malloc et Free consommateurs en ressources mais de s'appuyer sur une couche d'abstraction gérant les ressources sous jacentes pour le mieux. Par exemple le split d'une chaine de caractères en deux buckets n'a aucune incidence sur la chaine de caractères mais modifie les références des buckets vers celle-ci en modifiant les pointeurs de début et les longueurs de chacun.

Les Brigades étant gérées dans un pool Apache, profitent de l'assurance d'être correctement nettoyées à la fin de l'instanciation du Module. Par principe, la bridage est toujours crée par l'appellant et nettoyé par lui même, la procédure appelée n'ayant pas de visibilité sur la durée de vie des données ne doit jamais les désallouer.

Les brigades sont forts pratiques pour le traitement de chaines, voici un exemple faisant la découpe par bloc de trois caractères de deux chaines.

(:source lang=C :) void Show(apr_bucket *e){

	const char* buf ;
	size_t bytes ;
	apr_bucket_read(e, &buf, &bytes, APR_BLOCK_READ);
	printf("%s\n",buf);

}

int main(int argc, char* argv[]) {

	apr_bucket_brigade *bb;
	apr_bucket_alloc_t *ba
	apr_pool_t *p;


	apr_initialize();
	apr_pool_create(&p, NULL);


	ba = apr_bucket_alloc_create(p);
	bb = apr_brigade_create(p, ba);
	APR_BRIGADE_INSERT_TAIL(bb,apr_bucket_transient_create("0123456789", 10, ba));
	APR_BRIGADE_INSERT_TAIL(bb,apr_bucket_transient_create("ABCDEFGHIJ", 10, ba));


	for ( b = APR_BRIGADE_FIRST(bb); b != APR_BRIGADE_SENTINEL(bb); b = APR_BUCKET_NEXT(b) ) {
		Show(b);
		apr_bucket_split(b,3) ;
	};



	apr_brigade_destroy(bb);
	apr_bucket_alloc_destroy(ba);

	return 0;

}

(:sourcend:)

Edit - History - Print - Recent Changes - Search
Page last modified on October 24, 2007, at 08:10 PM