1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns=
"http://www.w3.org/1999/xhtml">
4 <meta http-equiv=
"Content-Type" content=
"text/xhtml;charset=UTF-8"/>
5 <meta http-equiv=
"X-UA-Compatible" content=
"IE=9"/>
6 <meta name=
"generator" content=
"Doxygen 1.8.5"/>
7 <title>Resource and persistent handle factory API: php_raphf.h File Reference
</title>
8 <link href=
"tabs.css" rel=
"stylesheet" type=
"text/css"/>
9 <script type=
"text/javascript" src=
"jquery.js"></script>
10 <script type=
"text/javascript" src=
"dynsections.js"></script>
11 <link href=
"navtree.css" rel=
"stylesheet" type=
"text/css"/>
12 <script type=
"text/javascript" src=
"resize.js"></script>
13 <script type=
"text/javascript" src=
"navtree.js"></script>
14 <script type=
"text/javascript">
15 $(document).ready(initResizable);
16 $(window).load(resizeHeight);
18 <link href=
"search/search.css" rel=
"stylesheet" type=
"text/css"/>
19 <script type=
"text/javascript" src=
"search/search.js"></script>
20 <script type=
"text/javascript">
21 $(document).ready(function() { searchBox.OnSelectItem(
0); });
23 <link href=
"doxygen.css" rel=
"stylesheet" type=
"text/css" />
26 <div id=
"top"><!-- do not remove this div, it is closed by doxygen! -->
28 <table cellspacing=
"0" cellpadding=
"0">
30 <tr style=
"height: 56px;">
31 <td id=
"projectlogo"><img alt=
"Logo" src=
"raphf.png"/></td>
32 <td style=
"padding-left: 0.5em;">
33 <div id=
"projectname">Resource and persistent handle factory API
35 <div id=
"projectbrief">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.
</div>
41 <!-- end header part -->
42 <!-- Generated by Doxygen 1.8.5 -->
43 <script type=
"text/javascript">
44 var searchBox = new SearchBox(
"searchBox",
"search",false,'Search');
46 <div id=
"navrow1" class=
"tabs">
48 <li><a href=
"index.html"><span>Main
 Page
</span></a></li>
49 <li><a href=
"annotated.html"><span>Data
 Structures
</span></a></li>
50 <li class=
"current"><a href=
"files.html"><span>Files
</span></a></li>
52 <div id=
"MSearchBox" class=
"MSearchBoxInactive">
54 <img id=
"MSearchSelect" src=
"search/mag_sel.png"
55 onmouseover=
"return searchBox.OnSearchSelectShow()"
56 onmouseout=
"return searchBox.OnSearchSelectHide()"
58 <input type=
"text" id=
"MSearchField" value=
"Search" accesskey=
"S"
59 onfocus=
"searchBox.OnSearchFieldFocus(true)"
60 onblur=
"searchBox.OnSearchFieldFocus(false)"
61 onkeyup=
"searchBox.OnSearchFieldChange(event)"/>
62 </span><span class=
"right">
63 <a id=
"MSearchClose" href=
"javascript:searchBox.CloseResultsWindow()"><img id=
"MSearchCloseImg" border=
"0" src=
"search/close.png" alt=
""/></a>
69 <div id=
"navrow2" class=
"tabs2">
71 <li><a href=
"files.html"><span>File
 List
