X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-raphf;a=blobdiff_plain;f=v1.1.x%2Fphp__raphf_8c.html;fp=v1.1.x%2Fphp__raphf_8c.html;h=653292b5ba7f17cfbc47fdcdcb51ed35844f1428;hp=0000000000000000000000000000000000000000;hb=c5090093b79ea6c9fe816af5d3c948951e3b2860;hpb=7db0710f32e0c6faa5b61b868b27e6e92ad49825 diff --git a/v1.1.x/php__raphf_8c.html b/v1.1.x/php__raphf_8c.html new file mode 100644 index 0000000..653292b --- /dev/null +++ b/v1.1.x/php__raphf_8c.html @@ -0,0 +1,956 @@ + + + + + + +Resource and persistent handle factory API: php_raphf.c File Reference + + + + + + + + + +
+
+ + + + + + + +
+
Resource and persistent handle factory API +
+
A facility to manage possibly persistent resources with a comprehensible API. Provides simliar functionality like the zend_list API, but with more flexiblity and freedom.
+
+
+ + + + + + +
+ All Data Structures Files Functions Variables Typedefs Macros
+ + +
+ +
+ +
+
+
+Macros | +Typedefs | +Functions | +Variables
+
+
php_raphf.c File Reference
+
+
+
#include "php.h"
+#include "php_ini.h"
+#include "ext/standard/info.h"
+#include "php_raphf.h"
+
+ + + + + +

+Macros

#define PHP_RAPHF_G   (&raphf_globals)
 
#define PHP_RAPHF_DEBUG_PHANDLES   0
 
+ + + +

+Typedefs

typedef int STATUS
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

php_resource_factory_tphp_resource_factory_init (php_resource_factory_t *f, php_resource_factory_ops_t *fops, void *data, void(*dtor)(void *data))
 Initialize a resource factory. More...
 
unsigned php_resource_factory_addref (php_resource_factory_t *rf)
 Increase the refcount of the resource factory. More...
 
void php_resource_factory_dtor (php_resource_factory_t *f)
 Destroy the resource factory. More...
 
void php_resource_factory_free (php_resource_factory_t **f)
 Destroy and free the resource factory. More...
 
void * php_resource_factory_handle_ctor (php_resource_factory_t *f, void *init_arg)
 Construct a resource by the resource factory f. More...
 
void * php_resource_factory_handle_copy (php_resource_factory_t *f, void *handle)
 Create a copy of the resource handle. More...
 
void php_resource_factory_handle_dtor (php_resource_factory_t *f, void *handle)
 Destroy (and free) the resource. More...
 
PHP_RAPHF_API STATUS php_persistent_handle_provide (const char *name_str, size_t name_len, php_resource_factory_ops_t *fops, void *data, void(*dtor)(void *))
 Register a persistent handle provider in MINIT. More...
 
php_persistent_handle_factory_tphp_persistent_handle_concede (php_persistent_handle_factory_t *a, const char *name_str, size_t name_len, const char *ident_str, size_t ident_len, php_persistent_handle_wakeup_t wakeup, php_persistent_handle_retire_t retire)
 Retrieve a persistent handle factory at runtime. More...
 
PHP_RAPHF_API void php_persistent_handle_abandon (php_persistent_handle_factory_t *a)
 Abandon the persistent handle factory. More...
 
void * php_persistent_handle_acquire (php_persistent_handle_factory_t *a, void *init_arg)
 Acquire a persistent handle. More...
 
void * php_persistent_handle_accrete (php_persistent_handle_factory_t *a, void *handle)
 
void php_persistent_handle_release (php_persistent_handle_factory_t *a, void *handle)
 Release a persistent handle. More...
 
void php_persistent_handle_cleanup (const char *name_str, size_t name_len, const char *ident_str, size_t ident_len)
 
HashTable * php_persistent_handle_statall (HashTable *ht)
 
php_resource_factory_ops_tphp_persistent_handle_get_resource_factory_ops (void)
 
 ZEND_END_ARG_INFO ()
 
 STD_PHP_INI_ENTRY ("raphf.persistent_handle.limit","-1", PHP_INI_SYSTEM, OnUpdateLong, persistent_handle.limit, zend_raphf_globals, raphf_globals) static HashTable *php_persistent_handles_global_hash
 
 PHP_MINIT_FUNCTION (raphf)
 
 PHP_MSHUTDOWN_FUNCTION (raphf)
 
 PHP_MINFO_FUNCTION (raphf)
 
