82818d0dfff33ad6c99d52f0c560cadf871e09ec
[m6w6/ext-raphf] / php__raphf_8h.html
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">
3 <head>
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);
17 </script>
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); });
22 </script>
23 <link href="doxygen.css" rel="stylesheet" type="text/css" />
24 </head>
25 <body>
26 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
27 <div id="titlearea">
28 <table cellspacing="0" cellpadding="0">
29 <tbody>
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
34 </div>
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>
36 </td>
37 </tr>
38 </tbody>
39 </table>
40 </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');
45 </script>
46 <div id="navrow1" class="tabs">
47 <ul class="tablist">
48 <li><a href="index.html"><span>Main&#160;Page</span></a></li>
49 <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
50 <li class="current"><a href="files.html"><span>Files</span></a></li>
51 <li>
52 <div id="MSearchBox" class="MSearchBoxInactive">
53 <span class="left">
54 <img id="MSearchSelect" src="search/mag_sel.png"
55 onmouseover="return searchBox.OnSearchSelectShow()"
56 onmouseout="return searchBox.OnSearchSelectHide()"
57 alt=""/>
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>
64 </span>
65 </div>
66 </li>
67 </ul>
68 </div>
69 <div id="navrow2" class="tabs2">
70 <ul class="tablist">
71 <li><a href="files.html"><span>File&#160;List</span></a></li>
72 <li><a href="globals.html"><span>Globals</span></a></li>
73 </ul>
74 </div>
75 </div><!-- top -->
76 <div id="side-nav" class="ui-resizable side-nav-resizable">
77 <div id="nav-tree">
78 <div id="nav-tree-contents">
79 <div id="nav-sync" class="sync"></div>
80 </div>
81 </div>
82 <div id="splitbar" style="-moz-user-select:none;"
83 class="ui-resizable-handle">
84 </div>
85 </div>
86 <script type="text/javascript">
87 $(document).ready(function(){initNavTree('php__raphf_8h.html','');});
88 </script>
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">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a></div>
96
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">
101 </iframe>
102 </div>
103
104 <div class="header">
105 <div class="summary">
106 <a href="#nested-classes">Data Structures</a> &#124;
107 <a href="#typedef-members">Typedefs</a> &#124;
108 <a href="#func-members">Functions</a> </div>
109 <div class="headertitle">
110 <div class="title">php_raphf.h File Reference</div> </div>
111 </div><!--header-->
112 <div class="contents">
113
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 &#160;</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">&#160;</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">&#160;</td></tr>
121 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</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">&#160;</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">&#160;</td></tr>
124 <tr class="memitem:structphp__persistent__handle__list"><td class="memItemLeft" align="right" valign="top">struct &#160;</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">&#160;</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">&#160;</td></tr>
127 <tr class="memitem:structphp__persistent__handle__provider"><td class="memItemLeft" align="right" valign="top">struct &#160;</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">&#160;</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">&#160;</td></tr>
130 <tr class="memitem:structphp__persistent__handle__factory"><td class="memItemLeft" align="right" valign="top">struct &#160;</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">&#160;</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">&#160;</td></tr>
133 <tr class="memitem:structphp__persistent__handle__factory_8ident"><td class="memItemLeft" align="right" valign="top">struct &#160;</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">&#160;</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">&#160;</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 *(*&#160;</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">&#160;</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">&#160;</td></tr>
142 <tr class="memitem:a80169af0f2adacf3ec7c7ee1dfb19f96"><td class="memItemLeft" align="right" valign="top">typedef void *(*&#160;</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">&#160;</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">&#160;</td></tr>
145 <tr class="memitem:a472a7e1909aed64d00d43ea5c112b854"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</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">&#160;</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">&#160;</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>&#160;</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">&#160;</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">&#160;</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>&#160;</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">&#160;</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">&#160;</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>&#160;</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">&#160;</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">&#160;</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>&#160;</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">&#160;</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">&#160;</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>&#160;</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">&#160;</td></tr>
166 <tr class="memitem:a681ca1f7c1249199b45270be60c721c6"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</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">&#160;</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">&#160;</td></tr>
169 <tr class="memitem:a8f7d6389c67478ca0b99729a5dd3d305"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</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">&#160;</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">&#160;</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> *&#160;</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">&#160;</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">&#160;</td></tr>
178 <tr class="memitem:ae8be369197905047ffbd05c0ca80f245"><td class="memItemLeft" align="right" valign="top">unsigned&#160;</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">&#160;</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">&#160;</td></tr>
181 <tr class="memitem:a016b8a4159e698f915ab967711696847"><td class="memItemLeft" align="right" valign="top">void&#160;</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">&#160;</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">&#160;</td></tr>
184 <tr class="memitem:a7f012d685f5f7c08f50288b61232e689"><td class="memItemLeft" align="right" valign="top">void&#160;</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">&#160;</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">&#160;</td></tr>
187 <tr class="memitem:a98d02dc80dd83095b8f901954350840c"><td class="memItemLeft" align="right" valign="top">void *&#160;</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">&#160;</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">&#160;</td></tr>
190 <tr class="memitem:a08db5f3698f2d0bf3d2f20dcf4e7b2b4"><td class="memItemLeft" align="right" valign="top">void *&#160;</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">&#160;</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">&#160;</td></tr>
193 <tr class="memitem:a97dbb9d342f33205b92374c586676bc6"><td class="memItemLeft" align="right" valign="top">void&#160;</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">&#160;</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">&#160;</td></tr>
196 <tr class="memitem:a3cbbe29c8a4ed9858c921c8ee539de59"><td class="memItemLeft" align="right" valign="top">int&#160;</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">&#160;</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">&#160;</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> *&#160;</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">&#160;</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">&#160;</td></tr>
202 <tr class="memitem:ab12ec2da7189e16fbed40a3b73bc9ee2"><td class="memItemLeft" align="right" valign="top">void&#160;</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">&#160;</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">&#160;</td></tr>
205 <tr class="memitem:af6636e870497be0699d2781e5fc8a2a9"><td class="memItemLeft" align="right" valign="top">void *&#160;</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">&#160;</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">&#160;</td></tr>
208 <tr class="memitem:af08ee05c51d52200755d24f6f52df144"><td class="memItemLeft" align="right" valign="top">void&#160;</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">&#160;</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">&#160;</td></tr>
211 <tr class="memitem:ae8124f3f73e96e2193ae03c5519d2763"><td class="memItemLeft" align="right" valign="top">void *&#160;</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">&#160;</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">&#160;</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> *&#160;</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">&#160;</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">&#160;</td></tr>
217 <tr class="memitem:a0d661d1f880270146012eb8781e5343e"><td class="memItemLeft" align="right" valign="top">void&#160;</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">&#160;</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">&#160;</td></tr>
220 <tr class="memitem:ae174fbe124d4cb6010e218a68379bd18"><td class="memItemLeft" align="right" valign="top">HashTable *&#160;</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">&#160;</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">&#160;</td></tr>
223 </table>
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">
229 <tr>
230 <td class="memname">struct php_resource_factory_ops</td>
231 </tr>
232 </table>
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">
241 copy</td>
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">
247 ctor</td>
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">
253 dtor</td>
254 <td class="fielddoc">
255 The resource's destructor. </td></tr>
256 </table>
257
258 </div>
259 </div>
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">
264 <tr>
265 <td class="memname">struct php_persistent_handle_list</td>
266 </tr>
267 </table>
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">
275 free</td>
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">
281 used</td>
282 <td class="fielddoc">
283 Count of acquired resources. </td></tr>
284 </table>
285
286 </div>
287 </div>
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">
292 <tr>
293 <td class="memname">struct php_persistent_handle_provider</td>
294 </tr>
295 </table>
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">
311 list</td>
312 <td class="fielddoc">
313 The list of free handles. <p>Hash of "ident" =&gt; array(handles) entries. Persistent handles are acquired out of this list. </p>
314 </td></tr>
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">
318 rf</td>
319 <td class="fielddoc">
320 The resource factory. <p>New handles are created by this factory. </p>
321 </td></tr>
322 </table>
323
324 </div>
325 </div>
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">
330 <tr>
331 <td class="memname">struct php_persistent_handle_factory</td>
332 </tr>
333 </table>
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">
355 ident</td>
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">
361 provider</td>
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">
367 retire</td>
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">
373 wakeup</td>
374 <td class="fielddoc">
375 The persistent handle wakeup routine; may be NULL. </td></tr>
376 </table>
377
378 </div>
379 </div>
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">
384 <tr>
385 <td class="memname">struct php_persistent_handle_factory.ident</td>
386 </tr>
387 </table>
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">
395 len</td>
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">
401 str</td>
402 <td class="fielddoc">
403 ident string </td></tr>
404 </table>
405
406 </div>
407 </div>
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">
413 <tr>
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>
415 </tr>
416 </table>
417 </div><div class="memdoc">
418
419 </div>
420 </div>
421 <a class="anchor" id="a07f599598d2b87b188f39871d026c177"></a>
422 <div class="memitem">
423 <div class="memproto">
424 <table class="memname">
425 <tr>
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>
427 </tr>
428 </table>
429 </div><div class="memdoc">
430
431 <p>Persistent handles storage. </p>
432
433 </div>
434 </div>
435 <a class="anchor" id="a31f0595f4f726f762790cef844568fc4"></a>
436 <div class="memitem">
437 <div class="memproto">
438 <table class="memname">
439 <tr>
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>
441 </tr>
442 </table>
443 </div><div class="memdoc">
444
445 <p>Definition of a persistent handle provider. </p>
446 <p>Holds a resource factory an a persistent handle list. </p>
447
448 </div>
449 </div>
450 <a class="anchor" id="a8f7d6389c67478ca0b99729a5dd3d305"></a>
451 <div class="memitem">
452 <div class="memproto">
453 <table class="memname">
454 <tr>
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>
456 </tr>
457 </table>
458 </div><div class="memdoc">
459
460 <p>Retire the persistent handle on release. </p>
461
462 </div>
463 </div>
464 <a class="anchor" id="a681ca1f7c1249199b45270be60c721c6"></a>
465 <div class="memitem">
466 <div class="memproto">
467 <table class="memname">
468 <tr>
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>
470 </tr>
471 </table>
472 </div><div class="memdoc">
473
474 <p>Wakeup the persistent handle on re-acquisition. </p>
475
476 </div>
477 </div>
478 <a class="anchor" id="a80169af0f2adacf3ec7c7ee1dfb19f96"></a>
479 <div class="memitem">
480 <div class="memproto">
481 <table class="memname">
482 <tr>
483 <td class="memname">typedef void*(* php_resource_factory_handle_copy_t)(void *opaque, void *handle)</td>
484 </tr>
485 </table>
486 </div><div class="memdoc">
487
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>
493 </table>
494 </dd>
495 </dl>
496
497 </div>
498 </div>
499 <a class="anchor" id="a1c5d952a60130d2a68c8d68db2bebbd8"></a>
500 <div class="memitem">
501 <div class="memproto">
502 <table class="memname">
503 <tr>
504 <td class="memname">typedef void*(* php_resource_factory_handle_ctor_t)(void *opaque, void *init_arg)</td>
505 </tr>
506 </table>
507 </div><div class="memdoc">
508
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>
514 </table>
515 </dd>
516 </dl>
517 <dl class="section return"><dt>Returns</dt><dd>the created (persistent) handle </dd></dl>
518
519 </div>
520 </div>
521 <a class="anchor" id="a472a7e1909aed64d00d43ea5c112b854"></a>
522 <div class="memitem">
523 <div class="memproto">
524 <table class="memname">
525 <tr>
526 <td class="memname">typedef void(* php_resource_factory_handle_dtor_t)(void *opaque, void *handle)</td>
527 </tr>
528 </table>
529 </div><div class="memdoc">
530
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>
536 </table>
537 </dd>
538 </dl>
539
540 </div>
541 </div>
542 <a class="anchor" id="a29e0d7a66e441a5265ddf2f0adbbb3af"></a>
543 <div class="memitem">
544 <div class="memproto">
545 <table class="memname">
546 <tr>
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>
548 </tr>
549 </table>
550 </div><div class="memdoc">
551
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>
554
555 </div>
556 </div>
557 <a class="anchor" id="a4817c4b3d4077c48dff36376487ba8d4"></a>
558 <div class="memitem">
559 <div class="memproto">
560 <table class="memname">
561 <tr>
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>
563 </tr>
564 </table>
565 </div><div class="memdoc">
566
567 <p>The resource factory. </p>
568
569 </div>
570 </div>
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">
576 <tr>
577 <td class="memname">void php_persistent_handle_abandon </td>
578 <td>(</td>
579 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a> *&#160;</td>
580 <td class="paramname"><em>a</em></td><td>)</td>
581 <td></td>
582 </tr>
583 </table>
584 </div><div class="memdoc">
585
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>
591 </table>
592 </dd>
593 </dl>
594
595 </div>
596 </div>
597 <a class="anchor" id="ae8124f3f73e96e2193ae03c5519d2763"></a>
598 <div class="memitem">
599 <div class="memproto">
600 <table class="memname">
601 <tr>
602 <td class="memname">void* php_persistent_handle_accrete </td>
603 <td>(</td>
604 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a> *&#160;</td>
605 <td class="paramname"><em>a</em>, </td>
606 </tr>
607 <tr>
608 <td class="paramkey"></td>
609 <td></td>
610 <td class="paramtype">void *&#160;</td>
611 <td class="paramname"><em>handle</em>&#160;</td>
612 </tr>
613 <tr>
614 <td></td>
615 <td>)</td>
616 <td></td><td></td>
617 </tr>
618 </table>
619 </div><div class="memdoc">
620
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>
627 </table>
628 </dd>
629 </dl>
630
631 </div>
632 </div>
633 <a class="anchor" id="af6636e870497be0699d2781e5fc8a2a9"></a>
634 <div class="memitem">
635 <div class="memproto">
636 <table class="memname">
637 <tr>
638 <td class="memname">void* php_persistent_handle_acquire </td>
639 <td>(</td>
640 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a> *&#160;</td>
641 <td class="paramname"><em>a</em>, </td>
642 </tr>
643 <tr>
644 <td class="paramkey"></td>
645 <td></td>
646 <td class="paramtype">void *&#160;</td>
647 <td class="paramname"><em>init_arg</em>&#160;</td>
648 </tr>
649 <tr>
650 <td></td>
651 <td>)</td>
652 <td></td><td></td>
653 </tr>
654 </table>
655 </div><div class="memdoc">
656
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>
664 </table>
665 </dd>
666 </dl>
667 <dl class="section return"><dt>Returns</dt><dd>the acquired resource </dd></dl>
668
669 </div>
670 </div>
671 <a class="anchor" id="a0d661d1f880270146012eb8781e5343e"></a>
672 <div class="memitem">
673 <div class="memproto">
674 <table class="memname">
675 <tr>
676 <td class="memname">void php_persistent_handle_cleanup </td>
677 <td>(</td>
678 <td class="paramtype">const char *&#160;</td>
679 <td class="paramname"><em>name_str</em>, </td>
680 </tr>
681 <tr>
682 <td class="paramkey"></td>
683 <td></td>
684 <td class="paramtype">size_t&#160;</td>
685 <td class="paramname"><em>name_len</em>, </td>
686 </tr>
687 <tr>
688 <td class="paramkey"></td>
689 <td></td>
690 <td class="paramtype">const char *&#160;</td>
691 <td class="paramname"><em>ident_str</em>, </td>
692 </tr>
693 <tr>
694 <td class="paramkey"></td>
695 <td></td>
696 <td class="paramtype">size_t&#160;</td>
697 <td class="paramname"><em>ident_len</em>&#160;</td>
698 </tr>
699 <tr>
700 <td></td>
701 <td>)</td>
702 <td></td><td></td>
703 </tr>
704 </table>
705 </div><div class="memdoc">
706
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>
719 </table>
720 </dd>
721 </dl>
722
723 </div>
724 </div>
725 <a class="anchor" id="a0a266874dafb69cf2b040378d4033901"></a>
726 <div class="memitem">
727 <div class="memproto">
728 <table class="memname">
729 <tr>
730 <td class="memname"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a>* php_persistent_handle_concede </td>
731 <td>(</td>
732 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a> *&#160;</td>
733 <td class="paramname"><em>a</em>, </td>
734 </tr>
735 <tr>
736 <td class="paramkey"></td>
737 <td></td>
738 <td class="paramtype">const char *&#160;</td>
739 <td class="paramname"><em>name_str</em>, </td>
740 </tr>
741 <tr>
742 <td class="paramkey"></td>
743 <td></td>
744 <td class="paramtype">size_t&#160;</td>
745 <td class="paramname"><em>name_len</em>, </td>
746 </tr>
747 <tr>
748 <td class="paramkey"></td>
749 <td></td>
750 <td class="paramtype">const char *&#160;</td>
751 <td class="paramname"><em>ident_str</em>, </td>
752 </tr>
753 <tr>
754 <td class="paramkey"></td>
755 <td></td>
756 <td class="paramtype">size_t&#160;</td>
757 <td class="paramname"><em>ident_len</em>, </td>
758 </tr>
759 <tr>
760 <td class="paramkey"></td>
761 <td></td>
762 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a681ca1f7c1249199b45270be60c721c6">php_persistent_handle_wakeup_t</a>&#160;</td>
763 <td class="paramname"><em>wakeup</em>, </td>
764 </tr>
765 <tr>
766 <td class="paramkey"></td>
767 <td></td>
768 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a8f7d6389c67478ca0b99729a5dd3d305">php_persistent_handle_retire_t</a>&#160;</td>
769 <td class="paramname"><em>retire</em>&#160;</td>
770 </tr>
771 <tr>
772 <td></td>
773 <td>)</td>
774 <td></td><td></td>
775 </tr>
776 </table>
777 </div><div class="memdoc">
778
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>
791 </table>
792 </dd>
793 </dl>
794 <dl class="section return"><dt>Returns</dt><dd><em>a</em> or an allocated persistent handle factory </dd></dl>
795
796 </div>
797 </div>
798 <a class="anchor" id="a93458ab12d810f0fd545fb1464ba9eca"></a>
799 <div class="memitem">
800 <div class="memproto">
801 <table class="memname">
802 <tr>
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>
804 <td>(</td>
805 <td class="paramtype">void&#160;</td>
806 <td class="paramname"></td><td>)</td>
807 <td></td>
808 </tr>
809 </table>
810 </div><div class="memdoc">
811
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>
814 <p>Example: </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">&quot;my&quot;</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, &amp;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 -->
836 </div>
837 </div>
838 <a class="anchor" id="a3cbbe29c8a4ed9858c921c8ee539de59"></a>
839 <div class="memitem">
840 <div class="memproto">
841 <table class="memname">
842 <tr>
843 <td class="memname">int php_persistent_handle_provide </td>
844 <td>(</td>
845 <td class="paramtype">const char *&#160;</td>
846 <td class="paramname"><em>name_str</em>, </td>
847 </tr>
848 <tr>
849 <td class="paramkey"></td>
850 <td></td>
851 <td class="paramtype">size_t&#160;</td>
852 <td class="paramname"><em>name_len</em>, </td>
853 </tr>
854 <tr>
855 <td class="paramkey"></td>
856 <td></td>
857 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a29e0d7a66e441a5265ddf2f0adbbb3af">php_resource_factory_ops_t</a> *&#160;</td>
858 <td class="paramname"><em>fops</em>, </td>
859 </tr>
860 <tr>
861 <td class="paramkey"></td>
862 <td></td>
863 <td class="paramtype">void *&#160;</td>
864 <td class="paramname"><em>data</em>, </td>
865 </tr>
866 <tr>
867 <td class="paramkey"></td>
868 <td></td>
869 <td class="paramtype">void(*)(void *)&#160;</td>
870 <td class="paramname"><em>dtor</em>&#160;</td>
871 </tr>
872 <tr>
873 <td></td>
874 <td>)</td>
875 <td></td><td></td>
876 </tr>
877 </table>
878 </div><div class="memdoc">
879
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>
891 </table>
892 </dd>
893 </dl>
894 <dl class="section return"><dt>Returns</dt><dd>SUCCESS/FAILURE </dd></dl>
895
896 </div>
897 </div>
898 <a class="anchor" id="af08ee05c51d52200755d24f6f52df144"></a>
899 <div class="memitem">
900 <div class="memproto">
901 <table class="memname">
902 <tr>
903 <td class="memname">void php_persistent_handle_release </td>
904 <td>(</td>
905 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a> *&#160;</td>
906 <td class="paramname"><em>a</em>, </td>
907 </tr>
908 <tr>
909 <td class="paramkey"></td>
910 <td></td>
911 <td class="paramtype">void *&#160;</td>
912 <td class="paramname"><em>handle</em>&#160;</td>
913 </tr>
914 <tr>
915 <td></td>
916 <td>)</td>
917 <td></td><td></td>
918 </tr>
919 </table>
920 </div><div class="memdoc">
921
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>
929 </table>
930 </dd>
931 </dl>
932
933 </div>
934 </div>
935 <a class="anchor" id="ae174fbe124d4cb6010e218a68379bd18"></a>
936 <div class="memitem">
937 <div class="memproto">
938 <table class="memname">
939 <tr>
940 <td class="memname">HashTable* php_persistent_handle_statall </td>
941 <td>(</td>
942 <td class="paramtype">HashTable *&#160;</td>
943 <td class="paramname"><em>ht</em></td><td>)</td>
944 <td></td>
945 </tr>
946 </table>
947 </div><div class="memdoc">
948
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">&quot;name&quot;</span> =&gt; [</div>
952 <div class="line"> <span class="stringliteral">&quot;ident&quot;</span> =&gt; [</div>
953 <div class="line"> <span class="stringliteral">&quot;used&quot;</span> =&gt; 1,</div>
954 <div class="line"> <span class="stringliteral">&quot;free&quot;</span> =&gt; 0,</div>
955 <div class="line"> ]</div>
956 <div class="line"> ]</div>
957 <div class="line">]</div>
958 </div><!-- fragment --> </dd></dl>
959
960 </div>
961 </div>
962 <a class="anchor" id="ae8be369197905047ffbd05c0ca80f245"></a>
963 <div class="memitem">
964 <div class="memproto">
965 <table class="memname">
966 <tr>
967 <td class="memname">unsigned php_resource_factory_addref </td>
968 <td>(</td>
969 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
970 <td class="paramname"><em>rf</em></td><td>)</td>
971 <td></td>
972 </tr>
973 </table>
974 </div><div class="memdoc">
975
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>
980 </table>
981 </dd>
982 </dl>
983 <dl class="section return"><dt>Returns</dt><dd>the new refcount </dd></dl>
984
985 </div>
986 </div>
987 <a class="anchor" id="a016b8a4159e698f915ab967711696847"></a>
988 <div class="memitem">
989 <div class="memproto">
990 <table class="memname">
991 <tr>
992 <td class="memname">void php_resource_factory_dtor </td>
993 <td>(</td>
994 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
995 <td class="paramname"><em>f</em></td><td>)</td>
996 <td></td>
997 </tr>
998 </table>
999 </div><div class="memdoc">
1000
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>
1006 </table>
1007 </dd>
1008 </dl>
1009
1010 </div>
1011 </div>
1012 <a class="anchor" id="a7f012d685f5f7c08f50288b61232e689"></a>
1013 <div class="memitem">
1014 <div class="memproto">
1015 <table class="memname">
1016 <tr>
1017 <td class="memname">void php_resource_factory_free </td>
1018 <td>(</td>
1019 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> **&#160;</td>
1020 <td class="paramname"><em>f</em></td><td>)</td>
1021 <td></td>
1022 </tr>
1023 </table>
1024 </div><div class="memdoc">
1025
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>
1031 </table>
1032 </dd>
1033 </dl>
1034
1035 </div>
1036 </div>
1037 <a class="anchor" id="a08db5f3698f2d0bf3d2f20dcf4e7b2b4"></a>
1038 <div class="memitem">
1039 <div class="memproto">
1040 <table class="memname">
1041 <tr>
1042 <td class="memname">void* php_resource_factory_handle_copy </td>
1043 <td>(</td>
1044 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
1045 <td class="paramname"><em>f</em>, </td>
1046 </tr>
1047 <tr>
1048 <td class="paramkey"></td>
1049 <td></td>
1050 <td class="paramtype">void *&#160;</td>
1051 <td class="paramname"><em>handle</em>&#160;</td>
1052 </tr>
1053 <tr>
1054 <td></td>
1055 <td>)</td>
1056 <td></td><td></td>
1057 </tr>
1058 </table>
1059 </div><div class="memdoc">
1060
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>
1066 </table>
1067 </dd>
1068 </dl>
1069 <dl class="section return"><dt>Returns</dt><dd>the copy </dd></dl>
1070
1071 </div>
1072 </div>
1073 <a class="anchor" id="a98d02dc80dd83095b8f901954350840c"></a>
1074 <div class="memitem">
1075 <div class="memproto">
1076 <table class="memname">
1077 <tr>
1078 <td class="memname">void* php_resource_factory_handle_ctor </td>
1079 <td>(</td>
1080 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
1081 <td class="paramname"><em>f</em>, </td>
1082 </tr>
1083 <tr>
1084 <td class="paramkey"></td>
1085 <td></td>
1086 <td class="paramtype">void *&#160;</td>
1087 <td class="paramname"><em>init_arg</em>&#160;</td>
1088 </tr>
1089 <tr>
1090 <td></td>
1091 <td>)</td>
1092 <td></td><td></td>
1093 </tr>
1094 </table>
1095 </div><div class="memdoc">
1096
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>
1102 </table>
1103 </dd>
1104 </dl>
1105 <dl class="section return"><dt>Returns</dt><dd>the new resource </dd></dl>
1106
1107 </div>
1108 </div>
1109 <a class="anchor" id="a97dbb9d342f33205b92374c586676bc6"></a>
1110 <div class="memitem">
1111 <div class="memproto">
1112 <table class="memname">
1113 <tr>
1114 <td class="memname">void php_resource_factory_handle_dtor </td>
1115 <td>(</td>
1116 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
1117 <td class="paramname"><em>f</em>, </td>
1118 </tr>
1119 <tr>
1120 <td class="paramkey"></td>
1121 <td></td>
1122 <td class="paramtype">void *&#160;</td>
1123 <td class="paramname"><em>handle</em>&#160;</td>
1124 </tr>
1125 <tr>
1126 <td></td>
1127 <td>)</td>
1128 <td></td><td></td>
1129 </tr>
1130 </table>
1131 </div><div class="memdoc">
1132
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>
1138 </table>
1139 </dd>
1140 </dl>
1141
1142 </div>
1143 </div>
1144 <a class="anchor" id="ad20f10c53e3f33756638da98819367f0"></a>
1145 <div class="memitem">
1146 <div class="memproto">
1147 <table class="memname">
1148 <tr>
1149 <td class="memname"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a>* php_resource_factory_init </td>
1150 <td>(</td>
1151 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
1152 <td class="paramname"><em>f</em>, </td>
1153 </tr>
1154 <tr>
1155 <td class="paramkey"></td>
1156 <td></td>
1157 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a29e0d7a66e441a5265ddf2f0adbbb3af">php_resource_factory_ops_t</a> *&#160;</td>
1158 <td class="paramname"><em>fops</em>, </td>
1159 </tr>
1160 <tr>
1161 <td class="paramkey"></td>
1162 <td></td>
1163 <td class="paramtype">void *&#160;</td>
1164 <td class="paramname"><em>data</em>, </td>
1165 </tr>
1166 <tr>
1167 <td class="paramkey"></td>
1168 <td></td>
1169 <td class="paramtype">void(*)(void *data)&#160;</td>
1170 <td class="paramname"><em>dtor</em>&#160;</td>
1171 </tr>
1172 <tr>
1173 <td></td>
1174 <td>)</td>
1175 <td></td><td></td>
1176 </tr>
1177 </table>
1178 </div><div class="memdoc">
1179
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>
1188 </table>
1189 </dd>
1190 </dl>
1191 <dl class="section return"><dt>Returns</dt><dd><em>f</em> or an allocated resource factory </dd></dl>
1192
1193 </div>
1194 </div>
1195 </div><!-- contents -->
1196 </div><!-- doc-content -->
1197 <!-- start footer part -->
1198 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
1199 <ul>
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>
1204 </ul>
1205 </div>
1206 </body>
1207 </html>