</span></a></li>
72 <li><a href=
"globals.html"><span>Globals
</span></a></li>
76 <div id=
"side-nav" class=
"ui-resizable side-nav-resizable">
78 <div id=
"nav-tree-contents">
79 <div id=
"nav-sync" class=
"sync"></div>
82 <div id=
"splitbar" style=
"-moz-user-select:none;"
83 class=
"ui-resizable-handle">
86 <script type=
"text/javascript">
87 $(document).ready(function(){initNavTree('php__raphf_8h.html','');});
89 <div id=
"doc-content">
90 <!-- window showing the filter options -->
91 <div id=
"MSearchSelectWindow"
92 onmouseover=
"return searchBox.OnSearchSelectShow()"
93 onmouseout=
"return searchBox.OnSearchSelectHide()"
94 onkeydown=
"return searchBox.OnSearchSelectKey(event)">
95 <a class=
"SelectItem" href=
"javascript:void(0)" onclick=
"searchBox.OnSelectItem(0)"><span class=
"SelectionMark"> </span>All
</a><a class=
"SelectItem" href=
"javascript:void(0)" onclick=
"searchBox.OnSelectItem(1)"><span class=
"SelectionMark"> </span>Data Structures
</a><a class=
"SelectItem" href=
"javascript:void(0)" onclick=
"searchBox.OnSelectItem(2)"><span class=
"SelectionMark"> </span>Files
</a><a class=
"SelectItem" href=
"javascript:void(0)" onclick=
"searchBox.OnSelectItem(3)"><span class=
"SelectionMark"> </span>Functions
</a><a class=
"SelectItem" href=
"javascript:void(0)" onclick=
"searchBox.OnSelectItem(4)"><span class=
"SelectionMark"> </span>Variables
</a><a class=
"SelectItem" href=
"javascript:void(0)" onclick=
"searchBox.OnSelectItem(5)"><span class=
"SelectionMark"> </span>Typedefs
</a></div>
97 <!-- iframe showing the search results (closed by default) -->
98 <div id=
"MSearchResultsWindow">
99 <iframe src=
"javascript:void(0)" frameborder=
"0"
100 name=
"MSearchResults" id=
"MSearchResults">
105 <div class=
"summary">
106 <a href=
"#nested-classes">Data Structures
</a> |
107 <a href=
"#typedef-members">Typedefs
</a> |
108 <a href=
"#func-members">Functions
</a> </div>
109 <div class=
"headertitle">
110 <div class=
"title">php_raphf.h File Reference
</div> </div>
112 <div class=
"contents">
114 <p><a href=
"php__raphf_8h_source.html">Go to the source code of this file.
</a></p>
115 <table class=
"memberdecls">
116 <tr class=
"heading"><td colspan=
"2"><h2 class=
"groupheader"><a name=
"nested-classes"></a>
117 Data Structures
</h2></td></tr>
118 <tr class=
"memitem:structphp__resource__factory__ops"><td class=
"memItemLeft" align=
"right" valign=
"top">struct
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#structphp__resource__factory__ops">php_resource_factory_ops
</a></td></tr>
119 <tr class=
"memdesc:structphp__resource__factory__ops"><td class=
"mdescLeft"> </td><td class=
"mdescRight">The resource ops consisting of a ctor, a copy ctor and a dtor.
<a href=
"php__raphf_8h.html#structphp__resource__factory__ops">More...
</a><br/></td></tr>
120 <tr class=
"separator:structphp__resource__factory__ops"><td class=
"memSeparator" colspan=
"2"> </td></tr>
121 <tr class=
"memitem:"><td class=
"memItemLeft" align=
"right" valign=
"top">struct
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"structphp__resource__factory.html">php_resource_factory
</a></td></tr>
122 <tr class=
"memdesc:"><td class=
"mdescLeft"> </td><td class=
"mdescRight">The resource factory.
<a href=
"structphp__resource__factory.html#details">More...
</a><br/></td></tr>
123 <tr class=
"separator:"><td class=
"memSeparator" colspan=
"2"> </td></tr>
124 <tr class=
"memitem:structphp__persistent__handle__list"><td class=
"memItemLeft" align=
"right" valign=
"top">struct
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__list">php_persistent_handle_list
</a></td></tr>
125 <tr class=
"memdesc:structphp__persistent__handle__list"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Persistent handles storage.
<a href=
"php__raphf_8h.html#structphp__persistent__handle__list">More...
</a><br/></td></tr>
126 <tr class=
"separator:structphp__persistent__handle__list"><td class=
"memSeparator" colspan=
"2"> </td></tr>
127 <tr class=
"memitem:structphp__persistent__handle__provider"><td class=
"memItemLeft" align=
"right" valign=
"top">struct
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__provider">php_persistent_handle_provider
</a></td></tr>
128 <tr class=
"memdesc:structphp__persistent__handle__provider"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Definition of a persistent handle provider.
<a href=
"php__raphf_8h.html#structphp__persistent__handle__provider">More...
</a><br/></td></tr>
129 <tr class=
"separator:structphp__persistent__handle__provider"><td class=
"memSeparator" colspan=
"2"> </td></tr>
130 <tr class=
"memitem:structphp__persistent__handle__factory"><td class=
"memItemLeft" align=
"right" valign=
"top">struct
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__factory">php_persistent_handle_factory
</a></td></tr>
131 <tr class=
"memdesc:structphp__persistent__handle__factory"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Definition of a persistent handle factory.
<a href=
"php__raphf_8h.html#structphp__persistent__handle__factory">More...
</a><br/></td></tr>
132 <tr class=
"separator:structphp__persistent__handle__factory"><td class=
"memSeparator" colspan=
"2"> </td></tr>
133 <tr class=
"memitem:structphp__persistent__handle__factory_8ident"><td class=
"memItemLeft" align=
"right" valign=
"top">struct
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__factory_8ident">php_persistent_handle_factory.ident
</a></td></tr>
134 <tr class=
"memdesc:structphp__persistent__handle__factory_8ident"><td class=
"mdescLeft"> </td><td class=
"mdescRight">The ident for which this factory manages resources.
<a href=
"php__raphf_8h.html#structphp__persistent__handle__factory_8ident">More...
</a><br/></td></tr>
135 <tr class=
"separator:structphp__persistent__handle__factory_8ident"><td class=
"memSeparator" colspan=
"2"> </td></tr>
136 </table><table class=
"memberdecls">
137 <tr class=
"heading"><td colspan=
"2"><h2 class=
"groupheader"><a name=
"typedef-members"></a>
138 Typedefs
</h2></td></tr>
139 <tr class=
"memitem:a1c5d952a60130d2a68c8d68db2bebbd8"><td class=
"memItemLeft" align=
"right" valign=
"top">typedef void *(*
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a1c5d952a60130d2a68c8d68db2bebbd8">php_resource_factory_handle_ctor_t
</a> )(void *opaque, void *init_arg)
</td></tr>
140 <tr class=
"memdesc:a1c5d952a60130d2a68c8d68db2bebbd8"><td class=
"mdescLeft"> </td><td class=
"mdescRight">A resource constructor.
<a href=
"#a1c5d952a60130d2a68c8d68db2bebbd8">More...
</a><br/></td></tr>
141 <tr class=
"separator:a1c5d952a60130d2a68c8d68db2bebbd8"><td class=
"memSeparator" colspan=
"2"> </td></tr>
142 <tr class=
"memitem:a80169af0f2adacf3ec7c7ee1dfb19f96"><td class=
"memItemLeft" align=
"right" valign=
"top">typedef void *(*
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a80169af0f2adacf3ec7c7ee1dfb19f96">php_resource_factory_handle_copy_t
</a> )(void *opaque, void *handle)
</td></tr>
143 <tr class=
"memdesc:a80169af0f2adacf3ec7c7ee1dfb19f96"><td class=
"mdescLeft"> </td><td class=
"mdescRight">The copy constructor of a resource.
<a href=
"#a80169af0f2adacf3ec7c7ee1dfb19f96">More...
</a><br/></td></tr>
144 <tr class=
"separator:a80169af0f2adacf3ec7c7ee1dfb19f96"><td class=
"memSeparator" colspan=
"2"> </td></tr>
145 <tr class=
"memitem:a472a7e1909aed64d00d43ea5c112b854"><td class=
"memItemLeft" align=
"right" valign=
"top">typedef void(*
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a472a7e1909aed64d00d43ea5c112b854">php_resource_factory_handle_dtor_t
</a> )(void *opaque, void *handle)
</td></tr>
146 <tr class=
"memdesc:a472a7e1909aed64d00d43ea5c112b854"><td class=
"mdescLeft"> </td><td class=
"mdescRight">The destructor of a resource.
<a href=
"#a472a7e1909aed64d00d43ea5c112b854">More...
</a><br/></td></tr>
147 <tr class=
"separator:a472a7e1909aed64d00d43ea5c112b854"><td class=
"memSeparator" colspan=
"2"> </td></tr>
148 <tr class=
"memitem:a29e0d7a66e441a5265ddf2f0adbbb3af"><td class=
"memItemLeft" align=
"right" valign=
"top">typedef struct
<br class=
"typebreak"/>
149 <a class=
"el" href=
"php__raphf_8h.html#structphp__resource__factory__ops">php_resource_factory_ops
</a> </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a29e0d7a66e441a5265ddf2f0adbbb3af">php_resource_factory_ops_t
</a></td></tr>
150 <tr class=
"memdesc:a29e0d7a66e441a5265ddf2f0adbbb3af"><td class=
"mdescLeft"> </td><td class=
"mdescRight">The resource ops consisting of a ctor, a copy ctor and a dtor.
<a href=
"#a29e0d7a66e441a5265ddf2f0adbbb3af">More...
</a><br/></td></tr>
151 <tr class=
"separator:a29e0d7a66e441a5265ddf2f0adbbb3af"><td class=
"memSeparator" colspan=
"2"> </td></tr>
152 <tr class=
"memitem:a4817c4b3d4077c48dff36376487ba8d4"><td class=
"memItemLeft" align=
"right" valign=
"top">typedef struct
<a class=
"el" href=
"structphp__resource__factory.html">php_resource_factory
</a> </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a></td></tr>
153 <tr class=
"memdesc:a4817c4b3d4077c48dff36376487ba8d4"><td class=
"mdescLeft"> </td><td class=
"mdescRight">The resource factory.
<a href=
"#a4817c4b3d4077c48dff36376487ba8d4">More...
</a><br/></td></tr>
154 <tr class=
"separator:a4817c4b3d4077c48dff36376487ba8d4"><td class=
"memSeparator" colspan=
"2"> </td></tr>
155 <tr class=
"memitem:a07f599598d2b87b188f39871d026c177"><td class=
"memItemLeft" align=
"right" valign=
"top">typedef struct
<br class=
"typebreak"/>
156 <a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__list">php_persistent_handle_list
</a> </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a07f599598d2b87b188f39871d026c177">php_persistent_handle_list_t
</a></td></tr>
157 <tr class=
"memdesc:a07f599598d2b87b188f39871d026c177"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Persistent handles storage.
<a href=
"#a07f599598d2b87b188f39871d026c177">More...
</a><br/></td></tr>
158 <tr class=
"separator:a07f599598d2b87b188f39871d026c177"><td class=
"memSeparator" colspan=
"2"> </td></tr>
159 <tr class=
"memitem:a31f0595f4f726f762790cef844568fc4"><td class=
"memItemLeft" align=
"right" valign=
"top">typedef struct
<br class=
"typebreak"/>
160 <a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__provider">php_persistent_handle_provider
</a> </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a31f0595f4f726f762790cef844568fc4">php_persistent_handle_provider_t
</a></td></tr>
161 <tr class=
"memdesc:a31f0595f4f726f762790cef844568fc4"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Definition of a persistent handle provider.
<a href=
"#a31f0595f4f726f762790cef844568fc4">More...
</a><br/></td></tr>
162 <tr class=
"separator:a31f0595f4f726f762790cef844568fc4"><td class=
"memSeparator" colspan=
"2"> </td></tr>
163 <tr class=
"memitem:a833eaa62ffcc217e5749c26c18885b17"><td class=
"memItemLeft" align=
"right" valign=
"top">typedef struct
<br class=
"typebreak"/>
164 <a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__factory">php_persistent_handle_factory
</a> </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a></td></tr>
165 <tr class=
"separator:a833eaa62ffcc217e5749c26c18885b17"><td class=
"memSeparator" colspan=
"2"> </td></tr>
166 <tr class=
"memitem:a681ca1f7c1249199b45270be60c721c6"><td class=
"memItemLeft" align=
"right" valign=
"top">typedef void(*
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a681ca1f7c1249199b45270be60c721c6">php_persistent_handle_wakeup_t
</a> )(
<a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *f, void **handle)
</td></tr>
167 <tr class=
"memdesc:a681ca1f7c1249199b45270be60c721c6"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Wakeup the persistent handle on re-acquisition.
<a href=
"#a681ca1f7c1249199b45270be60c721c6">More...
</a><br/></td></tr>
168 <tr class=
"separator:a681ca1f7c1249199b45270be60c721c6"><td class=
"memSeparator" colspan=
"2"> </td></tr>
169 <tr class=
"memitem:a8f7d6389c67478ca0b99729a5dd3d305"><td class=
"memItemLeft" align=
"right" valign=
"top">typedef void(*
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a8f7d6389c67478ca0b99729a5dd3d305">php_persistent_handle_retire_t
</a> )(
<a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *f, void **handle)
</td></tr>
170 <tr class=
"memdesc:a8f7d6389c67478ca0b99729a5dd3d305"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Retire the persistent handle on release.
<a href=
"#a8f7d6389c67478ca0b99729a5dd3d305">More...
</a><br/></td></tr>
171 <tr class=
"separator:a8f7d6389c67478ca0b99729a5dd3d305"><td class=
"memSeparator" colspan=
"2"> </td></tr>
172 </table><table class=
"memberdecls">
173 <tr class=
"heading"><td colspan=
"2"><h2 class=
"groupheader"><a name=
"func-members"></a>
174 Functions
</h2></td></tr>
175 <tr class=
"memitem:ad20f10c53e3f33756638da98819367f0"><td class=
"memItemLeft" align=
"right" valign=
"top"><a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#ad20f10c53e3f33756638da98819367f0">php_resource_factory_init
</a> (
<a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *f,
<a class=
"el" href=
"php__raphf_8h.html#a29e0d7a66e441a5265ddf2f0adbbb3af">php_resource_factory_ops_t
</a> *fops, void *data, void(*dtor)(void *data))
</td></tr>
176 <tr class=
"memdesc:ad20f10c53e3f33756638da98819367f0"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Initialize a resource factory.
<a href=
"#ad20f10c53e3f33756638da98819367f0">More...
</a><br/></td></tr>
177 <tr class=
"separator:ad20f10c53e3f33756638da98819367f0"><td class=
"memSeparator" colspan=
"2"> </td></tr>
178 <tr class=
"memitem:ae8be369197905047ffbd05c0ca80f245"><td class=
"memItemLeft" align=
"right" valign=
"top">unsigned
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#ae8be369197905047ffbd05c0ca80f245">php_resource_factory_addref
</a> (
<a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *rf)
</td></tr>
179 <tr class=
"memdesc:ae8be369197905047ffbd05c0ca80f245"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Increase the refcount of the resource factory.
<a href=
"#ae8be369197905047ffbd05c0ca80f245">More...
</a><br/></td></tr>
180 <tr class=
"separator:ae8be369197905047ffbd05c0ca80f245"><td class=
"memSeparator" colspan=
"2"> </td></tr>
181 <tr class=
"memitem:a016b8a4159e698f915ab967711696847"><td class=
"memItemLeft" align=
"right" valign=
"top">void
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a016b8a4159e698f915ab967711696847">php_resource_factory_dtor
</a> (
<a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *f)
</td></tr>
182 <tr class=
"memdesc:a016b8a4159e698f915ab967711696847"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Destroy the resource factory.
<a href=
"#a016b8a4159e698f915ab967711696847">More...
</a><br/></td></tr>
183 <tr class=
"separator:a016b8a4159e698f915ab967711696847"><td class=
"memSeparator" colspan=
"2"> </td></tr>
184 <tr class=
"memitem:a7f012d685f5f7c08f50288b61232e689"><td class=
"memItemLeft" align=
"right" valign=
"top">void
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a7f012d685f5f7c08f50288b61232e689">php_resource_factory_free
</a> (
<a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> **f)
</td></tr>
185 <tr class=
"memdesc:a7f012d685f5f7c08f50288b61232e689"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Destroy and free the resource factory.
<a href=
"#a7f012d685f5f7c08f50288b61232e689">More...
</a><br/></td></tr>
186 <tr class=
"separator:a7f012d685f5f7c08f50288b61232e689"><td class=
"memSeparator" colspan=
"2"> </td></tr>
187 <tr class=
"memitem:a98d02dc80dd83095b8f901954350840c"><td class=
"memItemLeft" align=
"right" valign=
"top">void *
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a98d02dc80dd83095b8f901954350840c">php_resource_factory_handle_ctor
</a> (
<a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *f, void *init_arg)
</td></tr>
188 <tr class=
"memdesc:a98d02dc80dd83095b8f901954350840c"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Construct a resource by the resource factory
<em>f
</em>.
<a href=
"#a98d02dc80dd83095b8f901954350840c">More...
</a><br/></td></tr>
189 <tr class=
"separator:a98d02dc80dd83095b8f901954350840c"><td class=
"memSeparator" colspan=
"2"> </td></tr>
190 <tr class=
"memitem:a08db5f3698f2d0bf3d2f20dcf4e7b2b4"><td class=
"memItemLeft" align=
"right" valign=
"top">void *
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a08db5f3698f2d0bf3d2f20dcf4e7b2b4">php_resource_factory_handle_copy
</a> (
<a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *f, void *handle)
</td></tr>
191 <tr class=
"memdesc:a08db5f3698f2d0bf3d2f20dcf4e7b2b4"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Create a copy of the resource
<em>handle
</em>.
<a href=
"#a08db5f3698f2d0bf3d2f20dcf4e7b2b4">More...
</a><br/></td></tr>
192 <tr class=
"separator:a08db5f3698f2d0bf3d2f20dcf4e7b2b4"><td class=
"memSeparator" colspan=
"2"> </td></tr>
193 <tr class=
"memitem:a97dbb9d342f33205b92374c586676bc6"><td class=
"memItemLeft" align=
"right" valign=
"top">void
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a97dbb9d342f33205b92374c586676bc6">php_resource_factory_handle_dtor
</a> (
<a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *f, void *handle)
</td></tr>
194 <tr class=
"memdesc:a97dbb9d342f33205b92374c586676bc6"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Destroy (and free) the resource.
<a href=
"#a97dbb9d342f33205b92374c586676bc6">More...
</a><br/></td></tr>
195 <tr class=
"separator:a97dbb9d342f33205b92374c586676bc6"><td class=
"memSeparator" colspan=
"2"> </td></tr>
196 <tr class=
"memitem:a3cbbe29c8a4ed9858c921c8ee539de59"><td class=
"memItemLeft" align=
"right" valign=
"top">int
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a3cbbe29c8a4ed9858c921c8ee539de59">php_persistent_handle_provide
</a> (const char *name_str, size_t name_len,
<a class=
"el" href=
"php__raphf_8h.html#a29e0d7a66e441a5265ddf2f0adbbb3af">php_resource_factory_ops_t
</a> *fops, void *data, void(*dtor)(void *))
</td></tr>
197 <tr class=
"memdesc:a3cbbe29c8a4ed9858c921c8ee539de59"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Register a persistent handle provider in MINIT.
<a href=
"#a3cbbe29c8a4ed9858c921c8ee539de59">More...
</a><br/></td></tr>
198 <tr class=
"separator:a3cbbe29c8a4ed9858c921c8ee539de59"><td class=
"memSeparator" colspan=
"2"> </td></tr>
199 <tr class=
"memitem:a0a266874dafb69cf2b040378d4033901"><td class=
"memItemLeft" align=
"right" valign=
"top"><a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a0a266874dafb69cf2b040378d4033901">php_persistent_handle_concede
</a> (
<a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *a, const char *name_str, size_t name_len, const char *ident_str, size_t ident_len,
<a class=
"el" href=
"php__raphf_8h.html#a681ca1f7c1249199b45270be60c721c6">php_persistent_handle_wakeup_t
</a> wakeup,
<a class=
"el" href=
"php__raphf_8h.html#a8f7d6389c67478ca0b99729a5dd3d305">php_persistent_handle_retire_t
</a> retire)
</td></tr>
200 <tr class=
"memdesc:a0a266874dafb69cf2b040378d4033901"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Retrieve a persistent handle factory at runtime.
<a href=
"#a0a266874dafb69cf2b040378d4033901">More...
</a><br/></td></tr>
201 <tr class=
"separator:a0a266874dafb69cf2b040378d4033901"><td class=
"memSeparator" colspan=
"2"> </td></tr>
202 <tr class=
"memitem:ab12ec2da7189e16fbed40a3b73bc9ee2"><td class=
"memItemLeft" align=
"right" valign=
"top">void
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#ab12ec2da7189e16fbed40a3b73bc9ee2">php_persistent_handle_abandon
</a> (
<a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *a)
</td></tr>
203 <tr class=
"memdesc:ab12ec2da7189e16fbed40a3b73bc9ee2"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Abandon the persistent handle factory.
<a href=
"#ab12ec2da7189e16fbed40a3b73bc9ee2">More...
</a><br/></td></tr>
204 <tr class=
"separator:ab12ec2da7189e16fbed40a3b73bc9ee2"><td class=
"memSeparator" colspan=
"2"> </td></tr>
205 <tr class=
"memitem:af6636e870497be0699d2781e5fc8a2a9"><td class=
"memItemLeft" align=
"right" valign=
"top">void *
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#af6636e870497be0699d2781e5fc8a2a9">php_persistent_handle_acquire
</a> (
<a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *a, void *init_arg)
</td></tr>
206 <tr class=
"memdesc:af6636e870497be0699d2781e5fc8a2a9"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Acquire a persistent handle.
<a href=
"#af6636e870497be0699d2781e5fc8a2a9">More...
</a><br/></td></tr>
207 <tr class=
"separator:af6636e870497be0699d2781e5fc8a2a9"><td class=
"memSeparator" colspan=
"2"> </td></tr>
208 <tr class=
"memitem:af08ee05c51d52200755d24f6f52df144"><td class=
"memItemLeft" align=
"right" valign=
"top">void
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#af08ee05c51d52200755d24f6f52df144">php_persistent_handle_release
</a> (
<a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *a, void *handle)
</td></tr>
209 <tr class=
"memdesc:af08ee05c51d52200755d24f6f52df144"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Release a persistent handle.
<a href=
"#af08ee05c51d52200755d24f6f52df144">More...
</a><br/></td></tr>
210 <tr class=
"separator:af08ee05c51d52200755d24f6f52df144"><td class=
"memSeparator" colspan=
"2"> </td></tr>
211 <tr class=
"memitem:ae8124f3f73e96e2193ae03c5519d2763"><td class=
"memItemLeft" align=
"right" valign=
"top">void *
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#ae8124f3f73e96e2193ae03c5519d2763">php_persistent_handle_accrete
</a> (
<a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *a, void *handle)
</td></tr>
212 <tr class=
"memdesc:ae8124f3f73e96e2193ae03c5519d2763"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Copy a persistent handle.
<a href=
"#ae8124f3f73e96e2193ae03c5519d2763">More...
</a><br/></td></tr>
213 <tr class=
"separator:ae8124f3f73e96e2193ae03c5519d2763"><td class=
"memSeparator" colspan=
"2"> </td></tr>
214 <tr class=
"memitem:a93458ab12d810f0fd545fb1464ba9eca"><td class=
"memItemLeft" align=
"right" valign=
"top"><a class=
"el" href=
"php__raphf_8h.html#a29e0d7a66e441a5265ddf2f0adbbb3af">php_resource_factory_ops_t
</a> *
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a93458ab12d810f0fd545fb1464ba9eca">php_persistent_handle_get_resource_factory_ops
</a> (void)
</td></tr>
215 <tr class=
"memdesc:a93458ab12d810f0fd545fb1464ba9eca"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Retrieve persistent handle resource factory ops.
<a href=
"#a93458ab12d810f0fd545fb1464ba9eca">More...
</a><br/></td></tr>
216 <tr class=
"separator:a93458ab12d810f0fd545fb1464ba9eca"><td class=
"memSeparator" colspan=
"2"> </td></tr>
217 <tr class=
"memitem:a0d661d1f880270146012eb8781e5343e"><td class=
"memItemLeft" align=
"right" valign=
"top">void
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#a0d661d1f880270146012eb8781e5343e">php_persistent_handle_cleanup
</a> (const char *name_str, size_t name_len, const char *ident_str, size_t ident_len)
</td></tr>
218 <tr class=
"memdesc:a0d661d1f880270146012eb8781e5343e"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Clean persistent handles up.
<a href=
"#a0d661d1f880270146012eb8781e5343e">More...
</a><br/></td></tr>
219 <tr class=
"separator:a0d661d1f880270146012eb8781e5343e"><td class=
"memSeparator" colspan=
"2"> </td></tr>
220 <tr class=
"memitem:ae174fbe124d4cb6010e218a68379bd18"><td class=
"memItemLeft" align=
"right" valign=
"top">HashTable *
 </td><td class=