+ + + + + +

+Variables

struct
+php_persistent_handle_globals 
persistent_handle
 
zend_module_entry raphf_module_entry
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define PHP_RAPHF_DEBUG_PHANDLES   0
+
+ +
+
+ +
+
+ + + + +
#define PHP_RAPHF_G   (&raphf_globals)
+
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef int STATUS
+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
PHP_MINFO_FUNCTION (raphf )
+
+ +
+
+ +
+
+ + + + + + + + +
PHP_MINIT_FUNCTION (raphf )
+
+ +
+
+ +
+
+ + + + + + + + +
PHP_MSHUTDOWN_FUNCTION (raphf )
+
+ +
+
+ +
+
+ + + + + + + + +
PHP_RAPHF_API void php_persistent_handle_abandon (php_persistent_handle_factory_ta)
+
+ +

Abandon the persistent handle factory.

+

Destroy a php_persistent_handle_factory created by php_persistent_handle_concede(). If the memory for the factory was allocated, it will automatically be free'd.

+
Parameters
+ + +
athe persistent handle factory to destroy
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* php_persistent_handle_accrete (php_persistent_handle_factory_ta,
void * handle 
)
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* php_persistent_handle_acquire (php_persistent_handle_factory_ta,
void * init_arg 
)
+
+ +

Acquire a persistent handle.

+

That is, either re-use a resource from the free list or create a new handle.

+

If a handle is acquired from the free list, the php_persistent_handle_wakeup() callback attached to this persistent handle factory is executed for that handle.

+
Parameters
+ + + +
athe persistent handle factory
init_argthe init_arg for php_resource_factory_handle_ctor()
+
+
+
Returns
the acquired resource
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void php_persistent_handle_cleanup (const char * name_str,
size_t name_len,
const char * ident_str,
size_t ident_len 
)
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
php_persistent_handle_factory_t* php_persistent_handle_concede (php_persistent_handle_factory_ta,
const char * name_str,
size_t name_len,
const char * ident_str,
size_t ident_len,
php_persistent_handle_wakeup_t wakeup,
php_persistent_handle_retire_t retire 
)
+
+ +

Retrieve a persistent handle factory at runtime.

+

If a persistent handle provider has been registered for name_str, a new php_persistent_handle_factory creating resources in the ident_str namespace will be constructed.

+

The wakeup routine wakeup and the retire routine retire will be assigned to the new php_persistent_handle_factory.

+
Parameters
+ + + + + + + + +
apointer to a factory; allocated on the heap if NULL
name_strthe provider name, e.g. "http\Client\Curl"
name_lenthe provider name length, e.g. strlen("http\Client\Curl")
ident_strthe subsidiary namespace, e.g. "php.net:80"
ident_lenthe subsidiary namespace lenght, e.g. strlen("php.net:80")
wakeupany persistent handle wakeup routine
retireany persistent handle retire routine
+
+
+
Returns
a or an allocated persistent handle factory
+ +
+
+ +
+
+ + + + + + + + +
php_resource_factory_ops_t* php_persistent_handle_get_resource_factory_ops (void )
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PHP_RAPHF_API STATUS php_persistent_handle_provide (const char * name_str,
size_t name_len,
php_resource_factory_ops_tfops,
void * data,
void(*)(void *) dtor 
)
+
+ +

Register a persistent handle provider in MINIT.

+

Registers a factory provider for name_str with fops resource factory ops. Call this in your MINIT.

+

A php_resource_factory will be created with fops, data and dtor and will be stored together with a php_persistent_handle_list in the global raphf hash.

+

A php_persistent_handle_factory can then be retrieved by php_persistent_handle_concede() at runtime.

+
Parameters
+ + + + + + +
name_strthe provider name, e.g. "http\Client\Curl"
name_lenthe provider name length, e.g. strlen("http\Client\Curl")
fopsthe resource factory ops
dataopaque user data
dtordata destructor
+
+
+
Returns
SUCCESS/FAILURE
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void php_persistent_handle_release (php_persistent_handle_factory_ta,
void * handle 
)
+
+ +

