update docs
[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.9.1"/>
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="navtreedata.js"></script>
14 <script type="text/javascript" src="navtree.js"></script>
15 <script type="text/javascript">
16 $(document).ready(initResizable);
17 $(window).load(resizeHeight);
18 </script>
19 <link href="search/search.css" rel="stylesheet" type="text/css"/>
20 <script type="text/javascript" src="search/searchdata.js"></script>
21 <script type="text/javascript" src="search/search.js"></script>
22 <script type="text/javascript">
23 $(document).ready(function() { init_search(); });
24 </script>
25 <link href="doxygen.css" rel="stylesheet" type="text/css" />
26 </head>
27 <body>
28 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
29 <div id="titlearea">
30 <table cellspacing="0" cellpadding="0">
31 <tbody>
32 <tr style="height: 56px;">
33 <td id="projectlogo"><img alt="Logo" src="raphf.png"/></td>
34 <td style="padding-left: 0.5em;">
35 <div id="projectname">Resource and persistent handle factory API
36 </div>
37 <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>
38 </td>
39 </tr>
40 </tbody>
41 </table>
42 </div>
43 <!-- end header part -->
44 <!-- Generated by Doxygen 1.8.9.1 -->
45 <script type="text/javascript">
46 var searchBox = new SearchBox("searchBox", "search",false,'Search');
47 </script>
48 <div id="navrow1" class="tabs">
49 <ul class="tablist">
50 <li><a href="index.html"><span>Main&#160;Page</span></a></li>
51 <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
52 <li class="current"><a href="files.html"><span>Files</span></a></li>
53 <li>
54 <div id="MSearchBox" class="MSearchBoxInactive">
55 <span class="left">
56 <img id="MSearchSelect" src="search/mag_sel.png"
57 onmouseover="return searchBox.OnSearchSelectShow()"
58 onmouseout="return searchBox.OnSearchSelectHide()"
59 alt=""/>
60 <input type="text" id="MSearchField" value="Search" accesskey="S"
61 onfocus="searchBox.OnSearchFieldFocus(true)"
62 onblur="searchBox.OnSearchFieldFocus(false)"
63 onkeyup="searchBox.OnSearchFieldChange(event)"/>
64 </span><span class="right">
65 <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
66 </span>
67 </div>
68 </li>
69 </ul>
70 </div>
71 <div id="navrow2" class="tabs2">
72 <ul class="tablist">
73 <li><a href="files.html"><span>File&#160;List</span></a></li>
74 <li><a href="globals.html"><span>Globals</span></a></li>
75 </ul>
76 </div>
77 </div><!-- top -->
78 <div id="side-nav" class="ui-resizable side-nav-resizable">
79 <div id="nav-tree">
80 <div id="nav-tree-contents">
81 <div id="nav-sync" class="sync"></div>
82 </div>
83 </div>
84 <div id="splitbar" style="-moz-user-select:none;"
85 class="ui-resizable-handle">
86 </div>
87 </div>
88 <script type="text/javascript">
89 $(document).ready(function(){initNavTree('php__raphf_8h.html','');});
90 </script>
91 <div id="doc-content">
92 <!-- window showing the filter options -->
93 <div id="MSearchSelectWindow"
94 onmouseover="return searchBox.OnSearchSelectShow()"
95 onmouseout="return searchBox.OnSearchSelectHide()"
96 onkeydown="return searchBox.OnSearchSelectKey(event)">
97 </div>
98
99 <!-- iframe showing the search results (closed by default) -->
100 <div id="MSearchResultsWindow">
101 <iframe src="javascript:void(0)" frameborder="0"
102 name="MSearchResults" id="MSearchResults">
103 </iframe>
104 </div>
105
106 <div class="header">
107 <div class="summary">
108 <a href="#nested-classes">Data Structures</a> &#124;
109 <a href="#typedef-members">Typedefs</a> &#124;
110 <a href="#func-members">Functions</a> </div>
111 <div class="headertitle">
112 <div class="title">php_raphf.h File Reference</div> </div>
113 </div><!--header-->
114 <div class="contents">
115
116 <p><a href="php__raphf_8h_source.html">Go to the source code of this file.</a></p>
117 <table class="memberdecls">
118 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
119 Data Structures</h2></td></tr>
120 <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>
121 <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>
122 <tr class="separator:structphp__resource__factory__ops"><td class="memSeparator" colspan="2">&#160;</td></tr>
123 <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>
124 <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>
125 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
126 <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>
127 <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>
128 <tr class="separator:structphp__persistent__handle__list"><td class="memSeparator" colspan="2">&#160;</td></tr>
129 <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>
130 <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>
131 <tr class="separator:structphp__persistent__handle__provider"><td class="memSeparator" colspan="2">&#160;</td></tr>
132 <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>
133 <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>
134 <tr class="separator:structphp__persistent__handle__factory"><td class="memSeparator" colspan="2">&#160;</td></tr>
135 <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>
136 <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>
137 <tr class="separator:structphp__persistent__handle__factory_8ident"><td class="memSeparator" colspan="2">&#160;</td></tr>
138 </table><table class="memberdecls">
139 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
140 Typedefs</h2></td></tr>
141 <tr class="memitem:abadff49d810f7ce220bd3537bdaecef7"><td class="memItemLeft" align="right" valign="top">typedef void *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="php__raphf_8h.html#abadff49d810f7ce220bd3537bdaecef7">php_resource_factory_handle_ctor_t</a>) (void *opaque, void *init_arg)</td></tr>
142 <tr class="memdesc:abadff49d810f7ce220bd3537bdaecef7"><td class="mdescLeft">&#160;</td><td class="mdescRight">A resource constructor. <a href="#abadff49d810f7ce220bd3537bdaecef7">More...</a><br /></td></tr>
143 <tr class="separator:abadff49d810f7ce220bd3537bdaecef7"><td class="memSeparator" colspan="2">&#160;</td></tr>
144 <tr class="memitem:a23b073aa7b8b7dd182b336b07494288f"><td class="memItemLeft" align="right" valign="top">typedef void *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="php__raphf_8h.html#a23b073aa7b8b7dd182b336b07494288f">php_resource_factory_handle_copy_t</a>) (void *opaque, void *handle)</td></tr>
145 <tr class="memdesc:a23b073aa7b8b7dd182b336b07494288f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The copy constructor of a resource. <a href="#a23b073aa7b8b7dd182b336b07494288f">More...</a><br /></td></tr>
146 <tr class="separator:a23b073aa7b8b7dd182b336b07494288f"><td class="memSeparator" colspan="2">&#160;</td></tr>
147 <tr class="memitem:a1b826c765392c93336db79bd6697e33d"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="php__raphf_8h.html#a1b826c765392c93336db79bd6697e33d">php_resource_factory_handle_dtor_t</a>) (void *opaque, void *handle)</td></tr>
148 <tr class="memdesc:a1b826c765392c93336db79bd6697e33d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The destructor of a resource. <a href="#a1b826c765392c93336db79bd6697e33d">More...</a><br /></td></tr>
149 <tr class="separator:a1b826c765392c93336db79bd6697e33d"><td class="memSeparator" colspan="2">&#160;</td></tr>
150 <tr class="memitem:a29e0d7a66e441a5265ddf2f0adbbb3af"><td class="memItemLeft" align="right" valign="top">typedef struct <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>
151 <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>
152 <tr class="separator:a29e0d7a66e441a5265ddf2f0adbbb3af"><td class="memSeparator" colspan="2">&#160;</td></tr>
153 <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>
154 <tr class="memdesc:a4817c4b3d4077c48dff36376487ba8d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The resource factory. <a href="#a4817c4b3d4077c48dff36376487ba8d4">More...</a><br /></td></tr>
155 <tr class="separator:a4817c4b3d4077c48dff36376487ba8d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
156 <tr class="memitem:a07f599598d2b87b188f39871d026c177"><td class="memItemLeft" align="right" valign="top">typedef struct <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 <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>
160 <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>
161 <tr class="separator:a31f0595f4f726f762790cef844568fc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
162 <tr class="memitem:a833eaa62ffcc217e5749c26c18885b17"><td class="memItemLeft" align="right" valign="top">typedef struct <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>
163 <tr class="separator:a833eaa62ffcc217e5749c26c18885b17"><td class="memSeparator" colspan="2">&#160;</td></tr>
164 <tr class="memitem:a59f5566ecc4c76e048ad53469eb20142"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="php__raphf_8h.html#a59f5566ecc4c76e048ad53469eb20142">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>
165 <tr class="memdesc:a59f5566ecc4c76e048ad53469eb20142"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wakeup the persistent handle on re-acquisition. <a href="#a59f5566ecc4c76e048ad53469eb20142">More...</a><br /></td></tr>
166 <tr class="separator:a59f5566ecc4c76e048ad53469eb20142"><td class="memSeparator" colspan="2">&#160;</td></tr>
167 <tr class="memitem:a85e9e715d308dc5d98b980c9c57d02bf"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="php__raphf_8h.html#a85e9e715d308dc5d98b980c9c57d02bf">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>
168 <tr class="memdesc:a85e9e715d308dc5d98b980c9c57d02bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retire the persistent handle on release. <a href="#a85e9e715d308dc5d98b980c9c57d02bf">More...</a><br /></td></tr>
169 <tr class="separator:a85e9e715d308dc5d98b980c9c57d02bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
170 </table><table class="memberdecls">
171 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
172 Functions</h2></td></tr>
173 <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>
174 <tr class="memdesc:ad20f10c53e3f33756638da98819367f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a resource factory. <a href="#ad20f10c53e3f33756638da98819367f0">More...</a><br /></td></tr>
175 <tr class="separator:ad20f10c53e3f33756638da98819367f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
176 <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>
177 <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>
178 <tr class="separator:ae8be369197905047ffbd05c0ca80f245"><td class="memSeparator" colspan="2">&#160;</td></tr>
179 <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>
180 <tr class="memdesc:a016b8a4159e698f915ab967711696847"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy the resource factory. <a href="#a016b8a4159e698f915ab967711696847">More...</a><br /></td></tr>
181 <tr class="separator:a016b8a4159e698f915ab967711696847"><td class="memSeparator" colspan="2">&#160;</td></tr>
182 <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>
183 <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>
184 <tr class="separator:a7f012d685f5f7c08f50288b61232e689"><td class="memSeparator" colspan="2">&#160;</td></tr>
185 <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>
186 <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>
187 <tr class="separator:a98d02dc80dd83095b8f901954350840c"><td class="memSeparator" colspan="2">&#160;</td></tr>
188 <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>
189 <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>
190 <tr class="separator:a08db5f3698f2d0bf3d2f20dcf4e7b2b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
191 <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>
192 <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>
193 <tr class="separator:a97dbb9d342f33205b92374c586676bc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
194 <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>
195 <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>
196 <tr class="separator:a3cbbe29c8a4ed9858c921c8ee539de59"><td class="memSeparator" colspan="2">&#160;</td></tr>
197 <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#a59f5566ecc4c76e048ad53469eb20142">php_persistent_handle_wakeup_t</a> wakeup, <a class="el" href="php__raphf_8h.html#a85e9e715d308dc5d98b980c9c57d02bf">php_persistent_handle_retire_t</a> retire)</td></tr>
198 <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>
199 <tr class="separator:a0a266874dafb69cf2b040378d4033901"><td class="memSeparator" colspan="2">&#160;</td></tr>
200 <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>
201 <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>
202 <tr class="separator:ab12ec2da7189e16fbed40a3b73bc9ee2"><td class="memSeparator" colspan="2">&#160;</td></tr>
203 <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>
204 <tr class="memdesc:af6636e870497be0699d2781e5fc8a2a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Acquire a persistent handle. <a href="#af6636e870497be0699d2781e5fc8a2a9">More...</a><br /></td></tr>
205 <tr class="separator:af6636e870497be0699d2781e5fc8a2a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
206 <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>
207 <tr class="memdesc:af08ee05c51d52200755d24f6f52df144"><td class="mdescLeft">&#160;</td><td class="mdescRight">Release a persistent handle. <a href="#af08ee05c51d52200755d24f6f52df144">More...</a><br /></td></tr>
208 <tr class="separator:af08ee05c51d52200755d24f6f52df144"><td class="memSeparator" colspan="2">&#160;</td></tr>
209 <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>
210 <tr class="memdesc:ae8124f3f73e96e2193ae03c5519d2763"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a persistent handle. <a href="#ae8124f3f73e96e2193ae03c5519d2763">More...</a><br /></td></tr>
211 <tr class="separator:ae8124f3f73e96e2193ae03c5519d2763"><td class="memSeparator" colspan="2">&#160;</td></tr>
212 <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>
213 <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>
214 <tr class="separator:a93458ab12d810f0fd545fb1464ba9eca"><td class="memSeparator" colspan="2">&#160;</td></tr>
215 <tr class="memitem:ab754f4d59dab5de0edf702a9ab2f4e03"><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#ab754f4d59dab5de0edf702a9ab2f4e03">php_persistent_handle_resource_factory_init</a> (<a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *a, <a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a> *pf)</td></tr>
216 <tr class="memdesc:ab754f4d59dab5de0edf702a9ab2f4e03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a resource factory for persistent handles. <a href="#ab754f4d59dab5de0edf702a9ab2f4e03">More...</a><br /></td></tr>
217 <tr class="separator:ab754f4d59dab5de0edf702a9ab2f4e03"><td class="memSeparator" colspan="2">&#160;</td></tr>
218 <tr class="memitem:a617d2cc656ab6427388b938597194ebb"><td class="memItemLeft" align="right" valign="top">zend_bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="php__raphf_8h.html#a617d2cc656ab6427388b938597194ebb">php_resource_factory_is_persistent</a> (<a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *a)</td></tr>
219 <tr class="memdesc:a617d2cc656ab6427388b938597194ebb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a resource factory is a persistent handle resource factory. <a href="#a617d2cc656ab6427388b938597194ebb">More...</a><br /></td></tr>
220 <tr class="separator:a617d2cc656ab6427388b938597194ebb"><td class="memSeparator" colspan="2">&#160;</td></tr>
221 <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>
222 <tr class="memdesc:a0d661d1f880270146012eb8781e5343e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clean persistent handles up. <a href="#a0d661d1f880270146012eb8781e5343e">More...</a><br /></td></tr>
223 <tr class="separator:a0d661d1f880270146012eb8781e5343e"><td class="memSeparator" colspan="2">&#160;</td></tr>
224 <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>
225 <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>
226 <tr class="separator:ae174fbe124d4cb6010e218a68379bd18"><td class="memSeparator" colspan="2">&#160;</td></tr>
227 </table>
228 <hr/><h2 class="groupheader">Data Structure Documentation</h2>
229 <a name="structphp__resource__factory__ops" id="structphp__resource__factory__ops"></a>
230 <div class="memitem">
231 <div class="memproto">
232 <table class="memname">
233 <tr>
234 <td class="memname">struct php_resource_factory_ops</td>
235 </tr>
236 </table>
237 </div><div class="memdoc">
238 <div class="textblock"><p>The resource ops consisting of a ctor, a copy ctor and a dtor. </p>
239 <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>
240 </div><table class="fieldtable">
241 <tr><th colspan="3">Data Fields</th></tr>
242 <tr><td class="fieldtype">
243 <a class="anchor" id="a8094f85df976aff73148bc579ae72e38"></a><a class="el" href="php__raphf_8h.html#a23b073aa7b8b7dd182b336b07494288f">php_resource_factory_handle_copy_t</a></td>
244 <td class="fieldname">
245 copy</td>
246 <td class="fielddoc">
247 The resource's copy constructor. </td></tr>
248 <tr><td class="fieldtype">
249 <a class="anchor" id="a044b07071758dbc53f87bfd212400ac0"></a><a class="el" href="php__raphf_8h.html#abadff49d810f7ce220bd3537bdaecef7">php_resource_factory_handle_ctor_t</a></td>
250 <td class="fieldname">
251 ctor</td>
252 <td class="fielddoc">
253 The resource constructor. </td></tr>
254 <tr><td class="fieldtype">
255 <a class="anchor" id="acb8a7a04b86f08db41a2d6232676c65c"></a><a class="el" href="php__raphf_8h.html#a1b826c765392c93336db79bd6697e33d">php_resource_factory_handle_dtor_t</a></td>
256 <td class="fieldname">
257 dtor</td>
258 <td class="fielddoc">
259 The resource's destructor. </td></tr>
260 </table>
261
262 </div>
263 </div>
264 <a name="structphp__persistent__handle__list" id="structphp__persistent__handle__list"></a>
265 <div class="memitem">
266 <div class="memproto">
267 <table class="memname">
268 <tr>
269 <td class="memname">struct php_persistent_handle_list</td>
270 </tr>
271 </table>
272 </div><div class="memdoc">
273 <div class="textblock"><p>Persistent handles storage. </p>
274 </div><table class="fieldtable">
275 <tr><th colspan="3">Data Fields</th></tr>
276 <tr><td class="fieldtype">
277 <a class="anchor" id="a653a4a0e9c39ad942e9573e197f62974"></a>HashTable</td>
278 <td class="fieldname">
279 free</td>
280 <td class="fielddoc">
281 Storage of free resources. </td></tr>
282 <tr><td class="fieldtype">
283 <a class="anchor" id="a119a44fd9f5ae066b6d77e7a35a25cd0"></a>ulong</td>
284 <td class="fieldname">
285 used</td>
286 <td class="fielddoc">
287 Count of acquired resources. </td></tr>
288 </table>
289
290 </div>
291 </div>
292 <a name="structphp__persistent__handle__provider" id="structphp__persistent__handle__provider"></a>
293 <div class="memitem">
294 <div class="memproto">
295 <table class="memname">
296 <tr>
297 <td class="memname">struct php_persistent_handle_provider</td>
298 </tr>
299 </table>
300 </div><div class="memdoc">
301 <div class="textblock"><p>Definition of a persistent handle provider. </p>
302 <p>Holds a resource factory an a persistent handle list. </p>
303 </div><div class="dynheader">
304 Collaboration diagram for php_persistent_handle_provider:</div>
305 <div class="dyncontent">
306 <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>
307 <map name="php__persistent__handle__provider_coll__map" id="php__persistent__handle__provider_coll__map">
308 <area shape="rect" id="node2" href="php__raphf_8h.html#structphp__persistent__handle__list" title="Persistent handles storage. " alt="" coords="5,95,197,121"/><area shape="rect" id="node3" href="structphp__resource__factory.html" title="The resource factory. " alt="" coords="221,95,381,121"/><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="206,5,397,32"/></map>
309 <center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
310 <table class="fieldtable">
311 <tr><th colspan="3">Data Fields</th></tr>
312 <tr><td class="fieldtype">
313 <a class="anchor" id="a4935f6446b1d4a2feb7a22dfc4e5d6d0"></a><a class="el" href="php__raphf_8h.html#a07f599598d2b87b188f39871d026c177">php_persistent_handle_list_t</a></td>
314 <td class="fieldname">
315 list</td>
316 <td class="fielddoc">
317 The list of free handles. <p>Hash of "ident" =&gt; array(handles) entries. Persistent handles are acquired out of this list. </p>
318 </td></tr>
319 <tr><td class="fieldtype">
320 <a class="anchor" id="a8204714f100b74b028652951ca40abd3"></a><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a></td>
321 <td class="fieldname">
322 rf</td>
323 <td class="fielddoc">
324 The resource factory. <p>New handles are created by this factory. </p>
325 </td></tr>
326 </table>
327
328 </div>
329 </div>
330 <a name="structphp__persistent__handle__factory" id="structphp__persistent__handle__factory"></a>
331 <div class="memitem">
332 <div class="memproto">
333 <table class="memname">
334 <tr>
335 <td class="memname">struct php_persistent_handle_factory</td>
336 </tr>
337 </table>
338 </div><div class="memdoc">
339 <div class="textblock"><p>Definition of a persistent handle factory. </p>
340 <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>
341 </div><div class="dynheader">
342 Collaboration diagram for php_persistent_handle_factory:</div>
343 <div class="dyncontent">
344 <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>
345 <map name="php__persistent__handle__factory_coll__map" id="php__persistent__handle__factory_coll__map">
346 <area shape="rect" id="node2" href="php__raphf_8h.html#structphp__persistent__handle__provider" title="Definition of a persistent handle provider. " alt="" coords="81,184,247,225"/><area shape="rect" id="node3" href="php__raphf_8h.html#structphp__persistent__handle__list" title="Persistent handles storage. " alt="" coords="5,95,197,121"/><area shape="rect" id="node4" href="structphp__resource__factory.html" title="The resource factory. " alt="" coords="221,95,381,121"/><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="206,5,397,32"/></map>
347 <center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
348 <table class="fieldtable">
349 <tr><th colspan="3">Data Fields</th></tr>
350 <tr><td class="fieldtype">
351 <a class="anchor" id="a84ffa94401b9869e14c190be4bb1b6be"></a>unsigned</td>
352 <td class="fieldname">
353 free_on_abandon:1</td>
354 <td class="fielddoc">
355 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>
356 <tr><td class="fieldtype">
357 <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>
358 <td class="fieldname">
359 ident</td>
360 <td class="fielddoc">
361 The ident for which this factory manages resources. </td></tr>
362 <tr><td class="fieldtype">
363 <a class="anchor" id="a43aabcbe7ec4b5ff463f74cfcf788f51"></a><a class="el" href="php__raphf_8h.html#a31f0595f4f726f762790cef844568fc4">php_persistent_handle_provider_t</a> *</td>
364 <td class="fieldname">
365 provider</td>
366 <td class="fielddoc">
367 The persistent handle provider. </td></tr>
368 <tr><td class="fieldtype">
369 <a class="anchor" id="a9299f3f0821061ad93d15c10cf735b6b"></a><a class="el" href="php__raphf_8h.html#a85e9e715d308dc5d98b980c9c57d02bf">php_persistent_handle_retire_t</a></td>
370 <td class="fieldname">
371 retire</td>
372 <td class="fielddoc">
373 The persistent handle retire routine; may be NULL. </td></tr>
374 <tr><td class="fieldtype">
375 <a class="anchor" id="a6633b7c860e4538942e0367d64ed5af7"></a><a class="el" href="php__raphf_8h.html#a59f5566ecc4c76e048ad53469eb20142">php_persistent_handle_wakeup_t</a></td>
376 <td class="fieldname">
377 wakeup</td>
378 <td class="fielddoc">
379 The persistent handle wakeup routine; may be NULL. </td></tr>
380 </table>
381
382 </div>
383 </div>
384 <a name="structphp__persistent__handle__factory_8ident" id="structphp__persistent__handle__factory_8ident"></a>
385 <div class="memitem">
386 <div class="memproto">
387 <table class="memname">
388 <tr>
389 <td class="memname">struct php_persistent_handle_factory.ident</td>
390 </tr>
391 </table>
392 </div><div class="memdoc">
393 <div class="textblock"><p>The ident for which this factory manages resources. </p>
394 </div><table class="fieldtable">
395 <tr><th colspan="3">Data Fields</th></tr>
396 <tr><td class="fieldtype">
397 <a class="anchor" id="af5a8e923f8cd24b56b3bab32358cc58a"></a>size_t</td>
398 <td class="fieldname">
399 len</td>
400 <td class="fielddoc">
401 ident length </td></tr>
402 <tr><td class="fieldtype">
403 <a class="anchor" id="a341be97d9aff90c9978347f66f945b77"></a>char *</td>
404 <td class="fieldname">
405 str</td>
406 <td class="fielddoc">
407 ident string </td></tr>
408 </table>
409
410 </div>
411 </div>
412 <h2 class="groupheader">Typedef Documentation</h2>
413 <a class="anchor" id="a833eaa62ffcc217e5749c26c18885b17"></a>
414 <div class="memitem">
415 <div class="memproto">
416 <table class="memname">
417 <tr>
418 <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>
419 </tr>
420 </table>
421 </div><div class="memdoc">
422
423 </div>
424 </div>
425 <a class="anchor" id="a07f599598d2b87b188f39871d026c177"></a>
426 <div class="memitem">
427 <div class="memproto">
428 <table class="memname">
429 <tr>
430 <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>
431 </tr>
432 </table>
433 </div><div class="memdoc">
434
435 <p>Persistent handles storage. </p>
436
437 </div>
438 </div>
439 <a class="anchor" id="a31f0595f4f726f762790cef844568fc4"></a>
440 <div class="memitem">
441 <div class="memproto">
442 <table class="memname">
443 <tr>
444 <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>
445 </tr>
446 </table>
447 </div><div class="memdoc">
448
449 <p>Definition of a persistent handle provider. </p>
450 <p>Holds a resource factory an a persistent handle list. </p>
451
452 </div>
453 </div>
454 <a class="anchor" id="a85e9e715d308dc5d98b980c9c57d02bf"></a>
455 <div class="memitem">
456 <div class="memproto">
457 <table class="memname">
458 <tr>
459 <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>
460 </tr>
461 </table>
462 </div><div class="memdoc">
463
464 <p>Retire the persistent handle on release. </p>
465
466 </div>
467 </div>
468 <a class="anchor" id="a59f5566ecc4c76e048ad53469eb20142"></a>
469 <div class="memitem">
470 <div class="memproto">
471 <table class="memname">
472 <tr>
473 <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>
474 </tr>
475 </table>
476 </div><div class="memdoc">
477
478 <p>Wakeup the persistent handle on re-acquisition. </p>
479
480 </div>
481 </div>
482 <a class="anchor" id="a23b073aa7b8b7dd182b336b07494288f"></a>
483 <div class="memitem">
484 <div class="memproto">
485 <table class="memname">
486 <tr>
487 <td class="memname">typedef void*(* php_resource_factory_handle_copy_t) (void *opaque, void *handle)</td>
488 </tr>
489 </table>
490 </div><div class="memdoc">
491
492 <p>The copy constructor of a resource. </p>
493 <dl class="params"><dt>Parameters</dt><dd>
494 <table class="params">
495 <tr><td class="paramname">opaque</td><td>the factory's data </td></tr>
496 <tr><td class="paramname">handle</td><td>the (persistent) handle to copy </td></tr>
497 </table>
498 </dd>
499 </dl>
500
501 </div>
502 </div>
503 <a class="anchor" id="abadff49d810f7ce220bd3537bdaecef7"></a>
504 <div class="memitem">
505 <div class="memproto">
506 <table class="memname">
507 <tr>
508 <td class="memname">typedef void*(* php_resource_factory_handle_ctor_t) (void *opaque, void *init_arg)</td>
509 </tr>
510 </table>
511 </div><div class="memdoc">
512
513 <p>A resource constructor. </p>
514 <dl class="params"><dt>Parameters</dt><dd>
515 <table class="params">
516 <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>
517 <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>
518 </table>
519 </dd>
520 </dl>
521 <dl class="section return"><dt>Returns</dt><dd>the created (persistent) handle </dd></dl>
522
523 </div>
524 </div>
525 <a class="anchor" id="a1b826c765392c93336db79bd6697e33d"></a>
526 <div class="memitem">
527 <div class="memproto">
528 <table class="memname">
529 <tr>
530 <td class="memname">typedef void(* php_resource_factory_handle_dtor_t) (void *opaque, void *handle)</td>
531 </tr>
532 </table>
533 </div><div class="memdoc">
534
535 <p>The destructor of a resource. </p>
536 <dl class="params"><dt>Parameters</dt><dd>
537 <table class="params">
538 <tr><td class="paramname">opaque</td><td>the factory's data </td></tr>
539 <tr><td class="paramname">handle</td><td>the handle to destroy </td></tr>
540 </table>
541 </dd>
542 </dl>
543
544 </div>
545 </div>
546 <a class="anchor" id="a29e0d7a66e441a5265ddf2f0adbbb3af"></a>
547 <div class="memitem">
548 <div class="memproto">
549 <table class="memname">
550 <tr>
551 <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>
552 </tr>
553 </table>
554 </div><div class="memdoc">
555
556 <p>The resource ops consisting of a ctor, a copy ctor and a dtor. </p>
557 <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>
558
559 </div>
560 </div>
561 <a class="anchor" id="a4817c4b3d4077c48dff36376487ba8d4"></a>
562 <div class="memitem">
563 <div class="memproto">
564 <table class="memname">
565 <tr>
566 <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>
567 </tr>
568 </table>
569 </div><div class="memdoc">
570
571 <p>The resource factory. </p>
572
573 </div>
574 </div>
575 <h2 class="groupheader">Function Documentation</h2>
576 <a class="anchor" id="ab12ec2da7189e16fbed40a3b73bc9ee2"></a>
577 <div class="memitem">
578 <div class="memproto">
579 <table class="memname">
580 <tr>
581 <td class="memname">void php_persistent_handle_abandon </td>
582 <td>(</td>
583 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a> *&#160;</td>
584 <td class="paramname"><em>a</em></td><td>)</td>
585 <td></td>
586 </tr>
587 </table>
588 </div><div class="memdoc">
589
590 <p>Abandon the persistent handle factory. </p>
591 <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>
592 <dl class="params"><dt>Parameters</dt><dd>
593 <table class="params">
594 <tr><td class="paramname">a</td><td>the persistent handle factory to destroy </td></tr>
595 </table>
596 </dd>
597 </dl>
598
599 </div>
600 </div>
601 <a class="anchor" id="ae8124f3f73e96e2193ae03c5519d2763"></a>
602 <div class="memitem">
603 <div class="memproto">
604 <table class="memname">
605 <tr>
606 <td class="memname">void* php_persistent_handle_accrete </td>
607 <td>(</td>
608 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a> *&#160;</td>
609 <td class="paramname"><em>a</em>, </td>
610 </tr>
611 <tr>
612 <td class="paramkey"></td>
613 <td></td>
614 <td class="paramtype">void *&#160;</td>
615 <td class="paramname"><em>handle</em>&#160;</td>
616 </tr>
617 <tr>
618 <td></td>
619 <td>)</td>
620 <td></td><td></td>
621 </tr>
622 </table>
623 </div><div class="memdoc">
624
625 <p>Copy a persistent handle. </p>
626 <p>Let the underlying resource factory copy the <em>handle</em>.</p>
627 <dl class="params"><dt>Parameters</dt><dd>
628 <table class="params">
629 <tr><td class="paramname">a</td><td>the persistent handle factory </td></tr>
630 <tr><td class="paramname">handle</td><td>the resource to accrete </td></tr>
631 </table>
632 </dd>
633 </dl>
634
635 </div>
636 </div>
637 <a class="anchor" id="af6636e870497be0699d2781e5fc8a2a9"></a>
638 <div class="memitem">
639 <div class="memproto">
640 <table class="memname">
641 <tr>
642 <td class="memname">void* php_persistent_handle_acquire </td>
643 <td>(</td>
644 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a> *&#160;</td>
645 <td class="paramname"><em>a</em>, </td>
646 </tr>
647 <tr>
648 <td class="paramkey"></td>
649 <td></td>
650 <td class="paramtype">void *&#160;</td>
651 <td class="paramname"><em>init_arg</em>&#160;</td>
652 </tr>
653 <tr>
654 <td></td>
655 <td>)</td>
656 <td></td><td></td>
657 </tr>
658 </table>
659 </div><div class="memdoc">
660
661 <p>Acquire a persistent handle. </p>
662 <p>That is, either re-use a resource from the free list or create a new handle.</p>
663 <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>
664 <dl class="params"><dt>Parameters</dt><dd>
665 <table class="params">
666 <tr><td class="paramname">a</td><td>the persistent handle factory </td></tr>
667 <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>
668 </table>
669 </dd>
670 </dl>
671 <dl class="section return"><dt>Returns</dt><dd>the acquired resource </dd></dl>
672
673 </div>
674 </div>
675 <a class="anchor" id="a0d661d1f880270146012eb8781e5343e"></a>
676 <div class="memitem">
677 <div class="memproto">
678 <table class="memname">
679 <tr>
680 <td class="memname">void php_persistent_handle_cleanup </td>
681 <td>(</td>
682 <td class="paramtype">const char *&#160;</td>
683 <td class="paramname"><em>name_str</em>, </td>
684 </tr>
685 <tr>
686 <td class="paramkey"></td>
687 <td></td>
688 <td class="paramtype">size_t&#160;</td>
689 <td class="paramname"><em>name_len</em>, </td>
690 </tr>
691 <tr>
692 <td class="paramkey"></td>
693 <td></td>
694 <td class="paramtype">const char *&#160;</td>
695 <td class="paramname"><em>ident_str</em>, </td>
696 </tr>
697 <tr>
698 <td class="paramkey"></td>
699 <td></td>
700 <td class="paramtype">size_t&#160;</td>
701 <td class="paramname"><em>ident_len</em>&#160;</td>
702 </tr>
703 <tr>
704 <td></td>
705 <td>)</td>
706 <td></td><td></td>
707 </tr>
708 </table>
709 </div><div class="memdoc">
710
711 <p>Clean persistent handles up. </p>
712 <p>Destroy persistent handles of provider <em>name_str</em> and in subsidiary namespace <em>ident_str</em>.</p>
713 <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>
714 <p>If <em>ident_str</em> is NULL all persistent handles of the provider will be cleaned up.</p>
715 <p>Ergo, if both, <em>name_str</em> and <em>ident_str</em> are NULL, then all persistent handles will be cleaned up.</p>
716 <p>You must call this in MSHUTDOWN, if your resource factory ops hold a registered <a class="el" href="structphp__resource__factory.html#a7d6c89f9c6035be8a5e166a6a86cd1c7" 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>
717 <dl class="params"><dt>Parameters</dt><dd>
718 <table class="params">
719 <tr><td class="paramname">name_str</td><td>the provider name; may be NULL </td></tr>
720 <tr><td class="paramname">name_len</td><td>the provider name length </td></tr>
721 <tr><td class="paramname">ident_str</td><td>the subsidiary namespace name; may be NULL </td></tr>
722 <tr><td class="paramname">ident_len</td><td>the subsidiary namespace name length </td></tr>
723 </table>
724 </dd>
725 </dl>
726
727 </div>
728 </div>
729 <a class="anchor" id="a0a266874dafb69cf2b040378d4033901"></a>
730 <div class="memitem">
731 <div class="memproto">
732 <table class="memname">
733 <tr>
734 <td class="memname"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a>* php_persistent_handle_concede </td>
735 <td>(</td>
736 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a> *&#160;</td>
737 <td class="paramname"><em>a</em>, </td>
738 </tr>
739 <tr>
740 <td class="paramkey"></td>
741 <td></td>
742 <td class="paramtype">const char *&#160;</td>
743 <td class="paramname"><em>name_str</em>, </td>
744 </tr>
745 <tr>
746 <td class="paramkey"></td>
747 <td></td>
748 <td class="paramtype">size_t&#160;</td>
749 <td class="paramname"><em>name_len</em>, </td>
750 </tr>
751 <tr>
752 <td class="paramkey"></td>
753 <td></td>
754 <td class="paramtype">const char *&#160;</td>
755 <td class="paramname"><em>ident_str</em>, </td>
756 </tr>
757 <tr>
758 <td class="paramkey"></td>
759 <td></td>
760 <td class="paramtype">size_t&#160;</td>
761 <td class="paramname"><em>ident_len</em>, </td>
762 </tr>
763 <tr>
764 <td class="paramkey"></td>
765 <td></td>
766 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a59f5566ecc4c76e048ad53469eb20142">php_persistent_handle_wakeup_t</a>&#160;</td>
767 <td class="paramname"><em>wakeup</em>, </td>
768 </tr>
769 <tr>
770 <td class="paramkey"></td>
771 <td></td>
772 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a85e9e715d308dc5d98b980c9c57d02bf">php_persistent_handle_retire_t</a>&#160;</td>
773 <td class="paramname"><em>retire</em>&#160;</td>
774 </tr>
775 <tr>
776 <td></td>
777 <td>)</td>
778 <td></td><td></td>
779 </tr>
780 </table>
781 </div><div class="memdoc">
782
783 <p>Retrieve a persistent handle factory at runtime. </p>
784 <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>
785 <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>
786 <dl class="params"><dt>Parameters</dt><dd>
787 <table class="params">
788 <tr><td class="paramname">a</td><td>pointer to a factory; allocated on the heap if NULL </td></tr>
789 <tr><td class="paramname">name_str</td><td>the provider name, e.g. "http\Client\Curl" </td></tr>
790 <tr><td class="paramname">name_len</td><td>the provider name length, e.g. strlen("http\Client\Curl") </td></tr>
791 <tr><td class="paramname">ident_str</td><td>the subsidiary namespace, e.g. "php.net:80" </td></tr>
792 <tr><td class="paramname">ident_len</td><td>the subsidiary namespace lenght, e.g. strlen("php.net:80") </td></tr>
793 <tr><td class="paramname">wakeup</td><td>any persistent handle wakeup routine </td></tr>
794 <tr><td class="paramname">retire</td><td>any persistent handle retire routine </td></tr>
795 </table>
796 </dd>
797 </dl>
798 <dl class="section return"><dt>Returns</dt><dd><em>a</em> or an allocated persistent handle factory </dd></dl>
799
800 </div>
801 </div>
802 <a class="anchor" id="a93458ab12d810f0fd545fb1464ba9eca"></a>
803 <div class="memitem">
804 <div class="memproto">
805 <table class="memname">
806 <tr>
807 <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>
808 <td>(</td>
809 <td class="paramtype">void&#160;</td>
810 <td class="paramname"></td><td>)</td>
811 <td></td>
812 </tr>
813 </table>
814 </div><div class="memdoc">
815
816 <p>Retrieve persistent handle resource factory ops. </p>
817 <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>
818 <p>Example: </p><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>
819 <div class="line"> <span class="keywordtype">size_t</span> persistent_id_len TSRMLS_DC)</div>
820 <div class="line">{</div>
821 <div class="line"> <a class="code" href="structphp__resource__factory.html">php_resource_factory_t</a> *rf;</div>
822 <div class="line"></div>
823 <div class="line"> <span class="keywordflow">if</span> (persistent_id_str) {</div>
824 <div class="line"> <a class="code" href="php__raphf_8h.html#structphp__persistent__handle__factory">php_persistent_handle_factory_t</a> *pf;</div>
825 <div class="line"> <a class="code" href="php__raphf_8h.html#structphp__resource__factory__ops">php_resource_factory_ops_t</a> *ops;</div>
826 <div class="line"></div>
827 <div class="line"> ops = <a class="code" href="php__raphf_8h.html#a93458ab12d810f0fd545fb1464ba9eca">php_persistent_handle_get_resource_factory_ops</a>();</div>
828 <div class="line"></div>
829 <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>
830 <div class="line"> persistent_id_str, persistent_id_len, NULL, NULL TSRMLS_CC);</div>
831 <div class="line"></div>
832 <div class="line"> rf = <a class="code" href="php__raphf_8h.html#ab754f4d59dab5de0edf702a9ab2f4e03">php_persistent_handle_resource_factory_init</a>(NULL, pf);</div>
833 <div class="line"> } <span class="keywordflow">else</span> {</div>
834 <div class="line"> rf = <a class="code" href="php__raphf_8h.html#ad20f10c53e3f33756638da98819367f0">php_resource_factory_init</a>(NULL, &amp;myops, NULL, NULL);</div>
835 <div class="line"> }</div>
836 <div class="line"> <span class="keywordflow">return</span> rf;</div>
837 <div class="line">}</div>
838 </div><!-- fragment -->
839 </div>
840 </div>
841 <a class="anchor" id="a3cbbe29c8a4ed9858c921c8ee539de59"></a>
842 <div class="memitem">
843 <div class="memproto">
844 <table class="memname">
845 <tr>
846 <td class="memname">int php_persistent_handle_provide </td>
847 <td>(</td>
848 <td class="paramtype">const char *&#160;</td>
849 <td class="paramname"><em>name_str</em>, </td>
850 </tr>
851 <tr>
852 <td class="paramkey"></td>
853 <td></td>
854 <td class="paramtype">size_t&#160;</td>
855 <td class="paramname"><em>name_len</em>, </td>
856 </tr>
857 <tr>
858 <td class="paramkey"></td>
859 <td></td>
860 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a29e0d7a66e441a5265ddf2f0adbbb3af">php_resource_factory_ops_t</a> *&#160;</td>
861 <td class="paramname"><em>fops</em>, </td>
862 </tr>
863 <tr>
864 <td class="paramkey"></td>
865 <td></td>
866 <td class="paramtype">void *&#160;</td>
867 <td class="paramname"><em>data</em>, </td>
868 </tr>
869 <tr>
870 <td class="paramkey"></td>
871 <td></td>
872 <td class="paramtype">void(*)(void *)&#160;</td>
873 <td class="paramname"><em>dtor</em>&#160;</td>
874 </tr>
875 <tr>
876 <td></td>
877 <td>)</td>
878 <td></td><td></td>
879 </tr>
880 </table>
881 </div><div class="memdoc">
882
883 <p>Register a persistent handle provider in MINIT. </p>
884 <p>Registers a factory provider for <em>name_str</em> with <em>fops</em> resource factory ops. Call this in your MINIT.</p>
885 <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>
886 <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>
887 <dl class="params"><dt>Parameters</dt><dd>
888 <table class="params">
889 <tr><td class="paramname">name_str</td><td>the provider name, e.g. "http\Client\Curl" </td></tr>
890 <tr><td class="paramname">name_len</td><td>the provider name length, e.g. strlen("http\Client\Curl") </td></tr>
891 <tr><td class="paramname">fops</td><td>the resource factory ops </td></tr>
892 <tr><td class="paramname">data</td><td>opaque user data </td></tr>
893 <tr><td class="paramname">dtor</td><td><em>data</em> destructor </td></tr>
894 </table>
895 </dd>
896 </dl>
897 <dl class="section return"><dt>Returns</dt><dd>SUCCESS/FAILURE </dd></dl>
898
899 </div>
900 </div>
901 <a class="anchor" id="af08ee05c51d52200755d24f6f52df144"></a>
902 <div class="memitem">
903 <div class="memproto">
904 <table class="memname">
905 <tr>
906 <td class="memname">void php_persistent_handle_release </td>
907 <td>(</td>
908 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a> *&#160;</td>
909 <td class="paramname"><em>a</em>, </td>
910 </tr>
911 <tr>
912 <td class="paramkey"></td>
913 <td></td>
914 <td class="paramtype">void *&#160;</td>
915 <td class="paramname"><em>handle</em>&#160;</td>
916 </tr>
917 <tr>
918 <td></td>
919 <td>)</td>
920 <td></td><td></td>
921 </tr>
922 </table>
923 </div><div class="memdoc">
924
925 <p>Release a persistent handle. </p>
926 <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>
927 <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>
928 <dl class="params"><dt>Parameters</dt><dd>
929 <table class="params">
930 <tr><td class="paramname">a</td><td>the persistent handle factory </td></tr>
931 <tr><td class="paramname">handle</td><td>the handle to release </td></tr>
932 </table>
933 </dd>
934 </dl>
935
936 </div>
937 </div>
938 <a class="anchor" id="ab754f4d59dab5de0edf702a9ab2f4e03"></a>
939 <div class="memitem">
940 <div class="memproto">
941 <table class="memname">
942 <tr>
943 <td class="memname"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a>* php_persistent_handle_resource_factory_init </td>
944 <td>(</td>
945 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
946 <td class="paramname"><em>a</em>, </td>
947 </tr>
948 <tr>
949 <td class="paramkey"></td>
950 <td></td>
951 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a833eaa62ffcc217e5749c26c18885b17">php_persistent_handle_factory_t</a> *&#160;</td>
952 <td class="paramname"><em>pf</em>&#160;</td>
953 </tr>
954 <tr>
955 <td></td>
956 <td>)</td>
957 <td></td><td></td>
958 </tr>
959 </table>
960 </div><div class="memdoc">
961
962 <p>Create a resource factory for persistent handles. </p>
963 <p>This will create a resource factory with persistent handle ops, which wraps the provided reource factory <em>pf</em>.</p>
964 <dl class="params"><dt>Parameters</dt><dd>
965 <table class="params">
966 <tr><td class="paramname">a</td><td>the persistent handle resource factory to initialize </td></tr>
967 <tr><td class="paramname">pf</td><td>the resource factory to wrap </td></tr>
968 </table>
969 </dd>
970 </dl>
971
972 </div>
973 </div>
974 <a class="anchor" id="ae174fbe124d4cb6010e218a68379bd18"></a>
975 <div class="memitem">
976 <div class="memproto">
977 <table class="memname">
978 <tr>
979 <td class="memname">HashTable* php_persistent_handle_statall </td>
980 <td>(</td>
981 <td class="paramtype">HashTable *&#160;</td>
982 <td class="paramname"><em>ht</em></td><td>)</td>
983 <td></td>
984 </tr>
985 </table>
986 </div><div class="memdoc">
987
988 <p>Retrieve statistics about the current process/thread's persistent handles. </p>
989 <dl class="section return"><dt>Returns</dt><dd>a HashTable like: <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;[</div>
990 <div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; &quot;name&quot; =&gt; [</div>
991 <div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; &quot;ident&quot; =&gt; [</div>
992 <div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160; &quot;used&quot; =&gt; 1,</div>
993 <div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; &quot;free&quot; =&gt; 0,</div>
994 <div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; ]</div>
995 <div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; ]</div>
996 <div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;]</div>
997 </div><!-- fragment --> </dd></dl>
998
999 </div>
1000 </div>
1001 <a class="anchor" id="ae8be369197905047ffbd05c0ca80f245"></a>
1002 <div class="memitem">
1003 <div class="memproto">
1004 <table class="memname">
1005 <tr>
1006 <td class="memname">unsigned php_resource_factory_addref </td>
1007 <td>(</td>
1008 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
1009 <td class="paramname"><em>rf</em></td><td>)</td>
1010 <td></td>
1011 </tr>
1012 </table>
1013 </div><div class="memdoc">
1014
1015 <p>Increase the refcount of the resource factory. </p>
1016 <dl class="params"><dt>Parameters</dt><dd>
1017 <table class="params">
1018 <tr><td class="paramname">rf</td><td>the resource factory </td></tr>
1019 </table>
1020 </dd>
1021 </dl>
1022 <dl class="section return"><dt>Returns</dt><dd>the new refcount </dd></dl>
1023
1024 </div>
1025 </div>
1026 <a class="anchor" id="a016b8a4159e698f915ab967711696847"></a>
1027 <div class="memitem">
1028 <div class="memproto">
1029 <table class="memname">
1030 <tr>
1031 <td class="memname">void php_resource_factory_dtor </td>
1032 <td>(</td>
1033 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
1034 <td class="paramname"><em>f</em></td><td>)</td>
1035 <td></td>
1036 </tr>
1037 </table>
1038 </div><div class="memdoc">
1039
1040 <p>Destroy the resource factory. </p>
1041 <p>If the factory's refcount reaches 0, the <em>dtor</em> for <em>data</em> is called.</p>
1042 <dl class="params"><dt>Parameters</dt><dd>
1043 <table class="params">
1044 <tr><td class="paramname">f</td><td>the resource factory </td></tr>
1045 </table>
1046 </dd>
1047 </dl>
1048
1049 </div>
1050 </div>
1051 <a class="anchor" id="a7f012d685f5f7c08f50288b61232e689"></a>
1052 <div class="memitem">
1053 <div class="memproto">
1054 <table class="memname">
1055 <tr>
1056 <td class="memname">void php_resource_factory_free </td>
1057 <td>(</td>
1058 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> **&#160;</td>
1059 <td class="paramname"><em>f</em></td><td>)</td>
1060 <td></td>
1061 </tr>
1062 </table>
1063 </div><div class="memdoc">
1064
1065 <p>Destroy and free the resource factory. </p>
1066 <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>
1067 <dl class="params"><dt>Parameters</dt><dd>
1068 <table class="params">
1069 <tr><td class="paramname">f</td><td>the resource factory </td></tr>
1070 </table>
1071 </dd>
1072 </dl>
1073
1074 </div>
1075 </div>
1076 <a class="anchor" id="a08db5f3698f2d0bf3d2f20dcf4e7b2b4"></a>
1077 <div class="memitem">
1078 <div class="memproto">
1079 <table class="memname">
1080 <tr>
1081 <td class="memname">void* php_resource_factory_handle_copy </td>
1082 <td>(</td>
1083 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
1084 <td class="paramname"><em>f</em>, </td>
1085 </tr>
1086 <tr>
1087 <td class="paramkey"></td>
1088 <td></td>
1089 <td class="paramtype">void *&#160;</td>
1090 <td class="paramname"><em>handle</em>&#160;</td>
1091 </tr>
1092 <tr>
1093 <td></td>
1094 <td>)</td>
1095 <td></td><td></td>
1096 </tr>
1097 </table>
1098 </div><div class="memdoc">
1099
1100 <p>Create a copy of the resource <em>handle</em>. </p>
1101 <dl class="params"><dt>Parameters</dt><dd>
1102 <table class="params">
1103 <tr><td class="paramname">f</td><td>the resource factory </td></tr>
1104 <tr><td class="paramname">handle</td><td>the resource to copy </td></tr>
1105 </table>
1106 </dd>
1107 </dl>
1108 <dl class="section return"><dt>Returns</dt><dd>the copy </dd></dl>
1109
1110 </div>
1111 </div>
1112 <a class="anchor" id="a98d02dc80dd83095b8f901954350840c"></a>
1113 <div class="memitem">
1114 <div class="memproto">
1115 <table class="memname">
1116 <tr>
1117 <td class="memname">void* php_resource_factory_handle_ctor </td>
1118 <td>(</td>
1119 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
1120 <td class="paramname"><em>f</em>, </td>
1121 </tr>
1122 <tr>
1123 <td class="paramkey"></td>
1124 <td></td>
1125 <td class="paramtype">void *&#160;</td>
1126 <td class="paramname"><em>init_arg</em>&#160;</td>
1127 </tr>
1128 <tr>
1129 <td></td>
1130 <td>)</td>
1131 <td></td><td></td>
1132 </tr>
1133 </table>
1134 </div><div class="memdoc">
1135
1136 <p>Construct a resource by the resource factory <em>f</em>. </p>
1137 <dl class="params"><dt>Parameters</dt><dd>
1138 <table class="params">
1139 <tr><td class="paramname">f</td><td>the resource factory </td></tr>
1140 <tr><td class="paramname">init_arg</td><td>for the resource constructor </td></tr>
1141 </table>
1142 </dd>
1143 </dl>
1144 <dl class="section return"><dt>Returns</dt><dd>the new resource </dd></dl>
1145
1146 </div>
1147 </div>
1148 <a class="anchor" id="a97dbb9d342f33205b92374c586676bc6"></a>
1149 <div class="memitem">
1150 <div class="memproto">
1151 <table class="memname">
1152 <tr>
1153 <td class="memname">void php_resource_factory_handle_dtor </td>
1154 <td>(</td>
1155 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
1156 <td class="paramname"><em>f</em>, </td>
1157 </tr>
1158 <tr>
1159 <td class="paramkey"></td>
1160 <td></td>
1161 <td class="paramtype">void *&#160;</td>
1162 <td class="paramname"><em>handle</em>&#160;</td>
1163 </tr>
1164 <tr>
1165 <td></td>
1166 <td>)</td>
1167 <td></td><td></td>
1168 </tr>
1169 </table>
1170 </div><div class="memdoc">
1171
1172 <p>Destroy (and free) the resource. </p>
1173 <dl class="params"><dt>Parameters</dt><dd>
1174 <table class="params">
1175 <tr><td class="paramname">f</td><td>the resource factory </td></tr>
1176 <tr><td class="paramname">handle</td><td>the resource to destroy </td></tr>
1177 </table>
1178 </dd>
1179 </dl>
1180
1181 </div>
1182 </div>
1183 <a class="anchor" id="ad20f10c53e3f33756638da98819367f0"></a>
1184 <div class="memitem">
1185 <div class="memproto">
1186 <table class="memname">
1187 <tr>
1188 <td class="memname"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a>* php_resource_factory_init </td>
1189 <td>(</td>
1190 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
1191 <td class="paramname"><em>f</em>, </td>
1192 </tr>
1193 <tr>
1194 <td class="paramkey"></td>
1195 <td></td>
1196 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a29e0d7a66e441a5265ddf2f0adbbb3af">php_resource_factory_ops_t</a> *&#160;</td>
1197 <td class="paramname"><em>fops</em>, </td>
1198 </tr>
1199 <tr>
1200 <td class="paramkey"></td>
1201 <td></td>
1202 <td class="paramtype">void *&#160;</td>
1203 <td class="paramname"><em>data</em>, </td>
1204 </tr>
1205 <tr>
1206 <td class="paramkey"></td>
1207 <td></td>
1208 <td class="paramtype">void(*)(void *data)&#160;</td>
1209 <td class="paramname"><em>dtor</em>&#160;</td>
1210 </tr>
1211 <tr>
1212 <td></td>
1213 <td>)</td>
1214 <td></td><td></td>
1215 </tr>
1216 </table>
1217 </div><div class="memdoc">
1218
1219 <p>Initialize a resource factory. </p>
1220 <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>
1221 <dl class="params"><dt>Parameters</dt><dd>
1222 <table class="params">
1223 <tr><td class="paramname">f</td><td>the factory to initialize; if NULL allocated on the heap </td></tr>
1224 <tr><td class="paramname">fops</td><td>the resource ops to assign to the factory </td></tr>
1225 <tr><td class="paramname">data</td><td>opaque user data; may be NULL </td></tr>
1226 <tr><td class="paramname">dtor</td><td>a destructor for the data; may be NULL </td></tr>
1227 </table>
1228 </dd>
1229 </dl>
1230 <dl class="section return"><dt>Returns</dt><dd><em>f</em> or an allocated resource factory </dd></dl>
1231
1232 </div>
1233 </div>
1234 <a class="anchor" id="a617d2cc656ab6427388b938597194ebb"></a>
1235 <div class="memitem">
1236 <div class="memproto">
1237 <table class="memname">
1238 <tr>
1239 <td class="memname">zend_bool php_resource_factory_is_persistent </td>
1240 <td>(</td>
1241 <td class="paramtype"><a class="el" href="php__raphf_8h.html#a4817c4b3d4077c48dff36376487ba8d4">php_resource_factory_t</a> *&#160;</td>
1242 <td class="paramname"><em>a</em></td><td>)</td>
1243 <td></td>
1244 </tr>
1245 </table>
1246 </div><div class="memdoc">
1247
1248 <p>Check whether a resource factory is a persistent handle resource factory. </p>
1249 <dl class="params"><dt>Parameters</dt><dd>
1250 <table class="params">
1251 <tr><td class="paramname">a</td><td>the resource factory to check </td></tr>
1252 </table>
1253 </dd>
1254 </dl>
1255
1256 </div>
1257 </div>
1258 </div><!-- contents -->
1259 </div><!-- doc-content -->
1260 <!-- start footer part -->
1261 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
1262 <ul>
1263 <li class="navelem"><a class="el" href="php__raphf_8h.html">php_raphf.h</a></li>
1264 <li class="footer">Generated by
1265 <a href="http://www.doxygen.org/index.html">
1266 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
1267 </ul>
1268 </div>
1269 </body>
1270 </html>