"memItemRight" valign=
"bottom"><a class=
"el" href=
"php__raphf_8h.html#ae174fbe124d4cb6010e218a68379bd18">php_persistent_handle_statall
</a> (HashTable *ht)
</td></tr>
221 <tr class=
"memdesc:ae174fbe124d4cb6010e218a68379bd18"><td class=
"mdescLeft"> </td><td class=
"mdescRight">Retrieve statistics about the current process/thread's persistent handles.
<a href=
"#ae174fbe124d4cb6010e218a68379bd18">More...
</a><br/></td></tr>
222 <tr class=
"separator:ae174fbe124d4cb6010e218a68379bd18"><td class=
"memSeparator" colspan=
"2"> </td></tr>
224 <hr/><h2 class=
"groupheader">Data Structure Documentation
</h2>
225 <a name=
"structphp__resource__factory__ops" id=
"structphp__resource__factory__ops"></a>
226 <div class=
"memitem">
227 <div class=
"memproto">
228 <table class=
"memname">
230 <td class=
"memname">struct php_resource_factory_ops
</td>
233 </div><div class=
"memdoc">
234 <div class=
"textblock"><p>The resource ops consisting of a ctor, a copy ctor and a dtor.
</p>
235 <p>Define this ops and register them with
<a class=
"el" href=
"php__raphf_8h.html#a3cbbe29c8a4ed9858c921c8ee539de59" title=
"Register a persistent handle provider in MINIT. ">php_persistent_handle_provide()
</a> in MINIT.
</p>
236 </div><table class=
"fieldtable">
237 <tr><th colspan=
"3">Data Fields
</th></tr>
238 <tr><td class=
"fieldtype">
239 <a class=
"anchor" id=
"a8094f85df976aff73148bc579ae72e38"></a><a class=
"el" href=
"php__raphf_8h.html#a80169af0f2adacf3ec7c7ee1dfb19f96">php_resource_factory_handle_copy_t
</a></td>
240 <td class=
"fieldname">
242 <td class=
"fielddoc">
243 The resource's copy constructor.
</td></tr>
244 <tr><td class=
"fieldtype">
245 <a class=
"anchor" id=
"a044b07071758dbc53f87bfd212400ac0"></a><a class=
"el" href=
"php__raphf_8h.html#a1c5d952a60130d2a68c8d68db2bebbd8">php_resource_factory_handle_ctor_t
</a></td>
246 <td class=
"fieldname">
248 <td class=
"fielddoc">
249 The resource constructor.
</td></tr>
250 <tr><td class=
"fieldtype">
251 <a class=
"anchor" id=
"acb8a7a04b86f08db41a2d6232676c65c"></a><a class=
"el" href=
"php__raphf_8h.html#a472a7e1909aed64d00d43ea5c112b854">php_resource_factory_handle_dtor_t
</a></td>
252 <td class=
"fieldname">
254 <td class=
"fielddoc">
255 The resource's destructor.
</td></tr>
260 <a name=
"structphp__persistent__handle__list" id=
"structphp__persistent__handle__list"></a>
261 <div class=
"memitem">
262 <div class=
"memproto">
263 <table class=
"memname">
265 <td class=
"memname">struct php_persistent_handle_list
</td>
268 </div><div class=
"memdoc">
269 <div class=
"textblock"><p>Persistent handles storage.
</p>
270 </div><table class=
"fieldtable">
271 <tr><th colspan=
"3">Data Fields
</th></tr>
272 <tr><td class=
"fieldtype">
273 <a class=
"anchor" id=
"a653a4a0e9c39ad942e9573e197f62974"></a>HashTable
</td>
274 <td class=
"fieldname">
276 <td class=
"fielddoc">
277 Storage of free resources.
</td></tr>
278 <tr><td class=
"fieldtype">
279 <a class=
"anchor" id=
"a119a44fd9f5ae066b6d77e7a35a25cd0"></a>ulong
</td>
280 <td class=
"fieldname">
282 <td class=
"fielddoc">
283 Count of acquired resources.
</td></tr>
288 <a name=
"structphp__persistent__handle__provider" id=
"structphp__persistent__handle__provider"></a>
289 <div class=
"memitem">
290 <div class=
"memproto">
291 <table class=
"memname">
293 <td class=
"memname">struct php_persistent_handle_provider
</td>
296 </div><div class=
"memdoc">
297 <div class=
"textblock"><p>Definition of a persistent handle provider.
</p>
298 <p>Holds a resource factory an a persistent handle list.
</p>
299 </div><div class=
"dynheader">
300 Collaboration diagram for php_persistent_handle_provider:
</div>
301 <div class=
"dyncontent">
302 <div class=
"center"><img src=
"structphp__persistent__handle__provider__coll__graph.png" border=
"0" usemap=
"#php__persistent__handle__provider_coll__map" alt=
"Collaboration graph"/></div>
303 <map name=
"php__persistent__handle__provider_coll__map" id=
"php__persistent__handle__provider_coll__map">
304 <area shape=
"rect" id=
"node2" href=
"php__raphf_8h.html#structphp__persistent__handle__list" title=
"Persistent handles storage. " alt=
"" coords=
"5,96,181,123"/><area shape=
"rect" id=
"node3" href=
"structphp__resource__factory.html" title=
"The resource factory. " alt=
"" coords=
"205,96,352,123"/><area shape=
"rect" id=
"node4" href=
"php__raphf_8h.html#structphp__resource__factory__ops" title=
"The resource ops consisting of a ctor, a copy ctor and a dtor. " alt=
"" coords=
"191,5,365,32"/></map>
305 <center><span class=
"legend">[
<a target=
"top" href=
"graph_legend.html">legend
</a>]
</span></center></div>
306 <table class=
"fieldtable">
307 <tr><th colspan=
"3">Data Fields
</th></tr>
308 <tr><td class=
"fieldtype">
309 <a class=
"anchor" id=
"a4935f6446b1d4a2feb7a22dfc4e5d6d0"></a><a class=
"el" href=
"php__raphf_8h.html#a07f599598d2b87b188f39871d026c177">php_persistent_handle_list_t
</a></td>
310 <td class=
"fieldname">
312 <td class=
"fielddoc">
313 The list of free handles.
<p>Hash of
"ident" =
> array(handles) entries. Persistent handles are acquired out of this list.
</p>
315 <tr><td class=
"fieldtype">
316 <a class=
"anchor" id=
"a8204714f100b74b028652951ca40abd3"></a><a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a></td>
317 <td class=
"fieldname">
319 <td class=
"fielddoc">
320 The resource factory.
<p>New handles are created by this factory.
</p>
326 <a name=
"structphp__persistent__handle__factory" id=
"structphp__persistent__handle__factory"></a>
327 <div class=
"memitem">
328 <div class=
"memproto">
329 <table class=
"memname">
331 <td class=
"memname">struct php_persistent_handle_factory
</td>
334 </div><div class=
"memdoc">
335 <div class=
"textblock"><p>Definition of a persistent handle factory.
</p>
336 <p><a class=
"el" href=
"php__raphf_8h.html#a0a266874dafb69cf2b040378d4033901" title=
"Retrieve a persistent handle factory at runtime. ">php_persistent_handle_concede()
</a> will return a pointer to a
<a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__factory" title=
"Definition of a persistent handle factory. ">php_persistent_handle_factory
</a> if a provider for the
<em>name_str
</em> has been registered with
<a class=
"el" href=
"php__raphf_8h.html#a3cbbe29c8a4ed9858c921c8ee539de59" title=
"Register a persistent handle provider in MINIT. ">php_persistent_handle_provide()
</a>.
</p>
337 </div><div class=
"dynheader">
338 Collaboration diagram for php_persistent_handle_factory:
</div>
339 <div class=
"dyncontent">
340 <div class=
"center"><img src=
"structphp__persistent__handle__factory__coll__graph.png" border=
"0" usemap=
"#php__persistent__handle__factory_coll__map" alt=
"Collaboration graph"/></div>
341 <map name=
"php__persistent__handle__factory_coll__map" id=
"php__persistent__handle__factory_coll__map">
342 <area shape=
"rect" id=
"node2" href=
"php__raphf_8h.html#structphp__persistent__handle__provider" title=
"Definition of a persistent handle provider. " alt=
"" coords=
"76,187,228,229"/><area shape=
"rect" id=
"node3" href=
"php__raphf_8h.html#structphp__persistent__handle__list" title=
"Persistent handles storage. " alt=
"" coords=
"5,96,181,123"/><area shape=
"rect" id=
"node4" href=
"structphp__resource__factory.html" title=
"The resource factory. " alt=
"" coords=
"205,96,352,123"/><area shape=
"rect" id=
"node5" href=
"php__raphf_8h.html#structphp__resource__factory__ops" title=
"The resource ops consisting of a ctor, a copy ctor and a dtor. " alt=
"" coords=
"191,5,365,32"/></map>
343 <center><span class=
"legend">[
<a target=
"top" href=
"graph_legend.html">legend
</a>]
</span></center></div>
344 <table class=
"fieldtable">
345 <tr><th colspan=
"3">Data Fields
</th></tr>
346 <tr><td class=
"fieldtype">
347 <a class=
"anchor" id=
"a84ffa94401b9869e14c190be4bb1b6be"></a>unsigned
</td>
348 <td class=
"fieldname">
349 free_on_abandon:
1</td>
350 <td class=
"fielddoc">
351 Whether it has to be free'd on
<a class=
"el" href=
"php__raphf_8h.html#ab12ec2da7189e16fbed40a3b73bc9ee2" title=
"Abandon the persistent handle factory. ">php_persistent_handle_abandon()
</a> </td></tr>
352 <tr><td class=
"fieldtype">
353 <a class=
"anchor" id=
"ae874c03caffa8eaa265dd52ebf593c02"></a>struct
<a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__factory_8ident">php_persistent_handle_factory
</a></td>
354 <td class=
"fieldname">
356 <td class=
"fielddoc">
357 The ident for which this factory manages resources.
</td></tr>
358 <tr><td class=
"fieldtype">
359 <a class=
"anchor" id=
"a43aabcbe7ec4b5ff463f74cfcf788f51"></a><a class=
"el" href=
"php__raphf_8h.html#a31f0595f4f726f762790cef844568fc4">php_persistent_handle_provider_t
</a> *
</td>
360 <td class=
"fieldname">
362 <td class=
"fielddoc">
363 The persistent handle provider.
</td></tr>
364 <tr><td class=
"fieldtype">
365 <a class=
"anchor" id=
"a9299f3f0821061ad93d15c10cf735b6b"></a><a class=
"el" href=
"php__raphf_8h.html#a8f7d6389c67478ca0b99729a5dd3d305">php_persistent_handle_retire_t
</a></td>
366 <td class=
"fieldname">
368 <td class=
"fielddoc">
369 The persistent handle retire routine; may be NULL.
</td></tr>
370 <tr><td class=
"fieldtype">
371 <a class=
"anchor" id=
"a6633b7c860e4538942e0367d64ed5af7"></a><a class=
"el" href=
"php__raphf_8h.html#a681ca1f7c1249199b45270be60c721c6">php_persistent_handle_wakeup_t
</a></td>
372 <td class=
"fieldname">
374 <td class=
"fielddoc">
375 The persistent handle wakeup routine; may be NULL.
</td></tr>
380 <a name=
"structphp__persistent__handle__factory_8ident" id=
"structphp__persistent__handle__factory_8ident"></a>
381 <div class=
"memitem">
382 <div class=
"memproto">
383 <table class=
"memname">
385 <td class=
"memname">struct php_persistent_handle_factory.ident
</td>
388 </div><div class=
"memdoc">
389 <div class=
"textblock"><p>The ident for which this factory manages resources.
</p>
390 </div><table class=
"fieldtable">
391 <tr><th colspan=
"3">Data Fields
</th></tr>
392 <tr><td class=
"fieldtype">
393 <a class=
"anchor" id=
"af5a8e923f8cd24b56b3bab32358cc58a"></a>size_t
</td>
394 <td class=
"fieldname">
396 <td class=
"fielddoc">
397 ident length
</td></tr>
398 <tr><td class=
"fieldtype">
399 <a class=
"anchor" id=
"a341be97d9aff90c9978347f66f945b77"></a>char *
</td>
400 <td class=
"fieldname">
402 <td class=
"fielddoc">
403 ident string
</td></tr>
408 <h2 class=
"groupheader">Typedef Documentation
</h2>
409 <a class=
"anchor" id=
"a833eaa62ffcc217e5749c26c18885b17"></a>
410 <div class=
"memitem">
411 <div class=
"memproto">
412 <table class=
"memname">
414 <td class=
"memname">typedef struct
<a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__factory">php_persistent_handle_factory
</a> <a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a></td>
417 </div><div class=
"memdoc">
421 <a class=
"anchor" id=
"a07f599598d2b87b188f39871d026c177"></a>
422 <div class=
"memitem">
423 <div class=
"memproto">
424 <table class=
"memname">
426 <td class=
"memname">typedef struct
<a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__list">php_persistent_handle_list
</a> <a class=
"el" href=
"php__raphf_8h.html#a07f599598d2b87b188f39871d026c177">php_persistent_handle_list_t
</a></td>
429 </div><div class=
"memdoc">
431 <p>Persistent handles storage.
</p>
435 <a class=
"anchor" id=
"a31f0595f4f726f762790cef844568fc4"></a>
436 <div class=
"memitem">
437 <div class=
"memproto">
438 <table class=
"memname">
440 <td class=
"memname">typedef struct
<a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__provider">php_persistent_handle_provider
</a> <a class=
"el" href=
"php__raphf_8h.html#a31f0595f4f726f762790cef844568fc4">php_persistent_handle_provider_t
</a></td>
443 </div><div class=
"memdoc">
445 <p>Definition of a persistent handle provider.
</p>
446 <p>Holds a resource factory an a persistent handle list.
</p>
450 <a class=
"anchor" id=
"a8f7d6389c67478ca0b99729a5dd3d305"></a>
451 <div class=
"memitem">
452 <div class=
"memproto">
453 <table class=
"memname">
455 <td class=
"memname">typedef void(* php_persistent_handle_retire_t)(
<a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *f, void **handle)
</td>
458 </div><div class=
"memdoc">
460 <p>Retire the persistent handle on release.
</p>
464 <a class=
"anchor" id=
"a681ca1f7c1249199b45270be60c721c6"></a>
465 <div class=
"memitem">
466 <div class=
"memproto">
467 <table class=
"memname">
469 <td class=
"memname">typedef void(* php_persistent_handle_wakeup_t)(
<a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *f, void **handle)
</td>
472 </div><div class=
"memdoc">
474 <p>Wakeup the persistent handle on re-acquisition.
</p>
478 <a class=
"anchor" id=
"a80169af0f2adacf3ec7c7ee1dfb19f96"></a>
479 <div class=
"memitem">
480 <div class=
"memproto">
481 <table class=
"memname">
483 <td class=
"memname">typedef void*(* php_resource_factory_handle_copy_t)(void *opaque, void *handle)
</td>
486 </div><div class=
"memdoc">
488 <p>The copy constructor of a resource.
</p>
489 <dl class=
"params"><dt>Parameters
</dt><dd>
490 <table class=
"params">
491 <tr><td class=
"paramname">opaque
</td><td>the factory's data
</td></tr>
492 <tr><td class=
"paramname">handle
</td><td>the (persistent) handle to copy
</td></tr>
499 <a class=
"anchor" id=
"a1c5d952a60130d2a68c8d68db2bebbd8"></a>
500 <div class=
"memitem">
501 <div class=
"memproto">
502 <table class=
"memname">
504 <td class=
"memname">typedef void*(* php_resource_factory_handle_ctor_t)(void *opaque, void *init_arg)
</td>
507 </div><div class=
"memdoc">
509 <p>A resource constructor.
</p>
510 <dl class=
"params"><dt>Parameters
</dt><dd>
511 <table class=
"params">
512 <tr><td class=
"paramname">opaque
</td><td>is the
<em>data
</em> from
<a class=
"el" href=
"php__raphf_8h.html#a3cbbe29c8a4ed9858c921c8ee539de59" title=
"Register a persistent handle provider in MINIT. ">php_persistent_handle_provide()
</a> </td></tr>
513 <tr><td class=
"paramname">init_arg
</td><td>is the
<em>init_arg
</em> from
<a class=
"el" href=
"php__raphf_8h.html#ad20f10c53e3f33756638da98819367f0" title=
"Initialize a resource factory. ">php_resource_factory_init()
</a> </td></tr>
517 <dl class=
"section return"><dt>Returns
</dt><dd>the created (persistent) handle
</dd></dl>
521 <a class=
"anchor" id=
"a472a7e1909aed64d00d43ea5c112b854"></a>
522 <div class=
"memitem">
523 <div class=
"memproto">
524 <table class=
"memname">
526 <td class=
"memname">typedef void(* php_resource_factory_handle_dtor_t)(void *opaque, void *handle)
</td>
529 </div><div class=
"memdoc">
531 <p>The destructor of a resource.
</p>
532 <dl class=
"params"><dt>Parameters
</dt><dd>
533 <table class=
"params">
534 <tr><td class=
"paramname">opaque
</td><td>the factory's data
</td></tr>
535 <tr><td class=
"paramname">handle
</td><td>the handle to destroy
</td></tr>
542 <a class=
"anchor" id=
"a29e0d7a66e441a5265ddf2f0adbbb3af"></a>
543 <div class=
"memitem">
544 <div class=
"memproto">
545 <table class=
"memname">
547 <td class=
"memname">typedef struct
<a class=
"el" href=
"php__raphf_8h.html#structphp__resource__factory__ops">php_resource_factory_ops
</a> <a class=
"el" href=
"php__raphf_8h.html#a29e0d7a66e441a5265ddf2f0adbbb3af">php_resource_factory_ops_t
</a></td>
550 </div><div class=
"memdoc">
552 <p>The resource ops consisting of a ctor, a copy ctor and a dtor.
</p>
553 <p>Define this ops and register them with
<a class=
"el" href=
"php__raphf_8h.html#a3cbbe29c8a4ed9858c921c8ee539de59" title=
"Register a persistent handle provider in MINIT. ">php_persistent_handle_provide()
</a> in MINIT.
</p>
557 <a class=
"anchor" id=
"a4817c4b3d4077c48dff36376487ba8d4"></a>
558 <div class=
"memitem">
559 <div class=
"memproto">
560 <table class=
"memname">
562 <td class=
"memname">typedef struct
<a class=
"el" href=
"structphp__resource__factory.html">php_resource_factory
</a> <a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a></td>
565 </div><div class=
"memdoc">
567 <p>The resource factory.
</p>
571 <h2 class=
"groupheader">Function Documentation
</h2>
572 <a class=
"anchor" id=
"ab12ec2da7189e16fbed40a3b73bc9ee2"></a>
573 <div class=
"memitem">
574 <div class=
"memproto">
575 <table class=
"memname">
577 <td class=
"memname">void php_persistent_handle_abandon
</td>
579 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *
 </td>