Release a persistent handle.

+

That is, either put it back into the free list for later re-use or clean it up with php_resource_factory_handle_dtor().

+

If a handle is put back into the free list, the php_persistent_handle_retire() callback attached to this persistent handle factory is executed for that handle.

+
Parameters
+ + + +
athe persistent handle factory
handlethe handle to release
+
+
+ +
+
+ +
+
+ + + + + + + + +
HashTable* php_persistent_handle_statall (HashTable * ht)
+
+ +
+
+ +
+
+ + + + + + + + +
unsigned php_resource_factory_addref (php_resource_factory_trf)
+
+ +

Increase the refcount of the resource factory.

+
Parameters
+ + +
rfthe resource factory
+
+
+
Returns
the new refcount
+ +
+
+ +
+
+ + + + + + + + +
void php_resource_factory_dtor (php_resource_factory_tf)
+
+ +

Destroy the resource factory.

+

If the factory's refcount reaches 0, the dtor for data is called.

+
Parameters
+ + +
fthe resource factory
+
+
+ +

Referenced by php_persistent_handle_provide(), and php_resource_factory_free().

+ +
+
+ +
+
+ + + + + + + + +
void php_resource_factory_free (php_resource_factory_t ** f)
+
+ +

Destroy and free the resource factory.

+

Calls php_resource_factory_dtor() and frees \æ f if the factory's refcount reached 0.

+
Parameters
+ + +
fthe resource factory
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* php_resource_factory_handle_copy (php_resource_factory_tf,
void * handle 
)
+
+ +

Create a copy of the resource handle.

+
Parameters
+ + + +
fthe resource factory
handlethe resource to copy
+
+
+
Returns
the copy
+ +

Referenced by php_persistent_handle_accrete().

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* php_resource_factory_handle_ctor (php_resource_factory_tf,
void * init_arg 
)
+
+ +

Construct a resource by the resource factory f.

+
Parameters
+ + + +
fthe resource factory
init_argfor the resource constructor
+
+
+
Returns
the new resource
+ +

Referenced by php_persistent_handle_acquire().

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void php_resource_factory_handle_dtor (php_resource_factory_tf,
void * handle 
)
+
+ +

Destroy (and free) the resource.

+
Parameters
+ + + +
fthe resource factory
handlethe resource to destroy
+
+
+ +

Referenced by php_persistent_handle_release().

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
php_resource_factory_t* php_resource_factory_init (php_resource_factory_tf,
php_resource_factory_ops_tfops,
void * data,
void(*)(void *data) dtor 
)
+
+ +

Initialize a resource factory.

+

Usually called by php_http_persistent_handle_provide().

+
Parameters
+ + + + + +
fthe factory to initialize; if NULL allocated on the heap
fopsthe resource ops to assign to the factory
dataopaque user data; may be NULL
dtora destructor for the data; may be NULL
+
+
+
Returns
f or an allocated resource factory
+ +

Referenced by php_persistent_handle_provide().

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STD_PHP_INI_ENTRY ("raphf.persistent_handle.limit" ,
"-1" ,
PHP_INI_SYSTEM ,
OnUpdateLong ,
persistent_handle. limit,
zend_raphf_globals ,
raphf_globals  
)
+
+ +
+
+ +
+
+ + + + + + + +
ZEND_END_ARG_INFO ()
+
+ +
+
+

Variable Documentation

+ +
+
+ + + + +
struct php_persistent_handle_globals persistent_handle
+
+ +
+
+ +
+
+ + + + +
zend_module_entry raphf_module_entry
+
+Initial value:
= {
+
STANDARD_MODULE_HEADER,
+
"raphf",
+
raphf_functions,
+
PHP_MINIT(raphf),
+
PHP_MSHUTDOWN(raphf),
+
NULL,
+
NULL,
+
PHP_MINFO(raphf),
+
PHP_RAPHF_VERSION,
+
ZEND_MODULE_GLOBALS(raphf),
+
PHP_GINIT(raphf),
+
PHP_GSHUTDOWN(raphf),
+
NULL,
+
STANDARD_MODULE_PROPERTIES_EX
+
}
+
+
+
+
+ + + +