580 <td class=
"paramname"><em>a
</em></td><td>)
</td>
584 </div><div class=
"memdoc">
586 <p>Abandon the persistent handle factory.
</p>
587 <p>Destroy a
<a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__factory" title=
"Definition of a persistent handle factory. ">php_persistent_handle_factory
</a> created by
<a class=
"el" href=
"php__raphf_8h.html#a0a266874dafb69cf2b040378d4033901" title=
"Retrieve a persistent handle factory at runtime. ">php_persistent_handle_concede()
</a>. If the memory for the factory was allocated, it will automatically be free'd.
</p>
588 <dl class=
"params"><dt>Parameters
</dt><dd>
589 <table class=
"params">
590 <tr><td class=
"paramname">a
</td><td>the persistent handle factory to destroy
</td></tr>
597 <a class=
"anchor" id=
"ae8124f3f73e96e2193ae03c5519d2763"></a>
598 <div class=
"memitem">
599 <div class=
"memproto">
600 <table class=
"memname">
602 <td class=
"memname">void* php_persistent_handle_accrete
</td>
604 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *
 </td>
605 <td class=
"paramname"><em>a
</em>,
</td>
608 <td class=
"paramkey"></td>
610 <td class=
"paramtype">void *
 </td>
611 <td class=
"paramname"><em>handle
</em> </td>
619 </div><div class=
"memdoc">
621 <p>Copy a persistent handle.
</p>
622 <p>Let the underlying resource factory copy the
<em>handle
</em>.
</p>
623 <dl class=
"params"><dt>Parameters
</dt><dd>
624 <table class=
"params">
625 <tr><td class=
"paramname">a
</td><td>the persistent handle factory
</td></tr>
626 <tr><td class=
"paramname">handle
</td><td>the resource to accrete
</td></tr>
633 <a class=
"anchor" id=
"af6636e870497be0699d2781e5fc8a2a9"></a>
634 <div class=
"memitem">
635 <div class=
"memproto">
636 <table class=
"memname">
638 <td class=
"memname">void* php_persistent_handle_acquire
</td>
640 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *
 </td>
641 <td class=
"paramname"><em>a
</em>,
</td>
644 <td class=
"paramkey"></td>
646 <td class=
"paramtype">void *
 </td>
647 <td class=
"paramname"><em>init_arg
</em> </td>
655 </div><div class=
"memdoc">
657 <p>Acquire a persistent handle.
</p>
658 <p>That is, either re-use a resource from the free list or create a new handle.
</p>
659 <p>If a handle is acquired from the free list, the
<a class=
"el" href=
"php__raphf_8h.html#a6633b7c860e4538942e0367d64ed5af7" title=
"The persistent handle wakeup routine; may be NULL. ">php_persistent_handle_factory::wakeup
</a> callback will be executed for that handle.
</p>
660 <dl class=
"params"><dt>Parameters
</dt><dd>
661 <table class=
"params">
662 <tr><td class=
"paramname">a
</td><td>the persistent handle factory
</td></tr>
663 <tr><td class=
"paramname">init_arg
</td><td>the
<em>init_arg
</em> for
<a class=
"el" href=
"php__raphf_8h.html#a98d02dc80dd83095b8f901954350840c" title=
"Construct a resource by the resource factory f. ">php_resource_factory_handle_ctor()
</a> </td></tr>
667 <dl class=
"section return"><dt>Returns
</dt><dd>the acquired resource
</dd></dl>
671 <a class=
"anchor" id=
"a0d661d1f880270146012eb8781e5343e"></a>
672 <div class=
"memitem">
673 <div class=
"memproto">
674 <table class=
"memname">
676 <td class=
"memname">void php_persistent_handle_cleanup
</td>
678 <td class=
"paramtype">const char *
 </td>
679 <td class=
"paramname"><em>name_str
</em>,
</td>
682 <td class=
"paramkey"></td>
684 <td class=
"paramtype">size_t
 </td>
685 <td class=
"paramname"><em>name_len
</em>,
</td>
688 <td class=
"paramkey"></td>
690 <td class=
"paramtype">const char *
 </td>
691 <td class=
"paramname"><em>ident_str
</em>,
</td>
694 <td class=
"paramkey"></td>
696 <td class=
"paramtype">size_t
 </td>
697 <td class=
"paramname"><em>ident_len
</em> </td>
705 </div><div class=
"memdoc">
707 <p>Clean persistent handles up.
</p>
708 <p>Destroy persistent handles of provider
<em>name_str
</em> and in subsidiary namespace
<em>ident_str
</em>.
</p>
709 <p>If
<em>name_str
</em> is NULL, all persistent handles of all providers with a matching
<em>ident_str
</em> will be cleaned up.
</p>
710 <p>If
<em>ident_str
</em> is NULL all persistent handles of the provider will be cleaned up.
</p>
711 <p>Ergo, if both,
<em>name_str
</em> and
<em>ident_str
</em> are NULL, then all persistent handles will be cleaned up.
</p>
712 <p>You must call this in MSHUTDOWN, if your resource factory ops hold a registered
<a class=
"el" href=
"structphp__resource__factory.html#a7b48ed1c081288e7dd396bdb2f9187f9" title=
"User data destructor. ">php_resource_factory::dtor
</a>, else the dtor will point to memory not any more available if the extension has already been unloaded.
</p>
713 <dl class=
"params"><dt>Parameters
</dt><dd>
714 <table class=
"params">
715 <tr><td class=
"paramname">name_str
</td><td>the provider name; may be NULL
</td></tr>
716 <tr><td class=
"paramname">name_len
</td><td>the provider name length
</td></tr>
717 <tr><td class=
"paramname">ident_str
</td><td>the subsidiary namespace name; may be NULL
</td></tr>
718 <tr><td class=
"paramname">ident_len
</td><td>the subsidiary namespace name length
</td></tr>
725 <a class=
"anchor" id=
"a0a266874dafb69cf2b040378d4033901"></a>
726 <div class=
"memitem">
727 <div class=
"memproto">
728 <table class=
"memname">
730 <td class=
"memname"><a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a>* php_persistent_handle_concede
</td>
732 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *
 </td>
733 <td class=
"paramname"><em>a
</em>,
</td>
736 <td class=
"paramkey"></td>
738 <td class=
"paramtype">const char *
 </td>
739 <td class=
"paramname"><em>name_str
</em>,
</td>
742 <td class=
"paramkey"></td>
744 <td class=
"paramtype">size_t
 </td>
745 <td class=
"paramname"><em>name_len
</em>,
</td>
748 <td class=
"paramkey"></td>
750 <td class=
"paramtype">const char *
 </td>
751 <td class=
"paramname"><em>ident_str
</em>,
</td>
754 <td class=
"paramkey"></td>
756 <td class=
"paramtype">size_t
 </td>
757 <td class=
"paramname"><em>ident_len
</em>,
</td>
760 <td class=
"paramkey"></td>
762 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a681ca1f7c1249199b45270be60c721c6">php_persistent_handle_wakeup_t
</a> </td>
763 <td class=
"paramname"><em>wakeup
</em>,
</td>
766 <td class=
"paramkey"></td>
768 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a8f7d6389c67478ca0b99729a5dd3d305">php_persistent_handle_retire_t
</a> </td>
769 <td class=
"paramname"><em>retire
</em> </td>
777 </div><div class=
"memdoc">
779 <p>Retrieve a persistent handle factory at runtime.
</p>
780 <p>If a persistent handle provider has been registered for
<em>name_str
</em>, a new
<a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__factory" title=
"Definition of a persistent handle factory. ">php_persistent_handle_factory
</a> creating resources in the
<em>ident_str
</em> namespace will be constructed.
</p>
781 <p>The wakeup routine
<em>wakeup
</em> and the retire routine
<em>retire
</em> will be assigned to the new
<a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__factory" title=
"Definition of a persistent handle factory. ">php_persistent_handle_factory
</a>.
</p>
782 <dl class=
"params"><dt>Parameters
</dt><dd>
783 <table class=
"params">
784 <tr><td class=
"paramname">a
</td><td>pointer to a factory; allocated on the heap if NULL
</td></tr>
785 <tr><td class=
"paramname">name_str
</td><td>the provider name, e.g.
"http\Client\Curl" </td></tr>
786 <tr><td class=
"paramname">name_len
</td><td>the provider name length, e.g. strlen(
"http\Client\Curl")
</td></tr>
787 <tr><td class=
"paramname">ident_str
</td><td>the subsidiary namespace, e.g.
"php.net:80" </td></tr>
788 <tr><td class=
"paramname">ident_len
</td><td>the subsidiary namespace lenght, e.g. strlen(
"php.net:80")
</td></tr>
789 <tr><td class=
"paramname">wakeup
</td><td>any persistent handle wakeup routine
</td></tr>
790 <tr><td class=
"paramname">retire
</td><td>any persistent handle retire routine
</td></tr>
794 <dl class=
"section return"><dt>Returns
</dt><dd><em>a
</em> or an allocated persistent handle factory
</dd></dl>
798 <a class=
"anchor" id=
"a93458ab12d810f0fd545fb1464ba9eca"></a>
799 <div class=
"memitem">
800 <div class=
"memproto">
801 <table class=
"memname">
803 <td class=
"memname"><a class=
"el" href=
"php__raphf_8h.html#a29e0d7a66e441a5265ddf2f0adbbb3af">php_resource_factory_ops_t
</a>* php_persistent_handle_get_resource_factory_ops
</td>
805 <td class=
"paramtype">void
 </td>
806 <td class=
"paramname"></td><td>)
</td>
810 </div><div class=
"memdoc">
812 <p>Retrieve persistent handle resource factory ops.
</p>
813 <p>These ops can be used to mask a persistent handle factory as resource factory itself, so you can transparently use the resource factory API, both for persistent and non-persistent ressources.
</p>
815 <div class=
"fragment"><div class=
"line"><a class=
"code" href=
"structphp__resource__factory.html">php_resource_factory_t
</a> *create_my_rf(
<span class=
"keyword">const
</span> <span class=
"keywordtype">char
</span> *persistent_id_str,
</div>
816 <div class=
"line"> <span class=
"keywordtype">size_t
</span> persistent_id_len TSRMLS_DC)
</div>
817 <div class=
"line">{
</div>
818 <div class=
"line"> <a class=
"code" href=
"structphp__resource__factory.html">php_resource_factory_t
</a> *rf;
</div>
819 <div class=
"line"></div>
820 <div class=
"line"> <span class=
"keywordflow">if
</span> (persistent_id_str) {
</div>
821 <div class=
"line"> <a class=
"code" href=
"php__raphf_8h.html#structphp__persistent__handle__factory">php_persistent_handle_factory_t
</a> *pf;
</div>
822 <div class=
"line"> <a class=
"code" href=
"php__raphf_8h.html#structphp__resource__factory__ops">php_resource_factory_ops_t
</a> *ops;
</div>
823 <div class=
"line"></div>
824 <div class=
"line"> ops =
<a class=
"code" href=
"php__raphf_8h.html#a93458ab12d810f0fd545fb1464ba9eca">php_persistent_handle_get_resource_factory_ops
</a>();
</div>
825 <div class=
"line"></div>
826 <div class=
"line"> pf =
<a class=
"code" href=
"php__raphf_8h.html#a0a266874dafb69cf2b040378d4033901">php_persistent_handle_concede
</a>(NULL,
<span class=
"stringliteral">"my
"</span>,
2,
</div>
827 <div class=
"line"> persistent_id_str, persistent_id_len, NULL, NULL TSRMLS_CC);
</div>
828 <div class=
"line"></div>
829 <div class=
"line"> rf =
<a class=
"code" href=
"php__raphf_8h.html#ad20f10c53e3f33756638da98819367f0">php_resource_factory_init
</a>(NULL, ops, pf,
<a class=
"code" href=
"php__raphf_8h.html#ab12ec2da7189e16fbed40a3b73bc9ee2">php_persistent_handle_abandon
</a>);
</div>
830 <div class=
"line"> }
<span class=
"keywordflow">else
</span> {
</div>
831 <div class=
"line"> rf =
<a class=
"code" href=
"php__raphf_8h.html#ad20f10c53e3f33756638da98819367f0">php_resource_factory_init
</a>(NULL,
&myops, NULL, NULL);
</div>
832 <div class=
"line"> }
</div>
833 <div class=
"line"> <span class=
"keywordflow">return
</span> rf;
</div>
834 <div class=
"line">}
</div>
835 </div><!-- fragment -->
838 <a class=
"anchor" id=
"a3cbbe29c8a4ed9858c921c8ee539de59"></a>
839 <div class=
"memitem">
840 <div class=
"memproto">
841 <table class=
"memname">
843 <td class=
"memname">int php_persistent_handle_provide
</td>
845 <td class=
"paramtype">const char *
 </td>
846 <td class=
"paramname"><em>name_str
</em>,
</td>
849 <td class=
"paramkey"></td>
851 <td class=
"paramtype">size_t
 </td>
852 <td class=
"paramname"><em>name_len
</em>,
</td>
855 <td class=
"paramkey"></td>
857 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a29e0d7a66e441a5265ddf2f0adbbb3af">php_resource_factory_ops_t
</a> *
 </td>
858 <td class=
"paramname"><em>fops
</em>,
</td>
861 <td class=
"paramkey"></td>
863 <td class=
"paramtype">void *
 </td>
864 <td class=
"paramname"><em>data
</em>,
</td>
867 <td class=
"paramkey"></td>
869 <td class=
"paramtype">void(*)(void *)
 </td>
870 <td class=
"paramname"><em>dtor
</em> </td>
878 </div><div class=
"memdoc">
880 <p>Register a persistent handle provider in MINIT.
</p>
881 <p>Registers a factory provider for
<em>name_str
</em> with
<em>fops
</em> resource factory ops. Call this in your MINIT.
</p>
882 <p>A
<a class=
"el" href=
"structphp__resource__factory.html" title=
"The resource factory. ">php_resource_factory
</a> will be created with
<em>fops
</em>,
<em>data
</em> and
<em>dtor
</em> and will be stored together with a
<a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__list" title=
"Persistent handles storage. ">php_persistent_handle_list
</a> in the global raphf hash.
</p>
883 <p>A
<a class=
"el" href=
"php__raphf_8h.html#structphp__persistent__handle__factory" title=
"Definition of a persistent handle factory. ">php_persistent_handle_factory
</a> can then be retrieved by
<a class=
"el" href=
"php__raphf_8h.html#a0a266874dafb69cf2b040378d4033901" title=
"Retrieve a persistent handle factory at runtime. ">php_persistent_handle_concede()
</a> at runtime.
</p>
884 <dl class=
"params"><dt>Parameters
</dt><dd>
885 <table class=
"params">
886 <tr><td class=
"paramname">name_str
</td><td>the provider name, e.g.
"http\Client\Curl" </td></tr>
887 <tr><td class=
"paramname">name_len
</td><td>the provider name length, e.g. strlen(
"http\Client\Curl")
</td></tr>
888 <tr><td class=
"paramname">fops
</td><td>the resource factory ops
</td></tr>
889 <tr><td class=
"paramname">data
</td><td>opaque user data
</td></tr>
890 <tr><td class=
"paramname">dtor
</td><td><em>data
</em> destructor
</td></tr>
894 <dl class=
"section return"><dt>Returns
</dt><dd>SUCCESS/FAILURE
</dd></dl>
898 <a class=
"anchor" id=
"af08ee05c51d52200755d24f6f52df144"></a>
899 <div class=
"memitem">
900 <div class=
"memproto">
901 <table class=
"memname">
903 <td class=
"memname">void php_persistent_handle_release
</td>
905 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t
</a> *
 </td>
906 <td class=
"paramname"><em>a
</em>,
</td>
909 <td class=
"paramkey"></td>
911 <td class=
"paramtype">void *
 </td>
912 <td class=
"paramname"><em>handle
</em> </td>
920 </div><div class=
"memdoc">
922 <p>Release a persistent handle.
</p>
923 <p>That is, either put it back into the free list for later re-use or clean it up with
<a class=
"el" href=
"php__raphf_8h.html#a97dbb9d342f33205b92374c586676bc6" title=
"Destroy (and free) the resource. ">php_resource_factory_handle_dtor()
</a>.
</p>
924 <p>If a handle is put back into the free list, the
<a class=
"el" href=
"php__raphf_8h.html#a9299f3f0821061ad93d15c10cf735b6b" title=
"The persistent handle retire routine; may be NULL. ">php_persistent_handle_factory::retire
</a> callback will be executed for that handle.
</p>
925 <dl class=
"params"><dt>Parameters
</dt><dd>
926 <table class=
"params">
927 <tr><td class=
"paramname">a
</td><td>the persistent handle factory
</td></tr>
928 <tr><td class=
"paramname">handle
</td><td>the handle to release
</td></tr>
935 <a class=
"anchor" id=
"ae174fbe124d4cb6010e218a68379bd18"></a>
936 <div class=
"memitem">
937 <div class=
"memproto">
938 <table class=
"memname">
940 <td class=
"memname">HashTable* php_persistent_handle_statall
</td>
942 <td class=
"paramtype">HashTable *
 </td>
943 <td class=
"paramname"><em>ht
</em></td><td>)
</td>
947 </div><div class=
"memdoc">
949 <p>Retrieve statistics about the current process/thread's persistent handles.
</p>
950 <dl class=
"section return"><dt>Returns
</dt><dd>a HashTable like:
<div class=
"fragment"><div class=
"line">[
</div>
951 <div class=
"line"> <span class=
"stringliteral">"name
"</span> =
> [
</div>
952 <div class=
"line"> <span class=
"stringliteral">"ident
"</span> =
> [
</div>
953 <div class=
"line"> <span class=
"stringliteral">"used
"</span> =
> 1,
</div>
954 <div class=
"line"> <span class=
"stringliteral">"free
"</span> =
> 0,
</div>
955 <div class=
"line"> ]
</div>
956 <div class=
"line"> ]
</div>
957 <div class=
"line">]
</div>
958 </div><!-- fragment --> </dd></dl>
962 <a class=
"anchor" id=
"ae8be369197905047ffbd05c0ca80f245"></a>
963 <div class=
"memitem">
964 <div class=
"memproto">
965 <table class=
"memname">
967 <td class=
"memname">unsigned php_resource_factory_addref
</td>
969 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *
 </td>
970 <td class=
"paramname"><em>rf
</em></td><td>)
</td>
974 </div><div class=
"memdoc">
976 <p>Increase the refcount of the resource factory.
</p>
977 <dl class=
"params"><dt>Parameters
</dt><dd>
978 <table class=
"params">
979 <tr><td class=
"paramname">rf
</td><td>the resource factory
</td></tr>
983 <dl class=
"section return"><dt>Returns
</dt><dd>the new refcount
</dd></dl>
987 <a class=
"anchor" id=
"a016b8a4159e698f915ab967711696847"></a>
988 <div class=
"memitem">
989 <div class=
"memproto">
990 <table class=
"memname">
992 <td class=
"memname">void php_resource_factory_dtor
</td>
994 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *
 </td>
995 <td class=
"paramname"><em>f
</em></td><td>)
</td>
999 </div><div class=
"memdoc">
1001 <p>Destroy the resource factory.
</p>
1002 <p>If the factory's refcount reaches
0, the
<em>dtor
</em> for
<em>data
</em> is called.
</p>
1003 <dl class=
"params"><dt>Parameters
</dt><dd>
1004 <table class=
"params">
1005 <tr><td class=
"paramname">f
</td><td>the resource factory
</td></tr>
1012 <a class=
"anchor" id=
"a7f012d685f5f7c08f50288b61232e689"></a>
1013 <div class=
"memitem">
1014 <div class=
"memproto">
1015 <table class=
"memname">
1017 <td class=
"memname">void php_resource_factory_free
</td>
1019 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> **
 </td>
1020 <td class=
"paramname"><em>f
</em></td><td>)
</td>
1024 </div><div class=
"memdoc">
1026 <p>Destroy and free the resource factory.
</p>
1027 <p>Calls
<a class=
"el" href=
"php__raphf_8h.html#a016b8a4159e698f915ab967711696847" title=
"Destroy the resource factory. ">php_resource_factory_dtor()
</a> and frees \æ f if the factory's refcount reached
0.
</p>
1028 <dl class=
"params"><dt>Parameters
</dt><dd>
1029 <table class=
"params">
1030 <tr><td class=
"paramname">f
</td><td>the resource factory
</td></tr>
1037 <a class=
"anchor" id=
"a08db5f3698f2d0bf3d2f20dcf4e7b2b4"></a>
1038 <div class=
"memitem">
1039 <div class=
"memproto">
1040 <table class=
"memname">
1042 <td class=
"memname">void* php_resource_factory_handle_copy
</td>
1044 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *
 </td>
1045 <td class=
"paramname"><em>f
</em>,
</td>
1048 <td class=
"paramkey"></td>
1050 <td class=
"paramtype">void *
 </td>
1051 <td class=
"paramname"><em>handle
</em> </td>
1059 </div><div class=
"memdoc">
1061 <p>Create a copy of the resource
<em>handle
</em>.
</p>
1062 <dl class=
"params"><dt>Parameters
</dt><dd>
1063 <table class=
"params">
1064 <tr><td class=
"paramname">f
</td><td>the resource factory
</td></tr>
1065 <tr><td class=
"paramname">handle
</td><td>the resource to copy
</td></tr>
1069 <dl class=
"section return"><dt>Returns
</dt><dd>the copy
</dd></dl>
1073 <a class=
"anchor" id=
"a98d02dc80dd83095b8f901954350840c"></a>
1074 <div class=
"memitem">
1075 <div class=
"memproto">
1076 <table class=
"memname">
1078 <td class=
"memname">void* php_resource_factory_handle_ctor
</td>
1080 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *
 </td>
1081 <td class=
"paramname"><em>f
</em>,
</td>
1084 <td class=
"paramkey"></td>
1086 <td class=
"paramtype">void *
 </td>
1087 <td class=
"paramname"><em>init_arg
</em> </td>
1095 </div><div class=
"memdoc">
1097 <p>Construct a resource by the resource factory
<em>f
</em>.
</p>
1098 <dl class=
"params"><dt>Parameters
</dt><dd>
1099 <table class=
"params">
1100 <tr><td class=
"paramname">f
</td><td>the resource factory
</td></tr>
1101 <tr><td class=
"paramname">init_arg
</td><td>for the resource constructor
</td></tr>
1105 <dl class=
"section return"><dt>Returns
</dt><dd>the new resource
</dd></dl>
1109 <a class=
"anchor" id=
"a97dbb9d342f33205b92374c586676bc6"></a>
1110 <div class=
"memitem">
1111 <div class=
"memproto">
1112 <table class=
"memname">
1114 <td class=
"memname">void php_resource_factory_handle_dtor
</td>
1116 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *
 </td>
1117 <td class=
"paramname"><em>f
</em>,
</td>
1120 <td class=
"paramkey"></td>
1122 <td class=
"paramtype">void *
 </td>
1123 <td class=
"paramname"><em>handle
</em> </td>
1131 </div><div class=
"memdoc">
1133 <p>Destroy (and free) the resource.
</p>
1134 <dl class=
"params"><dt>Parameters
</dt><dd>
1135 <table class=
"params">
1136 <tr><td class=
"paramname">f
</td><td>the resource factory
</td></tr>
1137 <tr><td class=
"paramname">handle
</td><td>the resource to destroy
</td></tr>
1144 <a class=
"anchor" id=
"ad20f10c53e3f33756638da98819367f0"></a>
1145 <div class=
"memitem">
1146 <div class=
"memproto">
1147 <table class=
"memname">
1149 <td class=
"memname"><a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a>* php_resource_factory_init
</td>
1151 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t
</a> *
 </td>
1152 <td class=
"paramname"><em>f
</em>,
</td>
1155 <td class=
"paramkey"></td>
1157 <td class=
"paramtype"><a class=
"el" href=
"php__raphf_8h.html#a29e0d7a66e441a5265ddf2f0adbbb3af">php_resource_factory_ops_t
</a> *
 </td>
1158 <td class=
"paramname"><em>fops
</em>,
</td>
1161 <td class=
"paramkey"></td>
1163 <td class=
"paramtype">void *
 </td>
1164 <td class=
"paramname"><em>data
</em>,
</td>
1167 <td class=
"paramkey"></td>
1169 <td class=
"paramtype">void(*)(void *data)
 </td>
1170 <td class=
"paramname"><em>dtor
</em> </td>
1178 </div><div class=
"memdoc">
1180 <p>Initialize a resource factory.
</p>
1181 <p>If you register a
<em>dtor
</em> for a resource factory used with a persistent handle provider, be sure to call
<a class=
"el" href=
"php__raphf_8h.html#a0d661d1f880270146012eb8781e5343e" title=
"Clean persistent handles up. ">php_persistent_handle_cleanup()
</a> for your registered provider in MSHUTDOWN, else the dtor will point to no longer available memory if the extension has already been unloaded.
</p>
1182 <dl class=
"params"><dt>Parameters
</dt><dd>
1183 <table class=
"params">
1184 <tr><td class=
"paramname">f
</td><td>the factory to initialize; if NULL allocated on the heap
</td></tr>
1185 <tr><td class=
"paramname">fops
</td><td>the resource ops to assign to the factory
</td></tr>
1186 <tr><td class=
"paramname">data
</td><td>opaque user data; may be NULL
</td></tr>
1187 <tr><td class=
"paramname">dtor
</td><td>a destructor for the data; may be NULL
</td></tr>
1191 <dl class=
"section return"><dt>Returns
</dt><dd><em>f
</em> or an allocated resource factory
</dd></dl>
1195 </div><!-- contents -->
1196 </div><!-- doc-content -->
1197 <!-- start footer part -->
1198 <div id=
"nav-path" class=
"navpath"><!-- id is needed for treeview function! -->
1200 <li class=
"navelem"><a class=
"el" href=
"php__raphf_8h.html">php_raphf.h
</a></li>
1201 <li class=
"footer">Generated by
1202 <a href=
"http://www.doxygen.org/index.html">
1203 <img class=
"footer" src=
"doxygen.png" alt=
"doxygen"/></a> 1.8.5 </li>