zhxy/http服务器/appweb-4.3.4-0/doc/api/espBase.html

6152 lines
431 KiB
HTML

<h1>APPWEB - ESP API Native API</h1>
<a name="Components"></a><h1>Components</h1>
<table class="apiIndex" title="Components">
<tr class="apiDef">
<td class="apiName"><a href="#group___edi" class="nameRef">Edi</a></td>
<td class="apiBrief">Database structure.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___edi_field" class="nameRef">EdiField</a></td>
<td class="apiBrief">EDI Record field structure.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___edi_grid" class="nameRef">EdiGrid</a></td>
<td class="apiBrief">Grid structure.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___edi_rec" class="nameRef">EdiRec</a></td>
<td class="apiBrief">Database record structure.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___edi_service" class="nameRef">EdiService</a></td>
<td class="apiBrief">Edi service control structure.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___esp_abbrev" class="nameRef">EspAbbrev</a></td>
<td class="apiBrief">Abbreviated ESP Controls.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___esp_control" class="nameRef">EspControl</a></td>
<td class="apiBrief">There are two groups of ESP Control APIs.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___esp_parse" class="nameRef">EspParse</a></td>
<td class="apiBrief">ESP page parser structure.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___esp_req" class="nameRef">EspReq</a></td>
<td class="apiBrief">ESP request.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___esp_route" class="nameRef">EspRoute</a></td>
<td class="apiBrief">EspRoute extended route configuration.</td></tr>
<tr class="apiDef">
<td class="apiName"><a href="#group___esp_session" class="nameRef">EspSession</a></td>
<td class="apiBrief">ESP session state object.</td></tr>
</table>
<a name="Functions"></a><h1>Functions</h1>
<table class="apiIndex" title="Functions">
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gadba1deb080e78b4517119a0294489b44" class="nameRef">addHeader</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a header to the transmission using a format string.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga47f1a100cffe7bdc50e78f6a65ea2acb" class="nameRef">alert</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Display a popup alert message in the client&apos;s browser when the web page is displayed.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga8ae6a60523890e7f70c40105f9c684d4" class="nameRef">anchor</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML anchor link.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gafb3e93213916900295d7c2be0105d55a" class="nameRef">button</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML button to use inside a form.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gab2a06686c0a57b7d098a1651c541c997" class="nameRef">buttonLink</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML button to use outside a form.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga4fbfd9bc0d38ff85e5a20461189a812e" class="nameRef">chart</a>(<a href="#group___edi_grid" class="ref">EdiGrid</a> *grid, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a graphic chart.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gaef38c9b3cd6c1db7b951a5e0587e16c9" class="nameRef">checkbox</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *checkedValue, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an input checkbox.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_abbrev_1gabc52230088c078fdeafb1e8d6a941185" class="nameRef">createRec</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a record and initialize field values.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gab7b4049b554576b57f8cc49efc9e3a95" class="nameRef">createSession</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a session state object.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga35677b9aa8d61543db5ea80377e823a6" class="nameRef">destroySession</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Destroy a session state object.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga6d64e8f3ca52318774994ead312772fd" class="nameRef">division</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *body, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML division.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga9db9b8b7e2c750f6f942da0478866de2" class="nameRef">dontAutoFinalize</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Don&apos;t auto-finalize this request.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gae43638b69d2bf1bf6cf037459aad2ce2" class="nameRef">dropdown</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *choices, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a dropdown selection list.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_req_1ga85a69dfce5ad4415bd484cd9ce81a5cf" class="nameRef">eReadRecByKey</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read a record identified by the key value.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1gafac7f959a214551acc56fd42a8c0e04e" class="nameRef">edRemoveColumn</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove a column from a table.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1gab66595c455e15000e812ec830acce7d9" class="nameRef">ediAddColumn</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName, int type, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a column to a table.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1gaa6413f84f22899c4ae15e8ac3f477f56" class="nameRef">ediAddIndex</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *indexName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add an index to a table.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___edi_service_1ga7c605c7761d7a46a207cb6dd0f71b372" class="nameRef">ediAddProvider</a>(struct EdiProvider *provider)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a database provider.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1gad0cad6a7fe8e2568923e47d6e9085ed4" class="nameRef">ediAddTable</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a table to a database.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1ga64cb0410a70843250c9826e8d12e3944" class="nameRef">ediAddValidation</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName, <a href="mprBare.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a validation.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1gaf35d7f7eba6e1ea718e0169987807f61" class="nameRef">ediChangeColumn</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName, int type, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Change a column schema definition.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___edi_1ga81b2c711a2a3047672b6c259946be394" class="nameRef">ediClose</a>(<a href="#group___edi" class="ref">Edi</a> *edi)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Close a database.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#group___edi_1ga7500efee354868a347e7a9cc763994af" class="nameRef">ediCreateBareGrid</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, int nrows)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a bare grid.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___edi_1ga15bf63cd0ba27fd41ffcd2556552bc9c" class="nameRef">ediCreateBareRec</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, int nfields)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a bare record.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___edi_1gad4e706a1a2d9ff527c9d42612ebeeae1" class="nameRef">ediCreateRec</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a record.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_service" class="ref">EdiService*</a></td><td><a href="#group___edi_service_1ga52bb6b4d64beebfacefa8cc7cfeab50f" class="nameRef">ediCreateService</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create the EDI service.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___edi_service_1ga889df64bdd239f71c66b4fa920be8f46" class="nameRef">ediDefineValidation</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="#group___edi_service_1ga3cf21d57a02f250570e2beafc05befd9" class="ref">EdiValidationProc</a> vfn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Define a field validation procedure.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1gaec3079929130e2f517f56d8c322e2468" class="nameRef">ediDelete</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Delete the database at the given path.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1ga1b8e8a569123ef71e5b341cb3f1329f9" class="nameRef">ediDeleteRow</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Delete a row in a database table.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___edi_1gaa5e7ed50f7256c03c82778c1b681ea87" class="nameRef">ediFormatField</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, <a href="#group___edi_field" class="ref">EdiField</a> value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Format a field value.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1gac764d3271d738b2e6d284e4d49e8b90e" class="nameRef">ediGetColumnSchema</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName, int *type, int *flags, int *cid)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the column schema.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#group___mpr_list" class="ref">MprList*</a></td><td><a href="#group___edi_1gab5db5e05416c9998e8b3f3a2e700c2a2" class="nameRef">ediGetColumns</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a list of column names.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___edi_1gaf725c63758094eb5425fe30beaa3f4df" class="nameRef">ediGetField</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a record field.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___edi_1gaa0a1e1ea039237f9e082ad63a17e64f1" class="nameRef">ediGetFieldFmt</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, <a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get and format a record field value.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_field" class="ref">EdiField</a></td><td><a href="#group___edi_1ga3720c685a8c4def59b12bccd26c03a40" class="nameRef">ediGetFieldSchema</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the record field schema.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1ga1f563dfa6f4ad87a227f0470b2a9838e" class="nameRef">ediGetFieldType</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the data type of a record field.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#group___mpr_list" class="ref">MprList*</a></td><td><a href="#group___edi_1ga573eb5891e0dfbe37febd3fa93c469ad" class="nameRef">ediGetGridColumns</a>(<a href="#group___edi_grid" class="ref">EdiGrid</a> *grid)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a list of grid column names.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#group___mpr_list" class="ref">MprList*</a></td><td><a href="#group___edi_1gaeffb65c159bee67b941ed8b335796c9e" class="nameRef">ediGetRecErrors</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get record validation errors.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1ga0b179dce91f770f00b31fd7f009e7c89" class="nameRef">ediGetTableSchema</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, int *numRows, int *numCols)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get table schema information.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#group___mpr_list" class="ref">MprList*</a></td><td><a href="#group___edi_1gafe0368e00f99402ec33a3058fb8aec00" class="nameRef">ediGetTables</a>(<a href="#group___edi" class="ref">Edi</a> *edi)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a list of database tables.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___edi_1ga39664fad5ac6b8e8d4392e1b6196c668" class="nameRef">ediGetTypeString</a>(int type)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert an EDI type to a string.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1ga7dec1de01e90319b1ff0fe351f83f49e" class="nameRef">ediLoad</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>MOB - remove this API Load the database file.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1gaa88adbb2470a05da45d468fd9d578672" class="nameRef">ediLookupField</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Lookup a field by name.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#group___edi_1ga92df88662a9be066b5e3eff35b8954b1" class="nameRef">ediMakeGrid</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *content)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a grid.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#struct_mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___edi_1gac8ba9b4a0cdc2d2f30de7d915a4c51c1" class="nameRef">ediMakeHash</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a hash container of property values.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___edi_1ga5bf685fd34ebd962218f900361ada49b" class="nameRef">ediMakeRec</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *content)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a record.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___edi_1ga6913a7aa47c80857de9057e5442b5834" class="nameRef">ediManageEdiRec</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Manage an EdiRec instance for garbage collection.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi" class="ref">Edi*</a></td><td><a href="#group___edi_1ga7c923cfc31d2c7d94c9338c7849b8da6" class="nameRef">ediOpen</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *source, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *provider, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Open a database.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1ga9e890e5216c6c01220e6ba150197a0e1" class="nameRef">ediParseTypeString</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *type)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Parse an EDI type string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#group___edi_1gaecc4d8a08a88424aec01aec08a9da73b" class="nameRef">ediQuery</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *cmd)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Run a query.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___edi_1ga8ec0078c860b71c0271d5628f6633447" class="nameRef">ediReadField</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *defaultValue)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read a field from the database and format the result.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___edi_1ga4d7cca45297f343faa89a36bb6b14b65" class="nameRef">ediReadOneWhere</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *operation, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read one record.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_field" class="ref">EdiField</a></td><td><a href="#group___edi_1ga00759cb1f734d60434e9fe308176767c" class="nameRef">ediReadRawField</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read a field from the database.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___edi_1ga9da339eccd0e7dddfea03640bfa30e7f" class="nameRef">ediReadRec</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read a record.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#group___edi_1ga05bd6c0bc6cb6d7bd01550de2843b099" class="nameRef">ediReadTable</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read a table.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#group___edi_1gaff88b5fa67778c33a447fbb231a928c1" class="nameRef">ediReadWhere</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *operation, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read matching records.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1ga2e0e7c2d3e5c286a51bdc7c1d18cc34b" class="nameRef">ediRemoveIndex</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *indexName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove a table index.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1gae965f0739fa618a75fdc0455453dec14" class="nameRef">ediRemoveTable</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove a table from the database.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1ga6725ef26c5e502c45ed03f42c2f75051" class="nameRef">ediRenameColumn</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *newColumnName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Rename a column.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1ga42ebae84b96f934005926c25cb568f24" class="nameRef">ediRenameTable</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *newTableName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Rename a table.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1ga77d616667577833662154d65ef794519" class="nameRef">ediSave</a>(<a href="#group___edi" class="ref">Edi</a> *edi)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Save in-memory database contents to disk.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___edi_1ga649f5d198bed950955c34c05d8b59777" class="nameRef">ediSetField</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a record field without writing to the database.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___edi_1ga6399c9e05317bf82c49d1336b21b2f17" class="nameRef">ediSetFields</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set record fields without writing to the database.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1ga14dfc03675a9312facb1be7dd48f73d6" class="nameRef">ediUpdateField</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a value to a database table field.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___edi_1ga9b65a775c4ddc081e49b1a55cabc06aa" class="nameRef">ediUpdateRec</a>(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="#group___edi_rec" class="ref">EdiRec</a> *rec)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a record to the database.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___edi_1ga7525ab6e695b51abc1bb342b8f35022b" class="nameRef">ediValidateRec</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Validate a record.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga2400f88754f6e5556efd76ef3ddeed93" class="nameRef">endform</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Signify the end of an HTML form.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gaae88740666af5ee9b21ad39648857db8" class="nameRef">espAddHeader</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a header to the transmission using a format string.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gad772b64162b7f4eb80ef1a3a1795175d" class="nameRef">espAddHeaderString</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add a header to the transmission.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="nameRef">espAlert</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Display a popup alert message in the client&apos;s browser when the web page is displayed.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___esp_session" class="ref">EspSession*</a></td><td><a href="#group___esp_session_1ga7d2c9558796acec2501b7d31dfc877b9" class="nameRef">espAllocSession</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *id, <a href="mprBare.html#group___mpr_time" class="ref">MprTime</a> lifespan)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Allocate a new session state object.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga603c454b5dce3691e3ca7b0c1e7d860e" class="nameRef">espAnchor</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML anchor link.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gaa50588be6fe69e04738fc0276d7afbbb" class="nameRef">espAppendHeader</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Append a transmission header.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gacb696dcdff91355fc9df37f5c7171a01" class="nameRef">espAppendHeaderString</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Append a transmission header string.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gab6aeea9bb5cb500eabf3e1cfd1745f03" class="nameRef">espAutoFinalize</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Auto-finalize transmission of the http request.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___esp_route_1gac9c9e0843eba723790fa16c8fd508a8b" class="nameRef">espBuildScript</a>(<a href="httpBare.html#group___http_route" class="ref">HttpRoute</a> *route, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *page, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *cacheName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *layout, char **err)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Convert an ESP web page into compilable C code.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga5bf9787cd0cd13684a7e8ffa55aba884" class="nameRef">espButton</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML button to use inside a form.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1gae7c01afaa7ef62fce8c378a0864eee84" class="nameRef">espButtonLink</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML button to use outside a form.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___esp_route_1ga01d07d3db11f99c0d1b93b068ec56c67" class="nameRef">espCache</a>(<a href="httpBare.html#group___http_route" class="ref">HttpRoute</a> *route, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, int lifesecs, int flags)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Add caching for response content.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga11f59d518f29ecddd15cd6d970113d52" class="nameRef">espChart</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_grid" class="ref">EdiGrid</a> *grid, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a graphic chart.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_req_1gab1683170a07c0b0073ab8c1969680e9a" class="nameRef">espCheckSecurityToken</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Check a security token.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga4c0097201d128c40f451af90ceb5f674" class="nameRef">espCheckbox</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *checkedValue, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an input checkbox.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_route_1ga3b649e2be364263d078bb29ae3cbbb0a" class="nameRef">espCompile</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *source, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *module, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *cacheName, int isView)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Compile a view or controller.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_req_1ga4aa105d2149d85a5abe5c36f527389be" class="nameRef">espCreateRec</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a record and initialize field values.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___esp_session" class="ref">EspSession*</a></td><td><a href="#group___esp_session_1ga11e5e8371651e92dae33c1d778265e77" class="nameRef">espCreateSession</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a session object.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_route_1ga321abe89cc91246b2a44f40493988670" class="nameRef">espDefineAction</a>(<a href="httpBare.html#group___http_route" class="ref">HttpRoute</a> *route, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *targetKey, void *actionProc)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Define an action.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_route_1gae250d071bb458546c8ed5fad3aba5e84" class="nameRef">espDefineBase</a>(<a href="httpBare.html#group___http_route" class="ref">HttpRoute</a> *route, <a href="#esp_8h_1aa0c56d9f50902eb9cf16889d3d95c129" class="ref">EspProc</a> baseProc)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Define a base function to invoke for all controller actions.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_route_1gab7ebccfe31eb1e07f3f40db700d18bd9" class="nameRef">espDefineView</a>(<a href="httpBare.html#group___http_route" class="ref">HttpRoute</a> *route, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, void *viewProc)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Define a view.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_session_1gab325d1d70bce4551a89fd7f0d1208b07" class="nameRef">espDestroySession</a>(<a href="#group___esp_session" class="ref">EspSession</a> *sp)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Destroy a session state object.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga5677ea87f674bd598faee87113b7fd2f" class="nameRef">espDivision</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *body, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML division.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga74f4ebc195992a3b8e1229db1cc864d3" class="nameRef">espDropdown</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *choices, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a dropdown selection list.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1gadf62f0d9f2459c1be758606992c235ac" class="nameRef">espEndform</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Signify the end of an HTML form.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___esp_route_1ga680226fbc5c0a870ff91eef7d13ac4c8" class="nameRef">espExpandCommand</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *command, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *source, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *module)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Expand a compile or link command template.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gac142434246bc5558dfe73a78ded7a7f0" class="nameRef">espFinalize</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Finalize transmission of the http request.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1gad7619da182c4e98e7ff0c30036929229" class="nameRef">espFlash</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *kinds, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render flash messages.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gadf50b51bf7ab10d828e85be140c005c5" class="nameRef">espFlush</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Flush transmit data.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1gadb29a44388231433289094ab1313c240" class="nameRef">espForm</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_rec" class="ref">EdiRec</a> *record, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML form.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#group___mpr_list" class="ref">MprList*</a></td><td><a href="#group___esp_req_1ga0607326dfa8535e1264dfccba14c3d7f" class="nameRef">espGetColumns</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_rec" class="ref">EdiRec</a> *rec)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a list of column names.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="httpBare.html#group___http_conn" class="ref">HttpConn*</a></td><td><a href="#group___esp_req_1ga41a42035766ff5d2fd0fd74588e167ea" class="nameRef">espGetConn</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current request connection.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1aa6887458d0a070b3665166af590089d8" class="ref">MprOff</a></td><td><a href="#group___esp_req_1ga3cb308121f5659d48f58c217959c3800" class="nameRef">espGetContentLength</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the receive body content length.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_req_1gadf281290e500c98b3c7214c410b32599" class="nameRef">espGetContentType</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the receive body content type.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_req_1ga1c47b7c05e41bc39b9f3426134c1bf7c" class="nameRef">espGetCookies</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the request cookies.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi" class="ref">Edi*</a></td><td><a href="#group___esp_req_1gadb72373974f7f4d05a8dbbdf966c6496" class="nameRef">espGetDatabase</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current database instance.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_req_1gae6b27fef4d9ab873b3ff7a3657c0a1f0" class="nameRef">espGetDir</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the default document root directory for the request route.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___esp_route" class="ref">EspRoute*</a></td><td><a href="#group___esp_req_1gaefe462fb7ee0c6fa6a0c7842b973de3c" class="nameRef">espGetEspRoute</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current extended route information.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_req_1ga4236af8f29a206e18c4b7a86ac32dba6" class="nameRef">espGetFlashMessage</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *type)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a flash message.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#esp_8h_1a440de6fba35ad0513c2925f11a0f3710" class="nameRef">espGetGrid</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current database grid.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_req_1gaddf870926cbeee2779b687522d5db0aa" class="nameRef">espGetHeader</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get an rx http header.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#struct_mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___esp_req_1ga8daa40cd83a356ad1b1b940751b1df00" class="nameRef">espGetHeaderHash</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the hash table of rx Http headers.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___esp_req_1ga8b03cbaba01462fb4a7349c9d02fddf3" class="nameRef">espGetHeaders</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get all the request http headers.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___esp_req_1ga91bd6b5ad25cefe913aa6ebfe43fa928" class="nameRef">espGetIntParam</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *var, int defaultValue)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a request pararmeter as an integer.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_req_1ga4c81c8e4e35c7a3001473462ccd3bbf6" class="nameRef">espGetMethod</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the HTTP method.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_req_1ga98e63a9a924ec667a3c1b540e56792d3" class="nameRef">espGetParam</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *var, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *defaultValue)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a request parameter.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#struct_mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___esp_req_1ga5bf6214a6875c73c015e7d2b96f1b57a" class="nameRef">espGetParams</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the request parameter hash table.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_req_1gaf84aa1df39869744c4e0ac87e99f1a89" class="nameRef">espGetQueryString</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the request query string.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___esp_req_1ga400095fc3f1743660baedac7c95ff53c" class="nameRef">espGetReferrer</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the referring URI.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi" class="ref">Edi*</a></td><td><a href="#group___esp_req_1ga72246c1dc89e871ec596ae0959077af2" class="nameRef">espGetRouteDatabase</a>(<a href="httpBare.html#group___http_route" class="ref">HttpRoute</a> *route)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the default database defined on a route.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#esp_8h_1ae84ca6c41153894754c0bb48a8ce865d" class="nameRef">espGetSecurityToken</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a unique security token.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___esp_session" class="ref">EspSession*</a></td><td><a href="#group___esp_session_1ga4a615da785dba2c514e3237f37c92338" class="nameRef">espGetSession</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, int create)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a session state object.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___esp_session_1ga74599c6792fca6d518dc85ea51fe12ab" class="nameRef">espGetSessionID</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the session ID.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#struct_mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___esp_session_1gac081825cc4af1199f77b638e659ab32d" class="nameRef">espGetSessionObj</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get an object from the session state store.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_session_1ga60a5effb2a9ef53fdb02dbe865bf6093" class="nameRef">espGetSessionVar</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *defaultValue)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a session state variable.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___esp_req_1ga4323100f7ccf0a198b0ee2593749fe5e" class="nameRef">espGetStatus</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the response status.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___esp_req_1gad4631deeb02544938b8590806ae8bb8e" class="nameRef">espGetStatusMessage</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the Http response status message.</td></tr>
<tr class="apiDef"><td class="apiType">char*</td><td><a href="#group___esp_req_1gaa05557bc29a21cff91faeba9d141c6e2" class="nameRef">espGetTop</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a relative URI to the top of the application.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#struct_mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___esp_req_1gaedbde7b9b4acc7ab426336c359166348" class="nameRef">espGetUploads</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the uploaded files.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_req_1gaba2676d2009310d3fca8f22a16efbf60" class="nameRef">espGetUri</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the request URI string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_req_1gacfd0fe0f0edb952cd670564ac47febc4" class="nameRef">espHasGrid</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if a current grid has been defined.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_req_1ga0f7bf9745f2331aebb05069bba6ba356" class="nameRef">espHasRec</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if a current record has been defined and save to the database.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga462c0f8e483d69249668dc4254005bd0" class="nameRef">espIcon</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML icon.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1gafdc98cdf30e71fd013d2ff2e1b10ccb1" class="nameRef">espImage</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML image.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga9dc11bf739eeb2ec348d1e0adc50b5ef" class="nameRef">espInput</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an input field as part of a form.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_req_1gac50e125f397c0dce5072fab8f551cd32" class="nameRef">espIsEof</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the receive input stream is at end-of-file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_req_1ga610467cde893472908e6c25bde472fc4" class="nameRef">espIsFinalized</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if a http request is finalized.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_req_1gab216150d5432ef9465462e8e69f5f31f" class="nameRef">espIsSecure</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the connection is using SSL and is secure.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga292e9afc5d77571f11aecb967c30855f" class="nameRef">espLabel</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a text label field.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga87d3d362beaeb6d9d698536d0e8ee593" class="nameRef">espMail</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *address, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a mail link.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#group___esp_req_1ga1e9dbe6079a33c74147a3d1f1951b0a6" class="nameRef">espMakeGrid</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *content)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a grid.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#struct_mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___esp_req_1gabd004590a14f92dca3bd5a95810ef3e0" class="nameRef">espMakeHash</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a hash table container of property values.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_req_1gaccf30f4813878e977e4dee0b323a2f4f" class="nameRef">espMakeRec</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *content)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a record.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_req_1gacc2fb39132dab5f624a0f026d2e73440" class="nameRef">espMatchParam</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *var, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Match a request parameter with an expected value.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga6fe85fea47319ff5201edcc9be477540" class="nameRef">espProgress</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *progress, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Emit a progress bar.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga8e7a51fb64f2adbd01183236875ce890" class="nameRef">espRadio</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, void *choices, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a radio button.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#group___esp_req_1gad212c90436628352de69b8adda436b5e" class="nameRef">espReadAllRecs</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read all the records in table from the database.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_req_1ga1bc7aa1ff9481195b79b76e58a5ff66f" class="nameRef">espReadRec</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read the identified record.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_req_1ga7776f14b394d8bdf6817cb7276960861" class="nameRef">espReadRecWhere</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *operation, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read one record.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#group___esp_req_1ga8e8ad5fd82f6979198192b4b63d30cc7" class="nameRef">espReadRecsWhere</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *operation, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read matching records.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_req_1ga64f9ab9cb2c3c8b0f7f580cb22e45ce5" class="nameRef">espReceive</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, char *buf, <a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read receive body content.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1ga2b1dc5b4a688fc1062395d6420e85ef9" class="nameRef">espRedirect</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, int status, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *target)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Redirect the client.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gaaf5114ed096b363628229ea0ae0f94c3" class="nameRef">espRedirectBack</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Redirect the client back to the referrer.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1gae38efda7004c7bfa985d300784432b9a" class="nameRef">espRefresh</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *on, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *off, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Control the refresh of web page dynamic elements.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___esp_req_1ga8743524e4c8aff73135e0ad6f2d44d7c" class="nameRef">espRemoveHeader</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove a header from the transmission.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#esp_8h_1a366ed657abe537c8b22930f69273707b" class="nameRef">espRemoveRec</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove a record from a database table.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_req_1gaa833750f16375fa479d0fcc22dfc2169" class="nameRef">espRender</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a formatted string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_req_1gae1fa564a4b89afb64df3d9681973e1bf" class="nameRef">espRenderBlock</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *buf, <a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a block of data to the client.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_req_1ga94594750521ce6621691dcec43a2d670" class="nameRef">espRenderCached</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render cached content.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_req_1gaf5951884b79343ba98eb53b8c2d28a4f" class="nameRef">espRenderError</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, int status, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an error message back to the client and finalize the request.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_req_1ga543bb9b12ee3f064a730a47164feac0d" class="nameRef">espRenderFile</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render the contents of a file back to the client.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_req_1gaf3bc7904c49db358937584129928579f" class="nameRef">espRenderParam</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render the value of a request parameter to the client.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_req_1ga743eec6372aeb305a939bc9b0026281e" class="nameRef">espRenderSafeString</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a safe string of data to the client.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_req_1ga2bc125ce68d2a8a8992228f0232c9b6f" class="nameRef">espRenderString</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a string of data to the client.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1ga492e5353599306baaf769d1b8636260e" class="nameRef">espRenderView</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a view template to the client.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga69fa3b47aaf280fe1f234ddd9944b741" class="nameRef">espScript</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a script link.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga258632ff2d1da9acb11510e70fff745c" class="nameRef">espSecurityToken</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Generate a security token.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_req_1ga54f5ce21966922b0883d1942ccbeae8d" class="nameRef">espSetAutoFinalizing</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Enable auto-finalizing for this request.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1ga6ea189a01c1c680e3f5d77396b3bd3a8" class="nameRef">espSetConn</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the current request connection.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gae9b3e3ddb3bf784d77cba59045dfeb81" class="nameRef">espSetContentLength</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1aa6887458d0a070b3665166af590089d8" class="ref">MprOff</a> length)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Define a content length header in the transmission.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1ga7bb7c062a2fb64c1756c93dc79481c2c" class="nameRef">espSetContentType</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *mimeType)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the transmission (response) content mime type.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gab3fa02a25383898985307c8c12ab9147" class="nameRef">espSetCookie</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *domain, <a href="mprBare.html#group___mpr_time" class="ref">MprTime</a> lifespan, <a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> isSecure)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a cookie in the transmission.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_req_1ga37e670dbf583aacb9bd662934ccf34f8" class="nameRef">espSetField</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Update a record field without writing to the database.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_req_1gaed1f88027c9c3bd4bcac7f8392e91e87" class="nameRef">espSetFields</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Update record fields without writing to the database.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gaad505657a6cb461d6645e1ee47740926" class="nameRef">espSetFlash</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *kind, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Send a flash message.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gac9ed013a63fe33aa9262a26bfa6ff317" class="nameRef">espSetFlashv</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *kind, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, va_list args)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Send a flash message.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#group___esp_req_1ga6e09b2658067694a86d1535bf56aebae" class="nameRef">espSetGrid</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_grid" class="ref">EdiGrid</a> *grid)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the current database grid.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1ga66c536436b8a99612b1ce571c315b39b" class="nameRef">espSetHeader</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a transmission header.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1gafcb200922fb98165c0485348ea640d01" class="nameRef">espSetHeaderString</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a simple key/value transmission header.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1ga3d21ff0ee522ae25885378e8cb55d1e9" class="nameRef">espSetIntParam</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *var, int value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set an integer request parameter value.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1ga491fdeaf71f15fb950d54245b7de865b" class="nameRef">espSetParam</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *var, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a request parameter value.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_req_1gaab0d7914afa7352d5708048c021f1ee1" class="nameRef">espSetRec</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_rec" class="ref">EdiRec</a> *rec)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the current database record.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___esp_session_1ga01ef5e61df606729516e7955f5140704" class="nameRef">espSetSessionObj</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set an object into the session state store.</td></tr>
<tr class="apiDef"><td class="apiType">int</td><td><a href="#group___esp_session_1ga100b653cb5cb53f21805db558ffe609f" class="nameRef">espSetSessionVar</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a session variable.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1ga3151f73107b752661efecbacf9011894" class="nameRef">espSetStatus</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, int status)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a Http response status.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1ga4ed2f95cccb206fc9069c0a77c5c1e62" class="nameRef">espShowRequest</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Show request details.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga63289f4ce5787e316b85c4ef1ddc42ba" class="nameRef">espStylesheet</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a stylesheet link.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1gab137ba67f183a346258867aedd5ffecb" class="nameRef">espTable</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_grid" class="ref">EdiGrid</a> *grid, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a table.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga99318656d06ca7b87c39c88fda5839a6" class="nameRef">espTabs</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a tab control.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga884c56db7cf61601b19f5cd748415cd5" class="nameRef">espText</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a text input field as part of a form.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_control_1ga462a61759aaca9af06e66e99f8de323c" class="nameRef">espTree</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_grid" class="ref">EdiGrid</a> *grid, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a tree control.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_req_1ga2d10fdd68ab00d306d344c815f7655e7" class="nameRef">espUpdateCache</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *data, int lifesecs)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Update the cached content for a request.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_req_1ga1dda75c993af2b593ff9a14b37db9532" class="nameRef">espUpdateField</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a value to a database table field.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_req_1gab39fd8b2a794223bfbe46e06b1498264" class="nameRef">espUpdateFields</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write field values to a database row.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_req_1ga585c648e2d4b3b6183bf22cc976b7d4b" class="nameRef">espUpdateRec</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_rec" class="ref">EdiRec</a> *rec)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a record to the database.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_req_1ga47475da9d7a9da33d0d07cd2a8211b8d" class="nameRef">espUri</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *target)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a URI.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga32d626626eee0bc4ade146973f6abb1c" class="nameRef">finalize</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Finalize the response.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga8fd13fd70582fa020ad0dd5c00af5579" class="nameRef">flash</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *kinds, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render flash notices.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gadac116554b543b7c4228c018a85882f5" class="nameRef">flush</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Flush transmit data.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga76b5e43ce8e841141744d0bb35a14079" class="nameRef">form</a>(void *record, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML form.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#group___mpr_list" class="ref">MprList*</a></td><td><a href="#esp_8h_1a4ab3c77c072c0e1b7a21439a85240d7e" class="nameRef">getColumns</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a list of column names.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="httpBare.html#group___http_conn" class="ref">HttpConn*</a></td><td><a href="#group___esp_abbrev_1gabe448b3542b4d1391e80e74192a09cb3" class="nameRef">getConn</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the connection object.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1aa6887458d0a070b3665166af590089d8" class="ref">MprOff</a></td><td><a href="#group___esp_abbrev_1gad6c78e62403541ae5c8695a126fa73d2" class="nameRef">getContentLength</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the receive body content length.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_abbrev_1ga0c4e333f8e42f16b3d071f10de8f823c" class="nameRef">getContentType</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the receive body content type.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_abbrev_1ga9e29353c73f7482f1b04657c044804a9" class="nameRef">getCookies</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the request cookies.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi" class="ref">Edi*</a></td><td><a href="#group___esp_abbrev_1ga9aa7c416a3ac3b6d732c1325e3f2ef15" class="nameRef">getDatabase</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current database instance.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_abbrev_1gae3849eeed48f781401eb601594566bf8" class="nameRef">getDir</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the default document root directory for the request route.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___esp_route" class="ref">EspRoute*</a></td><td><a href="#group___esp_abbrev_1ga29c40a3c98f7e8b07c4bab47a29d8ade" class="nameRef">getEspRoute</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the extended route EspRoute structure.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#esp_8h_1aae0c48e803f796f2549974ceaccc4f12" class="nameRef">getField</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a field from the current database record.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#esp_8h_1a2e60477a5b4168f59758c93507b4b899" class="nameRef">getGrid</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current database grid.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_abbrev_1ga3a9e6969b5beb4c554ec9032b322c0fe" class="nameRef">getHeader</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get an rx http header.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_req_1ga6cb98a81fac3b68ef772a6cc7a37a156" class="nameRef">getMethod</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the HTTP method.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_abbrev_1ga2382c30fce39d310820e556415abb763" class="nameRef">getQuery</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the HTTP URI query string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#esp_8h_1a8a4d997f211531f9ad4a21133f761349" class="nameRef">getRec</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the current database record.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_abbrev_1gaefcc3825a86579c9c2669e239f8b1431" class="nameRef">getReferrer</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the referring URI.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_abbrev_1ga241f0cd4f5d49f8a137f1024415b2674" class="nameRef">getSessionVar</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a session state variable.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_abbrev_1ga1f544d956f7515e66730b5ab72a329d6" class="nameRef">getTop</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a relative URI to the top of the application.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#struct_mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___esp_abbrev_1gad86dc79486e424b71970a6c2340de171" class="nameRef">getUploads</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the uploaded files.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_abbrev_1ga1562f14a38ec9ace0787756964e51cda" class="nameRef">getUri</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the request URI string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#esp_8h_1a25287207066ad592e465b36148439e2d" class="nameRef">hasGrid</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if a current grid has been defined.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#esp_8h_1a9ae793b0c68219491acb86735fa7a4d8" class="nameRef">hasRec</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if a current record has been defined and save to the database.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga0a5b008243290b353eeb090bd69be46e" class="nameRef">icon</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML icon.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga91e4a113e7036281b1fa7478d2b62f77" class="nameRef">image</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an HTML image.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga8e8c0dccb4ded8a2fecec11d389cf8c8" class="nameRef">inform</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set an informational flash notification message.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gaa3f886ac8ecb0b4f2f6decb1da1f5c82" class="nameRef">input</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an input field as part of a form.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_abbrev_1ga36e02fce10743365c3be3f4d7311bcb6" class="nameRef">isEof</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the receive input stream is at end-of-file.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_abbrev_1ga2c49e32dea0137b5bd9516c217b47fe5" class="nameRef">isFinalized</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if a http request is finalized.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_abbrev_1ga609397e6582775d72e233942fb46cec8" class="nameRef">isSecure</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Test if the connection is using SSL and is secure.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga8270401dba93512f1baa1314e254bb41" class="nameRef">label</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a text label field.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gaa340f0f548b2b4de74c31c54710ef079" class="nameRef">mail</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *address, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a mail link.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#group___esp_abbrev_1gaf422f6e91b1cbcb12f5624395c35b6b8" class="nameRef">makeGrid</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *content)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a grid.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#struct_mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___esp_abbrev_1gae478be50b70b65cbc43e79a2f7e87ad3" class="nameRef">makeHash</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a hash table container of property values.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_abbrev_1ga0292bb1e6965cb8befad09d4ce7a2839" class="nameRef">makeRec</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *content)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Make a record.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga93fd87500bb0783792cc96f12ed250ac" class="nameRef">notice</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set an error flash notification message.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_abbrev_1gad638c34898123293ebc120c1f9396a9c" class="nameRef">param</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get a request parameter.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#struct_mpr_hash" class="ref">MprHash*</a></td><td><a href="#group___esp_abbrev_1ga3c8e01edebd0020f20411085635cca69" class="nameRef">params</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Get the request parameter hash table.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga0322e295428bbb6e59beb7a0a4854f6e" class="nameRef">progress</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *progress, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Emit a progress bar.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gad51f892a429286884a4ca4e52169914f" class="nameRef">radio</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, void *choices, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a radio button.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#esp_8h_1a34ab6b0e4c677e26dde41a749c6ebc1c" class="nameRef">readRec</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read the identified record.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_abbrev_1gaa26e4e1c0388326035e93a9334f6e0ba" class="nameRef">readRecByKey</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read a record identified by key value.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_abbrev_1ga36f33afdfe9bdd2a583f43d2af4ed060" class="nameRef">readRecWhere</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *operation, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read one record.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#esp_8h_1a0709c70065cc9048a1a7a5ac6e294d16" class="nameRef">readRecsWhere</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *operation, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read matching records.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#esp_8h_1a550c1016448c47c8ef7b78612a67ccd2" class="nameRef">readTable</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read all the records in table from the database.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_abbrev_1ga3a7af8bca824b7941d058eeb598194ca" class="nameRef">receive</a>(char *buf, <a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Read receive body content.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga79cf206805a9595395af14e7c35f289d" class="nameRef">redirect</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *target)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Redirect the client.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gad75c0fe1f7da45beaec75d3cddf7bdb4" class="nameRef">redirectBack</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Redirect the client back to the referrer.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga6ddfd33e34cb0e8e442571979259a424" class="nameRef">refresh</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *on, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *off, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Control the refresh of web page dynamic elements.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#esp_8h_1a09091b0bc981b74fdf0b197fbee8adab" class="nameRef">removeRec</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Remove a record from a database table.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_abbrev_1gaf89154adc3cbf6d6a6a32c6b4457c593" class="nameRef">render</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a formatted string.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_abbrev_1gaa3ab885ce858d809f47571c64681b96d" class="nameRef">renderCached</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render cached content.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga5c6a2717cd75e9e0069b206507e5207e" class="nameRef">renderError</a>(int status, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render an error message back to the client and finalize the request.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_abbrev_1gaa1e37f244a0e0796df494dfb756472a8" class="nameRef">renderFile</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a file back to the client.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a></td><td><a href="#group___esp_abbrev_1ga40445cbba9d5b3a5baec51e59e3d6340" class="nameRef">renderSafe</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a formatted string after HTML escaping.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gaf0db430f850378bd83c514a0dda77fb9" class="nameRef">renderView</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *view)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a view template to the client.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga16aab7b1eeaafa67d40189ba9e3b9a88" class="nameRef">script</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a script link.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gab3444f174346e0d8e8d4d3a43d451c5e" class="nameRef">securityToken</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Generate a security token.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga3a877e198637c1ec75ff2a53dc8d7ebd" class="nameRef">setConn</a>(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the current request connection.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gafe8d897ff436eabc6fc275f76222a5c3" class="nameRef">setContentType</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *mimeType)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the transmission (response) content mime type.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga85b884db9ea1993efaa01dbe686f601c" class="nameRef">setCookie</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *domain, <a href="mprBare.html#group___mpr_time" class="ref">MprTime</a> lifespan, <a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> isSecure)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Define a cookie header to send with the response.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_abbrev_1ga6c39fec614ae333bcc5448930ab2dc8d" class="nameRef">setField</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Update a record field without writing to the database.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#group___esp_abbrev_1gaa3b523e44e0dab2a6b1fc320e600a4fd" class="nameRef">setFields</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Update record fields without writing to the database.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga7e1e6bad27a140a5f8f92d7cb3c3b6d9" class="nameRef">setFlash</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *kind, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a flash notification message.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_grid" class="ref">EdiGrid*</a></td><td><a href="#esp_8h_1aeed08cdbf64becc6ea822e9208831f63" class="nameRef">setGrid</a>(<a href="#group___edi_grid" class="ref">EdiGrid</a> *grid)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the current database grid.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gaf4cbdf3eef410884ed0928066d0503f2" class="nameRef">setHeader</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a transmission header.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga65fe2a97ffad029e6229e4e2dd290dd5" class="nameRef">setParam</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a request parameter value.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="#group___edi_rec" class="ref">EdiRec*</a></td><td><a href="#esp_8h_1afef8aa52aab6f3d8a3eebfe7eeb0edf4" class="nameRef">setRec</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set the current database record.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gadb4f7bc3020ab9c481f1ebcaf1ed3f2a" class="nameRef">setSessionVar</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a session state variable.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga63470999d986c7d2d064dc44cdc2fcac" class="nameRef">setStatus</a>(int status)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Set a Http response status.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1gadeaed6401e64556c1a6ed364b47704aa" class="nameRef">setTimeout</a>(void *proc, <a href="mprBare.html#group___mpr_time" class="ref">MprTime</a> timeout, void *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a timeout event.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga70074b92c4e5b0381a6a61f9e0f8e2cc" class="nameRef">showRequest</a>()</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Show request details.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga50471de30febcd31bae044ec7627e67d" class="nameRef">stylesheet</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a stylesheet link.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga6c8039aca717c38fc7b0629cee7e6fdd" class="nameRef">table</a>(<a href="#group___edi_grid" class="ref">EdiGrid</a> *grid, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a table.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga15bfb2c9cde23c908c659eb261901d01" class="nameRef">tabs</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a tab control.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga3e4c53a1a64bfb4a120fd7864d11ce59" class="nameRef">text</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a text input field as part of a form.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga8d88083825d334fa044a6536cfc8caf8" class="nameRef">tree</a>(<a href="#group___edi_grid" class="ref">EdiGrid</a> *grid, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Render a tree control.</td></tr>
<tr class="apiDef"><td class="apiType">void</td><td><a href="#group___esp_abbrev_1ga71ab6f699454ab16232f98c28a47935c" class="nameRef">updateCache</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *data, int lifesecs)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Update the cached content for a request.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_abbrev_1ga8aef62e678a3e5602d8dd4b2b85db394" class="nameRef">updateField</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a value to a database table field.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_abbrev_1ga6fbc926bff3b0e9f15e9611ca1301fef" class="nameRef">updateFields</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write field values to a database row.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a></td><td><a href="#group___esp_abbrev_1gaac69d2eab0ce7dfea56ac4714d0e6e55" class="nameRef">updateRec</a>(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Write a record to the database.</td></tr>
<tr class="apiDef"><td class="apiType"><a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar*</a></td><td><a href="#group___esp_abbrev_1ga56d17d8860dc351f63feaa55891cdf21" class="nameRef">uri</a>(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *target)</td></tr><tr class="apiBrief"><td>&nbsp;</td><td>Create a URI.</td></tr>
</table>
<a name="Typedefs"></a><h1>Typedefs</h1>
<table class="apiIndex" title="typedefs">
<tr class="apiDef"><td class="apiName"><a href="#struct_edi_provider" class="nameRef">EdiProvider</a></td><td class="apiBrief">Database provider interface.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_edi_validation" class="nameRef">EdiValidation</a></td><td class="apiBrief">Validation structure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___edi_service_1ga3cf21d57a02f250570e2beafc05befd9" class="nameRef">EdiValidationProc</a></td><td class="apiBrief">Field validation callback procedure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_esp" class="nameRef">Esp</a></td><td class="apiBrief">Top level ESP structure.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#struct_esp_action" class="nameRef">EspAction</a></td><td class="apiBrief">ESP Action.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#esp_8h_1aa0c56d9f50902eb9cf16889d3d95c129" class="nameRef">EspProc</a></td><td class="apiBrief">Procedure callback.</td></tr>
<tr class="apiDef"><td class="apiName"><a href="#group___esp_req_1ga4645d40178e3548fd0e6ad13fec1b5ed" class="nameRef">EspViewProc</a></td><td class="apiBrief">View procedure callback.</td></tr>
</table>
<a name="Defines"></a><h1>Defines</h1>
<table class="apiIndex" title="Defines">
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a84cefff441de0de7ef30a78e55150c1a" class="nameRef">EDI_AUTO_INC</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Field flag &mdash; Automatic increments on new row.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a0fc3c13863bc64f832d0524825eaccec" class="nameRef">EDI_AUTO_SAVE</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Auto-save database if modified in memory.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a12ef9df56bd504e09c8466345a3f8f2c" class="nameRef">EDI_CREATE</a>&nbsp;&nbsp;&nbsp;0x1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Create database if not present.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1aa250b5270a6712a110ad52fb6de2e943" class="nameRef">EDI_INDEX</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Field flag &mdash; Column is indexed.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a14387cca6628803c8ef36dde843d6859" class="nameRef">EDI_KEY</a>&nbsp;&nbsp;&nbsp;0x2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Field flag &mdash; Column is the key.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a39aeab0f683f28577c0069b7fde2425a" class="nameRef">EDI_LITERAL</a>&nbsp;&nbsp;&nbsp;0x8</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Literal schema in ediOpen source parameter.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a83428eb53ed4c3e10521b459df263308" class="nameRef">EDI_NO_SAVE</a>&nbsp;&nbsp;&nbsp;0x4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Prevent saving to disk.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a288a24bd0787d029ff45d5ff524be9d5" class="nameRef">EDI_SUPPRESS_SAVE</a>&nbsp;&nbsp;&nbsp;0x10</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Temporarily suppress auto-save.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a746df6a6802b08fe4947b35244dba71c" class="nameRef">EDI_TYPE_BINARY</a>&nbsp;&nbsp;&nbsp;1</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Arbitrary binary data.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a77bdc2d051ab90c28efe5e4ba1cceb2c" class="nameRef">EDI_TYPE_BOOL</a>&nbsp;&nbsp;&nbsp;2</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Boolean true|false value.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a7fc2ab5751a3baca9319cfd53875f9d6" class="nameRef">EDI_TYPE_DATE</a>&nbsp;&nbsp;&nbsp;3</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Date type.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a2870a18f02348419a26169dbf0ebf409" class="nameRef">EDI_TYPE_FLOAT</a>&nbsp;&nbsp;&nbsp;4</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Floating point number.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a2d1f6f789e2bf18e8ea956932b2dbff0" class="nameRef">EDI_TYPE_INT</a>&nbsp;&nbsp;&nbsp;5</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Integer number.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1adaf7fc17c98589a64fd985cebcef3f00" class="nameRef">EDI_TYPE_STRING</a>&nbsp;&nbsp;&nbsp;6</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>String.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a472cde49406f5a25cd201576622a4781" class="nameRef">EDI_TYPE_TEXT</a>&nbsp;&nbsp;&nbsp;7</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Multi-line text.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a61427a6279173262d67b485f3e83a5d8" class="nameRef">ESP_LIFESPAN</a>&nbsp;&nbsp;&nbsp;(3600 * MPR_TICKS_PER_SEC)</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Default generated content cache lifespan.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1a43fbeae907747e051a493bb33e63a4f4" class="nameRef">ESP_LISTEN</a>&nbsp;&nbsp;&nbsp;&quot;4000&quot;</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Default listening endpoint for the esp program.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1aba24bbfd8deaacad96a6aa1aa88b4dd1" class="nameRef">ESP_TOK_INCR</a>&nbsp;&nbsp;&nbsp;1024</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Growth increment for ESP tokens.</td></tr>
<tr class="apiDef">
<td>#define</td><td><a href="#esp_8h_1aaa20b3ba42a13818a076cb243333f8dd" class="nameRef">ESP_UNLOAD_TIMEOUT</a>&nbsp;&nbsp;&nbsp;(10)</td>
</tr>
<tr class="apiBrief"><td>&nbsp;</td><td>Very short timeout for reloading.</td></tr>
</table>
<h1>Edi</h1>
<a name="group___edi"></a>
<div class="api">
<div class="prototype">Edi</div>
<div class="apiDetail">
<p>Database structure.</p>
<dl><dt><b>Description</b>:</dt><dd>The Embedded Database Interface (EDI) defines an abstract interface atop various relational database providers. Providers are supplied for SQLite and for the ESP Memory Database (MDB).</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">int</td><td><td>flags</td><td>
Database flags.
</td>
<tr><td class="param">struct <a class="ref" BBB href="#struct_edi_provider">EdiProvider</a> *</td><td><td>provider</td><td>
Database provider.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___edi_1gab66595c455e15000e812ec830acce7d9"></a>
<div class="api">
<div class="prototype">
int
ediAddColumn
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName, int type, int flags)
</div>
<div class="apiDetail">
<p>Add a column to a table.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">columnName</td><td>Database column name.</td>
<tr><td class="param">type</td><td>Column data type. Set to one of EDI_TYPE_BINARY, EDI_TYPE_BOOL, EDI_TYPE_DATE EDI_TYPE_FLOAT, EDI_TYPE_INT, EDI_TYPE_STRING, EDI_TYPE_TEXT.</td>
<tr><td class="param">flags</td><td>Control column attributes. Set to a set of: EDI_AUTO_INC for auto incrementing columns, EDI_KEY if the column is the key column and/or EDI_INDEX to create an index on the column.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gaa6413f84f22899c4ae15e8ac3f477f56"></a>
<div class="api">
<div class="prototype">
int
ediAddIndex
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *indexName)
</div>
<div class="apiDetail">
<p>Add an index to a table.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">columnName</td><td>Database column name.</td>
<tr><td class="param">indexName</td><td>Ignored. Set to null.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gad0cad6a7fe8e2568923e47d6e9085ed4"></a>
<div class="api">
<div class="prototype">
int
ediAddTable
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)
</div>
<div class="apiDetail">
<p>Add a table to a database.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga64cb0410a70843250c9826e8d12e3944"></a>
<div class="api">
<div class="prototype">
int
ediAddValidation
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName, <a href="mprBare.html#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" class="ref">cvoid</a> *data)
</div>
<div class="apiDetail">
<p>Add a validation.</p>
<dl><dt><b>Description</b>:</dt><dd>Validations are run when calling ediUpdateRec. A validation is used to validate field data using builtin validators.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">name</td><td>Validation name. Select from: <ul><li>boolean &mdash; to validate field data as &quot;true&quot; or &quot;false&quot; </li><li>date &mdash; to validate field data as a date or time. </li><li>format &mdash; to validate field data against a regular expression supplied in the &quot;data&quot; argument </li><li>integer &mdash; to validate field data as an integral value </li><li>number &mdash; to validate field data as a number. It may be an integer or floating point number. </li><li>present &mdash; to validate field data as not null. </li><li>unique &mdash; to validate field data as being unique in the database table. </li></ul></td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">columnName</td><td>Database column name.</td>
<tr><td class="param">data</td><td>Argument data for the validator. For example: the &quot;format&quot; validator requires a regular expression.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gaf35d7f7eba6e1ea718e0169987807f61"></a>
<div class="api">
<div class="prototype">
int
ediChangeColumn
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName, int type, int flags)
</div>
<div class="apiDetail">
<p>Change a column schema definition.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">columnName</td><td>Database column name.</td>
<tr><td class="param">type</td><td>Column data type. Set to one of EDI_TYPE_BINARY, EDI_TYPE_BOOL, EDI_TYPE_DATE EDI_TYPE_FLOAT, EDI_TYPE_INT, EDI_TYPE_STRING, EDI_TYPE_TEXT.</td>
<tr><td class="param">flags</td><td>Control column attributes. Set to a set of: EDI_AUTO_INC for auto incrementing columns, EDI_KEY if the column is the key column and/or EDI_INDEX to create an index on the column.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga81b2c711a2a3047672b6c259946be394"></a>
<div class="api">
<div class="prototype">
void
ediClose
(<a href="#group___edi" class="ref">Edi</a> *edi)
</div>
<div class="apiDetail">
<p>Close a database.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga7500efee354868a347e7a9cc763994af"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
ediCreateBareGrid
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, int nrows)
</div>
<div class="apiDetail">
<p>Create a bare grid.</p>
<dl><dt><b>Description</b>:</dt><dd>This creates an empty grid based on the given table&apos;s schema.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">nrows</td><td>Number of rows to reserve in the grid.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>EdiGrid instance.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga15bf63cd0ba27fd41ffcd2556552bc9c"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
ediCreateBareRec
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, int nfields)
</div>
<div class="apiDetail">
<p>Create a bare record.</p>
<dl><dt><b>Description</b>:</dt><dd>This creates an empty record based on the given table&apos;s schema.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">nfields</td><td>Number of fields to reserve in the record.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>EdiGrid instance.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gad4e706a1a2d9ff527c9d42612ebeeae1"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
ediCreateRec
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)
</div>
<div class="apiDetail">
<p>Create a record.</p>
<dl><dt><b>Description</b>:</dt><dd>This will create a record using the given database tableName to supply the record schema. Use $ediCreateBareRec to create a free-standing record without requiring a database. The record is allocated and room is reserved to store record values. No record field values are stored.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Record instance.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gaec3079929130e2f517f56d8c322e2468"></a>
<div class="api">
<div class="prototype">
int
ediDelete
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Delete the database at the given path.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle. This is required to identify the database provider. The database should be closed before deleting.</td>
<tr><td class="param">path</td><td>Database path name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga1b8e8a569123ef71e5b341cb3f1329f9"></a>
<div class="api">
<div class="prototype">
int
ediDeleteRow
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)
</div>
<div class="apiDetail">
<p>Delete a row in a database table.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">key</td><td>Row key column value to delete.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gaa5e7ed50f7256c03c82778c1b681ea87"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
ediFormatField
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, <a href="#group___edi_field" class="ref">EdiField</a> value)
</div>
<div class="apiDetail">
<p>Format a field value.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">value</td><td>Field value.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Formatted value string.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gab5db5e05416c9998e8b3f3a2e700c2a2"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#group___mpr_list" class="ref">MprList</a> *
ediGetColumns
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)
</div>
<div class="apiDetail">
<p>Get a list of column names.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An MprList of column names in the given table.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gac764d3271d738b2e6d284e4d49e8b90e"></a>
<div class="api">
<div class="prototype">
int
ediGetColumnSchema
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName, int *type, int *flags, int *cid)
</div>
<div class="apiDetail">
<p>Get the column schema.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">columnName</td><td>Database column name.</td>
<tr><td class="param">type</td><td>Output parameter to receive the column data type. Will be set to one of: EDI_TYPE_BINARY, EDI_TYPE_BOOL, EDI_TYPE_DATE, EDI_TYPE_FLOAT, EDI_TYPE_INT, EDI_TYPE_STRING, EDI_TYPE_TEXT. Set to null if this data is not required.</td>
<tr><td class="param">flags</td><td>Output parameter to receive the column control flags. Will be set to one or more of: EDI_AUTO_INC, EDI_KEY and/or EDI_INDEX Set to null if this data is not required.</td>
<tr><td class="param">cid</td><td>Output parameter to receive the ordinal column index in the database table. Set to null if this data is not required.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gaf725c63758094eb5425fe30beaa3f4df"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
ediGetField
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName)
</div>
<div class="apiDetail">
<p>Get a record field.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Database record.</td>
<tr><td class="param">fieldName</td><td>Field in the record to extract.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An EdiField structure containing the record field value and details.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gaa0a1e1ea039237f9e082ad63a17e64f1"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
ediGetFieldFmt
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, <a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName)
</div>
<div class="apiDetail">
<p>Get and format a record field value.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Record field value.</td>
<tr><td class="param">rec</td><td>Record to examine.</td>
<tr><td class="param">fieldName</td><td>Record field to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>String value of the field.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga3720c685a8c4def59b12bccd26c03a40"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_field" class="ref">EdiField</a>
ediGetFieldSchema
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName)
</div>
<div class="apiDetail">
<p>Get the record field schema.</p>
<dl><dt><b>Description</b>:</dt><dd>This returns the actual EdiField which contains the field name, type, value and flags.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Database record.</td>
<tr><td class="param">fieldName</td><td>Field in the record to extract.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An EdiField structure containing the record field value and details.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga1f563dfa6f4ad87a227f0470b2a9838e"></a>
<div class="api">
<div class="prototype">
int
ediGetFieldType
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName)
</div>
<div class="apiDetail">
<p>Get the data type of a record field.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Record to examine.</td>
<tr><td class="param">fieldName</td><td>Field to examine.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The field type. Returns one of: EDI_TYPE_BINARY, EDI_TYPE_BOOL, EDI_TYPE_DATE, EDI_TYPE_FLOAT, EDI_TYPE_INT, EDI_TYPE_STRING, EDI_TYPE_TEXT.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga573eb5891e0dfbe37febd3fa93c469ad"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#group___mpr_list" class="ref">MprList</a> *
ediGetGridColumns
(<a href="#group___edi_grid" class="ref">EdiGrid</a> *grid)
</div>
<div class="apiDetail">
<p>Get a list of grid column names.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">grid</td><td>Database grid.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An MprList of column names in the given grid.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gaeffb65c159bee67b941ed8b335796c9e"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#group___mpr_list" class="ref">MprList</a> *
ediGetRecErrors
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec)
</div>
<div class="apiDetail">
<p>Get record validation errors.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Database record.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A list of validation errors. If validation passed, then this call returns NULL.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gafe0368e00f99402ec33a3058fb8aec00"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#group___mpr_list" class="ref">MprList</a> *
ediGetTables
(<a href="#group___edi" class="ref">Edi</a> *edi)
</div>
<div class="apiDetail">
<p>Get a list of database tables.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An MprList of table names in the database.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga0b179dce91f770f00b31fd7f009e7c89"></a>
<div class="api">
<div class="prototype">
int
ediGetTableSchema
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, int *numRows, int *numCols)
</div>
<div class="apiDetail">
<p>Get table schema information.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">numRows</td><td>Output parameter to receive the number of rows in the table Set to null if this data is not required.</td>
<tr><td class="param">numCols</td><td>Output parameter to receive the number of columns in the table Set to null if this data is not required.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga39664fad5ac6b8e8d4392e1b6196c668"></a>
<div class="api">
<div class="prototype">
char *
ediGetTypeString
(int type)
</div>
<div class="apiDetail">
<p>Convert an EDI type to a string.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">type</td><td>Column data type. Set to one of EDI_TYPE_BINARY, EDI_TYPE_BOOL, EDI_TYPE_DATE EDI_TYPE_FLOAT, EDI_TYPE_INT, EDI_TYPE_STRING, EDI_TYPE_TEXT.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Type string. This will be set to one of: &quot;binary&quot;, &quot;bool&quot;, &quot;date&quot;, &quot;float&quot;, &quot;int&quot;, &quot;string&quot; or &quot;text&quot;.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga7dec1de01e90319b1ff0fe351f83f49e"></a>
<div class="api">
<div class="prototype">
int
ediLoad
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>MOB - remove this API Load the database file.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">path</td><td>Database path name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gaa88adbb2470a05da45d468fd9d578672"></a>
<div class="api">
<div class="prototype">
int
ediLookupField
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName)
</div>
<div class="apiDetail">
<p>Lookup a field by name.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">fieldName</td><td>Database column name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The ordinal field (column) index in the table.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga92df88662a9be066b5e3eff35b8954b1"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
ediMakeGrid
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *content)
</div>
<div class="apiDetail">
<p>Make a grid.</p>
<dl><dt><b>Description</b>:</dt><dd>This call makes a free-standing data grid based on the JSON format content string.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">content</td><td>JSON format content string. The content should be an array of objects where each object is a set of property names and values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An EdiGrid instance.</dd></dl>
<dl><dt><b>Example</b>:</dt><dd>: grid = ediMakeGrid("[ \ <br/>
{ id: &apos;1&apos;, country: &apos;Australia&apos; }, \ <br/>
{ id: &apos;2&apos;, country: &apos;China&apos; }, \ <br/>
]");.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gac8ba9b4a0cdc2d2f30de7d915a4c51c1"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *
ediMakeHash
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Make a hash container of property values.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine formats the given arguments, parses the result as a JSON string and returns an equivalent hash of property values. The result after formatting should be of the form: ediMakeHash(&quot;{ key: &apos;value&apos;, key2: &apos;value&apos;, key3: &apos;value&apos; }&quot;);.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">...</td><td>arguments.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd><a class="ref" BBB href="#struct_mpr_hash" external="mpr.dtags">MprHash</a> instance.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga5bf685fd34ebd962218f900361ada49b"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
ediMakeRec
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *content)
</div>
<div class="apiDetail">
<p>Make a record.</p>
<dl><dt><b>Description</b>:</dt><dd>This call makes a free-standing data record based on the JSON format content string.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">content</td><td>JSON format content string. The content should be a set of property names and values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An EdiRec instance.</dd></dl>
<dl><dt><b>Example</b>:</dt><dd>: rec = ediMakeRec(&quot;{ id: 1, title: &apos;Message One&apos;, body: &apos;Line one&apos; }&quot;);.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga6913a7aa47c80857de9057e5442b5834"></a>
<div class="api">
<div class="prototype">
void
ediManageEdiRec
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, int flags)
</div>
<div class="apiDetail">
<p>Manage an EdiRec instance for garbage collection.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Record instance.</td>
<tr><td class="param">flags</td><td>GC management flag.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga7c923cfc31d2c7d94c9338c7849b8da6"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi" class="ref">Edi</a> *
ediOpen
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *source, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *provider, int flags)
</div>
<div class="apiDetail">
<p>Open a database.</p>
<dl><dt><b>Description</b>:</dt><dd>This opens a database using the specified database provider.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">source</td><td>Database path name. If using the &quot;mdb&quot; provider with the EDI_LITERAL flag, then the source argument can be set to a literal JSON database content string.</td>
<tr><td class="param">provider</td><td>Database provider. Set to &quot;mdb&quot; for the Memory Database or &quot;sqlite&quot; for the SQLite provider.</td>
<tr><td class="param">flags</td><td>Set to: <ul><li>EDI_CREATE &mdash; Create database if not present. </li><li>EDI_AUTO_SAVE &mdash; Auto-save database if modified in memory. This option is only supported by the &quot;mdb&quot; provider. </li><li>EDI_NO_SAVE &mdash; Prevent saving to disk. This option is only supported by the &quot;mdb&quot; provider. </li><li>EDI_LITERAL &mdash; Literal schema in ediOpen source parameter. This option is only supported by the &quot;mdb&quot; provider. </li></ul></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>If successful, returns an EDI database instance object. Otherwise returns zero.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga9e890e5216c6c01220e6ba150197a0e1"></a>
<div class="api">
<div class="prototype">
int
ediParseTypeString
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *type)
</div>
<div class="apiDetail">
<p>Parse an EDI type string.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">type</td><td>Type string set to one of: &quot;binary&quot;, &quot;bool&quot;, &quot;date&quot;, &quot;float&quot;, &quot;int&quot;, &quot;string&quot; or &quot;text&quot;.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Type code. Set to one of EDI_TYPE_BINARY, EDI_TYPE_BOOL, EDI_TYPE_DATE, EDI_TYPE_FLOAT, EDI_TYPE_INT, EDI_TYPE_STRING, EDI_TYPE_TEXT.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gaecc4d8a08a88424aec01aec08a9da73b"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
ediQuery
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *cmd)
</div>
<div class="apiDetail">
<p>Run a query.</p>
<dl><dt><b>Description</b>:</dt><dd>This runs a provider dependant query. For the SQLite provider, this runs an SQL statement. The &quot;mdb&quot; provider does not implement this API. To do queries using the &quot;mdb&quot; provider, use: $ediReadRec, $ediReadOneWhere, $ediReadWhere, $ediReadField and $ediReadTable.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">cmd</td><td>Query command to execute.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>If succesful, returns tabular data in the form of an EgiGrid structure. Returns NULL on errors.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga8ec0078c860b71c0271d5628f6633447"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
ediReadField
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *defaultValue)
</div>
<div class="apiDetail">
<p>Read a field from the database and format the result.</p>
<dl><dt><b>Description</b>:</dt><dd>This reads a field from the database and formats the result using an optional format string. If the field has a null or empty value, the supplied defaultValue will be returned.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">fmt</td><td>Printf style format string to use in formatting the result.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">key</td><td>Row key column value to read.</td>
<tr><td class="param">fieldName</td><td>Column name to read.</td>
<tr><td class="param">defaultValue</td><td>Default value to return if the field is null or empty.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Field value or default value if field is null or empty. Returns null if no matching record is found.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga4d7cca45297f343faa89a36bb6b14b65"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
ediReadOneWhere
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *operation, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Read one record.</p>
<dl><dt><b>Description</b>:</dt><dd>This runs a simple query on the database and selects the first matching record. The query selects a row that has a &quot;field&quot; that matches the given &quot;value&quot;.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">fieldName</td><td>Database field name to evaluate.</td>
<tr><td class="param">operation</td><td>Comparision operation. Set to &quot;==&quot;, &quot;!=&quot;, &quot;&lt;&quot;, &quot;&gt;&quot;, &quot;&lt;=&quot; or &quot;&gt;=&quot;.</td>
<tr><td class="param">value</td><td>Data value to compare with the field values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>First matching record. Returns NULL if no matching records.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga00759cb1f734d60434e9fe308176767c"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_field" class="ref">EdiField</a>
ediReadRawField
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName)
</div>
<div class="apiDetail">
<p>Read a field from the database.</p>
<dl><dt><b>Description</b>:</dt><dd>This reads a field from the database.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">key</td><td>Row key column value to read.</td>
<tr><td class="param">fieldName</td><td>Column name to read.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Field value or null if the no record is found. May return null or empty if the field is null or empty.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga9da339eccd0e7dddfea03640bfa30e7f"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
ediReadRec
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)
</div>
<div class="apiDetail">
<p>Read a record.</p>
<dl><dt><b>Description</b>:</dt><dd>Read a record from the given table as identified by the key value.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">key</td><td>Key value of the record to read.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Record instance of EdiRec.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga05bd6c0bc6cb6d7bd01550de2843b099"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
ediReadTable
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)
</div>
<div class="apiDetail">
<p>Read a table.</p>
<dl><dt><b>Description</b>:</dt><dd>This reads all the records in a table and returns a grid containing the results.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A grid containing all records. Returns NULL if no matching records.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gaff88b5fa67778c33a447fbb231a928c1"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
ediReadWhere
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *operation, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Read matching records.</p>
<dl><dt><b>Description</b>:</dt><dd>This runs a simple query on the database and returns matching records in a grid. The query selects all rows that have a &quot;field&quot; that matches the given &quot;value&quot;.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">fieldName</td><td>Database field name to evaluate.</td>
<tr><td class="param">operation</td><td>Comparision operation. Set to &quot;==&quot;, &quot;!=&quot;, &quot;&lt;&quot;, &quot;&gt;&quot;, &quot;&lt;=&quot; or &quot;&gt;=&quot;.</td>
<tr><td class="param">value</td><td>Data value to compare with the field values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A grid containing all matching records. Returns NULL if no matching records.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga2e0e7c2d3e5c286a51bdc7c1d18cc34b"></a>
<div class="api">
<div class="prototype">
int
ediRemoveIndex
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *indexName)
</div>
<div class="apiDetail">
<p>Remove a table index.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">indexName</td><td>Ignored. Set to null. This call will remove the table index.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gae965f0739fa618a75fdc0455453dec14"></a>
<div class="api">
<div class="prototype">
int
ediRemoveTable
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)
</div>
<div class="apiDetail">
<p>Remove a table from the database.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga6725ef26c5e502c45ed03f42c2f75051"></a>
<div class="api">
<div class="prototype">
int
ediRenameColumn
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *newColumnName)
</div>
<div class="apiDetail">
<p>Rename a column.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">columnName</td><td>Database column name.</td>
<tr><td class="param">newColumnName</td><td>New column name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga42ebae84b96f934005926c25cb568f24"></a>
<div class="api">
<div class="prototype">
int
ediRenameTable
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *newTableName)
</div>
<div class="apiDetail">
<p>Rename a table.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">newTableName</td><td>New database table name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga77d616667577833662154d65ef794519"></a>
<div class="api">
<div class="prototype">
int
ediSave
(<a href="#group___edi" class="ref">Edi</a> *edi)
</div>
<div class="apiDetail">
<p>Save in-memory database contents to disk.</p>
<dl><dt><b>Description</b>:</dt><dd>How this call behaves is provider dependant. If the provider is &quot;mdb&quot; and the database is not opened with AutoSave, then this call will save the in-memory contents. If the &quot;mdb&quot; database is opened with AutoSave, then this call will do nothing. For the &quot;sdb&quot; SQLite provider, this call does nothing.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga649f5d198bed950955c34c05d8b59777"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
ediSetField
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Set a record field without writing to the database.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine updates the record object with the given value. The record will not be written to the database. To write to the database, use $ediUpdateRec.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Record to update.</td>
<tr><td class="param">fieldName</td><td>Record field name to update.</td>
<tr><td class="param">value</td><td>Value to update.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The record instance if successful, otherwise NULL.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga6399c9e05317bf82c49d1336b21b2f17"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
ediSetFields
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)
</div>
<div class="apiDetail">
<p>Set record fields without writing to the database.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine updates the record object with the given values. The "data&apos; argument supplies a hash of fieldNames and values. The data hash may come from the request $params() or it can be manually created via <a class="ref" BBB href="#group___edi_1gac8ba9b4a0cdc2d2f30de7d915a4c51c1">ediMakeHash</a> to convert a JSON string into an options hash. For example: ediSetFields(rec, ediMakeHash(&quot;{ name: &apos;%s&apos;, address: &apos;%s&apos; }&quot;, name, address)) The record will not be written to the database. To write to the database, use $ediUpdateRec.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Record to update.</td>
<tr><td class="param">data</td><td>Hash of field names and values to use for the update.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The record instance if successful, otherwise NULL.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga14dfc03675a9312facb1be7dd48f73d6"></a>
<div class="api">
<div class="prototype">
int
ediUpdateField
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Write a value to a database table field.</p>
<dl><dt><b>Description</b>:</dt><dd>Update the value of a table field in the selected table row. Note: field validations are not run.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">key</td><td>Key value for the table row to update.</td>
<tr><td class="param">fieldName</td><td>Column name to update.</td>
<tr><td class="param">value</td><td>Value to write to the database field.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga9b65a775c4ddc081e49b1a55cabc06aa"></a>
<div class="api">
<div class="prototype">
int
ediUpdateRec
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="#group___edi_rec" class="ref">EdiRec</a> *rec)
</div>
<div class="apiDetail">
<p>Write a record to the database.</p>
<dl><dt><b>Description</b>:</dt><dd>If the record is a new record and the &quot;id&quot; column is EDI_AUTO_INC, then the &quot;id&quot; will be assigned prior to saving the record.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">rec</td><td>Record to write to the database.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1ga7525ab6e695b51abc1bb342b8f35022b"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
ediValidateRec
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec)
</div>
<div class="apiDetail">
<p>Validate a record.</p>
<dl><dt><b>Description</b>:</dt><dd>Run defined field validations and return true if the record validates. Field validations are defined via $ediAddValidation calls. If any validations fail, error messages will be added to the record and can be retrieved via $ediGetRecErrors.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Record to validate.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>True if all field valiations pass.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_1gafac7f959a214551acc56fd42a8c0e04e"></a>
<div class="api">
<div class="prototype">
int
edRemoveColumn
(<a href="#group___edi" class="ref">Edi</a> *edi, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *columnName)
</div>
<div class="apiDetail">
<p>Remove a column from a table.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">edi</td><td>Database handle.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">columnName</td><td>Database column name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful. Otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<h1>EdiField</h1>
<a name="group___edi_field"></a>
<div class="api">
<div class="prototype">EdiField</div>
<div class="apiDetail">
<p>EDI Record field structure.</p>
<dl><dt><b>Description</b>:</dt><dd>The EdiField stores record field data and minimal schema information such as the data type and source column name.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">int</td><td><td>flags</td><td>
Field flags.
Flag mask set to EDI_AUTO_INC, EDI_KEY and/or EDI_INDEX.
</td>
<tr><td class="param"><a class="ref" BBB href="#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" external="mpr.dtags">cchar</a> *</td><td><td>name</td><td>
Field name.
Sourced from the database column name.
</td>
<tr><td class="param">int</td><td><td>type</td><td>
Field data type.
Set to one of EDI_TYPE_BINARY, EDI_TYPE_BOOL, EDI_TYPE_DATE EDI_TYPE_FLOAT, EDI_TYPE_INT, EDI_TYPE_STRING, EDI_TYPE_TEXT.
</td>
<tr><td class="param">int</td><td><td>valid</td><td>
Field validity.
Set to true if valid.
</td>
<tr><td class="param"><a class="ref" BBB href="#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" external="mpr.dtags">cchar</a> *</td><td><td>value</td><td>
Field data value.
</td>
</table></dd></dl>
</div>
</div>
<h1>EdiGrid</h1>
<a name="group___edi_grid"></a>
<div class="api">
<div class="prototype">EdiGrid</div>
<div class="apiDetail">
<p>Grid structure.</p>
<dl><dt><b>Description</b>:</dt><dd>A grid is a tabular (grid) of rows and records. Grids may capture database table data, or may be free-standing without a backing database.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">struct Edi *</td><td><td>edi</td><td>
Database handle.
</td>
<tr><td class="param">int</td><td><td>nrecords</td><td>
Number of records in grid.
</td>
<tr><td class="param">EdiRec *</td><td><td>records[MPR_FLEX]</td><td>
Grid records.
</td>
<tr><td class="param"><a class="ref" BBB href="#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" external="mpr.dtags">cchar</a> *</td><td><td>tableName</td><td>
Base table name for grid.
</td>
</table></dd></dl>
</div>
</div>
<h1>EdiRec</h1>
<a name="group___edi_rec"></a>
<div class="api">
<div class="prototype">EdiRec</div>
<div class="apiDetail">
<p>Database record structure.</p>
<dl><dt><b>Description</b>:</dt><dd>Records may capture database row data, or may be free-standing without a backing database.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">struct Edi *</td><td><td>edi</td><td>
Database handle.
</td>
<tr><td class="param">MprList *</td><td><td>errors</td><td>
List of record errors.
</td>
<tr><td class="param">EdiField</td><td><td>fields[MPR_FLEX]</td><td>
Field records.
</td>
<tr><td class="param"><a class="ref" BBB href="#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" external="mpr.dtags">cchar</a> *</td><td><td>id</td><td>
Record key ID.
</td>
<tr><td class="param">int</td><td><td>nfields</td><td>
Number of fields in record.
</td>
<tr><td class="param"><a class="ref" BBB href="#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" external="mpr.dtags">cchar</a> *</td><td><td>tableName</td><td>
Base table name for record.
</td>
</table></dd></dl>
</div>
</div>
<h1>EdiService</h1>
<a name="group___edi_service"></a>
<div class="api">
<div class="prototype">EdiService</div>
<div class="apiDetail">
<p>Edi service control structure.</p>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="group___edi_service_1ga7c605c7761d7a46a207cb6dd0f71b372"></a>
<div class="api">
<div class="prototype">
void
ediAddProvider
(struct EdiProvider *provider)
</div>
<div class="apiDetail">
<p>Add a database provider.</p>
<dl><dt><b>Description</b>:</dt><dd>This should only be called by database providers.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_service_1ga52bb6b4d64beebfacefa8cc7cfeab50f"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_service" class="ref">EdiService</a> *
ediCreateService
()
</div>
<div class="apiDetail">
<p>Create the EDI service.</p>
<dl><dt>Returns:</dt><dd>EdiService object.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___edi_service_1ga889df64bdd239f71c66b4fa920be8f46"></a>
<div class="api">
<div class="prototype">
void
ediDefineValidation
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="#group___edi_service_1ga3cf21d57a02f250570e2beafc05befd9" class="ref">EdiValidationProc</a> vfn)
</div>
<div class="apiDetail">
<p>Define a field validation procedure.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Validation name.</td>
<tr><td class="param">vfn</td><td>Validation callback to invoke when validating field data.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<h1>EspAbbrev</h1>
<a name="group___esp_abbrev"></a>
<div class="api">
<div class="prototype">EspAbbrev</div>
<div class="apiDetail">
<p>Abbreviated ESP Controls.</p>
<dl><dt><b>Description</b>:</dt><dd>These controls do not take a HttpConn argument and determine the connection object from thread-local storage.</dd></dl>
<dl><dt><b>API</b> Stability:</dt><dd>Prototype.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gadba1deb080e78b4517119a0294489b44"></a>
<div class="api">
<div class="prototype">
void
addHeader
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Add a header to the transmission using a format string.</p>
<dl><dt><b>Description</b>:</dt><dd>Add a header if it does not already exist.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">key</td><td>Http response header key.</td>
<tr><td class="param">fmt</td><td>Printf style formatted string to use as the header key value.</td>
<tr><td class="param">...</td><td>Arguments for fmt.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code. Returns MPR_ERR_ALREADY_EXISTS if the header already exists.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga47f1a100cffe7bdc50e78f6a65ea2acb"></a>
<div class="api">
<div class="prototype">
void
alert
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Display a popup alert message in the client&apos;s browser when the web page is displayed.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">text</td><td>Alert text to display.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options. <ul><li>Polling period in milliseconds for the client to check the server for status message updates. If this is not specifed, the connection to the server will be kept open. This permits the server to &quot;push&quot; alerts to the console, but will consume a connection at the server for each client. </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga8ae6a60523890e7f70c40105f9c684d4"></a>
<div class="api">
<div class="prototype">
void
anchor
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML anchor link.</p>
<dl><dt><b>Description</b>:</dt><dd>This is emits a label inside an anchor reference. i.e. a clickable link.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">text</td><td>Anchor text to display for the link.</td>
<tr><td class="param">uri</td><td>URI link for the anchor.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gafb3e93213916900295d7c2be0105d55a"></a>
<div class="api">
<div class="prototype">
void
button
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML button to use inside a form.</p>
<dl><dt><b>Description</b>:</dt><dd>This creates a button suitable for use inside an input form. When the button is clicked, the input form will be submitted.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">text</td><td>Button text to display. This text is also used as the name for the form input from this control.</td>
<tr><td class="param">value</td><td>Form input value to submit when the button is clicked.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gab2a06686c0a57b7d098a1651c541c997"></a>
<div class="api">
<div class="prototype">
void
buttonLink
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML button to use outside a form.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">text</td><td>Button text to display.</td>
<tr><td class="param">uri</td><td>URI to invoke when the button is clicked.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga4fbfd9bc0d38ff85e5a20461189a812e"></a>
<div class="api">
<div class="prototype">
void
chart
(<a href="#group___edi_grid" class="ref">EdiGrid</a> *grid, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a graphic chart.</p>
<dl><dt><b>Description</b>:</dt><dd>The chart control can display static or dynamic tabular data. The client chart control manages sorting by column, dynamic data refreshes, pagination and clicking on rows. TODO. This is incomplete.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">grid</td><td>Data to display. The data is a grid of data. Use ediCreateGrid or ediReadGrid.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options. <ul><li>columns Object hash of column entries. Each column entry is in-turn an object hash of options. If unset, all columns are displayed using defaults. </li><li>kind String Type of chart. Select from: piechart, table, linechart, annotatedtimeline, guage, map, motionchart, areachart, intensitymap, imageareachart, barchart, imagebarchart, bioheatmap, columnchart, linechart, imagelinechart, imagepiechart, scatterchart (and more) </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaef38c9b3cd6c1db7b951a5e0587e16c9"></a>
<div class="api">
<div class="prototype">
void
checkbox
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *checkedValue, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an input checkbox.</p>
<dl><dt><b>Description</b>:</dt><dd>This creates a checkbox suitable for use within an input form.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">field</td><td>Name for the input checkbox. This defines the HTML element name and provides the source of the initial value for the checkbox. The field should be a property of the $espForm current record. If this call is used without a form control record, the actual data value should be supplied via the options.value property.</td>
<tr><td class="param">checkedValue</td><td>Value for which the checkbox will be checked.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gabc52230088c078fdeafb1e8d6a941185"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
createRec
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)
</div>
<div class="apiDetail">
<p>Create a record and initialize field values.</p>
<dl><dt><b>Description</b>:</dt><dd>This will call $ediCreateRec to create a record based on the given table&apos;s schema. It will then call $ediSetFields to update the record with the given data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">data</td><td>Hash of field values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>EdRec instance.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gab7b4049b554576b57f8cc49efc9e3a95"></a>
<div class="api">
<div class="prototype">
void
createSession
()
</div>
<div class="apiDetail">
<p>Create a session state object.</p>
<dl><dt><b>Description</b>:</dt><dd>The session state object can be used to share state between requests. If a session has not already been created, this call will create a new session. It will create a response cookie containing a session ID that will be sent to the client with the response. Note: Objects are stored in the session state using JSON serialization. This routine calls $espCreateSession.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga35677b9aa8d61543db5ea80377e823a6"></a>
<div class="api">
<div class="prototype">
void
destroySession
()
</div>
<div class="apiDetail">
<p>Destroy a session state object.</p>
<dl><dt><b>Description</b>:</dt><dd></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga6d64e8f3ca52318774994ead312772fd"></a>
<div class="api">
<div class="prototype">
void
division
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *body, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML division.</p>
<dl><dt><b>Description</b>:</dt><dd>This creates an HTML element with the required options.It is useful to generate a dynamically refreshing division.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">body</td><td>HTML body to render.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga9db9b8b7e2c750f6f942da0478866de2"></a>
<div class="api">
<div class="prototype">
void
dontAutoFinalize
()
</div>
<div class="apiDetail">
<p>Don&apos;t auto-finalize this request.</p>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gae43638b69d2bf1bf6cf037459aad2ce2"></a>
<div class="api">
<div class="prototype">
void
dropdown
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *choices, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a dropdown selection list.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">field</td><td>Record field name to provide the default value for the list. The field should be a property of the form current record. The field name is used to create the HTML input control name. If this call is used without a form control record, the actual data value should be supplied via the options.value property.</td>
<tr><td class="param">choices</td><td>Choices to select from. This is a JSON style set of properties. For example: espDropdown(conn, &quot;priority&quot;, &quot;{ low: 0, med: 1, high: 2 }&quot;, NULL).</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga32d626626eee0bc4ade146973f6abb1c"></a>
<div class="api">
<div class="prototype">
void
finalize
()
</div>
<div class="apiDetail">
<p>Finalize the response.</p>
<dl><dt><b>Description</b>:</dt><dd>Signals the end of any and all response data and flushes any buffered write data to the client. If the request has already been finalized, this call has no additional effect. This routine calls $espFinalize.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga8fd13fd70582fa020ad0dd5c00af5579"></a>
<div class="api">
<div class="prototype">
void
flash
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *kinds, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render flash notices.</p>
<dl><dt><b>Description</b>:</dt><dd>Flash notices are one-time messages that are displayed to the client on the next request (only). See $espSetFlash for how to define flash messages.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">kinds</td><td>Space separated list of flash messages types. Typical types are: &quot;error&quot;, &quot;inform&quot;, &quot;warning&quot;.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options. <ul><li>retain &mdash; Number of seconds to retain the message. If &lt;= 0, the message is retained until another message is displayed. Default is 0. MOB - this default implies it is displayed for zero seconds </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gadac116554b543b7c4228c018a85882f5"></a>
<div class="api">
<div class="prototype">
void
flush
()
</div>
<div class="apiDetail">
<p>Flush transmit data.</p>
<dl><dt><b>Description</b>:</dt><dd>This writes any buffered data.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga76b5e43ce8e841141744d0bb35a14079"></a>
<div class="api">
<div class="prototype">
void
form
(void *record, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML form.</p>
<dl><dt><b>Description</b>:</dt><dd>This will render an HTML form tag and optionally associate the given record as the current record for the request. Abbreviated controls (see $EspAbbrev) use the current record to supply form data fields and values. The espForm control can be used without a record. In this case, nested ESP controls may have to provide values via an Options.value field.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">record</td><td>Record to use by default to supply form field names and values.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options. <ul><li>hideErrors &mdash; Don&apos;t display database record errors. Records retain error diagnostics from the previous failed write. Setting this option will prevent the display of such errors. </li><li>modal &mdash; Make the form a modal dialog. This will block all other HTML controls except the form. </li><li>insecure &mdash; Don&apos;t generate a security token for the form. </li><li>securityToken &mdash; String Override CSRF security token to include when the form is submitted. A default security token will always be generated unless options.insecure is defined to be true. Security tokens are used by ESP to mitigate cross site scripting errors. </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gabe448b3542b4d1391e80e74192a09cb3"></a>
<div class="api">
<div class="prototype">
<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *
getConn
()
</div>
<div class="apiDetail">
<p>Get the connection object.</p>
<dl><dt><b>Description</b>:</dt><dd>Before a view or controller is run, the current connection object for the request is saved in thread local data. Most EspControl APIs take an HttpConn object as an argument.</dd></dl>
<dl><dt>Returns:</dt><dd>HttpConn connection instance object.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gad6c78e62403541ae5c8695a126fa73d2"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1aa6887458d0a070b3665166af590089d8" class="ref">MprOff</a>
getContentLength
()
</div>
<div class="apiDetail">
<p>Get the receive body content length.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the length of the receive body content (if any). This is used in servers to get the length of posted data and in clients to get the response body length.</dd></dl>
<dl><dt>Returns:</dt><dd>A count of the response content data in bytes.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga0c4e333f8e42f16b3d071f10de8f823c"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
getContentType
()
</div>
<div class="apiDetail">
<p>Get the receive body content type.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the content mime type of the receive body content (if any).</dd></dl>
<dl><dt>Returns:</dt><dd>Mime type of any receive content. Set to NULL if not posted data.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga9e29353c73f7482f1b04657c044804a9"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
getCookies
()
</div>
<div class="apiDetail">
<p>Get the request cookies.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the cookies defined in the current request.</dd></dl>
<dl><dt>Returns:</dt><dd>Return a string containing the cookies sent in the Http header of the last request.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga9aa7c416a3ac3b6d732c1325e3f2ef15"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi" class="ref">Edi</a> *
getDatabase
()
</div>
<div class="apiDetail">
<p>Get the current database instance.</p>
<dl><dt><b>Description</b>:</dt><dd>A route may have a default database configured via the EspDb Appweb.conf configuration directive. The database will be opened when the web server initializes and will be shared between all requests using the route.</dd></dl>
<dl><dt>Returns:</dt><dd>Edi EDI database handle.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gae3849eeed48f781401eb601594566bf8"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
getDir
()
</div>
<div class="apiDetail">
<p>Get the default document root directory for the request route.</p>
<dl><dt>Returns:</dt><dd>A directory path name.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga29c40a3c98f7e8b07c4bab47a29d8ade"></a>
<div class="api">
<div class="prototype">
<a href="#group___esp_route" class="ref">EspRoute</a> *
getEspRoute
()
</div>
<div class="apiDetail">
<p>Get the extended route EspRoute structure.</p>
<dl><dt>Returns:</dt><dd>EspRoute instance.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga3a9e6969b5beb4c554ec9032b322c0fe"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
getHeader
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)
</div>
<div class="apiDetail">
<p>Get an rx http header.</p>
<dl><dt><b>Description</b>:</dt><dd>Get a http response header for a given header key.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">key</td><td>Name of the header to retrieve. This should be a lower case header name. For example: &quot;Connection&quot;.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Value associated with the header key or null if the key did not exist in the response.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga2382c30fce39d310820e556415abb763"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
getQuery
()
</div>
<div class="apiDetail">
<p>Get the HTTP URI query string.</p>
<dl><dt><b>Description</b>:</dt><dd>This is a convenience API to return the query string for the current request.</dd></dl>
<dl><dt>Returns:</dt><dd>The <a class="ref" BBB href="#group___esp_req_1ga41a42035766ff5d2fd0fd74588e167ea">espGetConn()</a>-&gt;rx-&gt;parsedUri-&gt;query property.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaefcc3825a86579c9c2669e239f8b1431"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
getReferrer
()
</div>
<div class="apiDetail">
<p>Get the referring URI.</p>
<dl><dt><b>Description</b>:</dt><dd>This returns the referring URI as described in the HTTP &quot;referer&quot; (yes the HTTP specification does spell it incorrectly) header. If this header is not defined, this routine will return the home URI as returned by $home.</dd></dl>
<dl><dt>Returns:</dt><dd>String URI back to the referring URI. If no referrer is defined, refers to the home URI.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga241f0cd4f5d49f8a137f1024415b2674"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
getSessionVar
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name)
</div>
<div class="apiDetail">
<p>Get a session state variable.</p>
<dl><dt><b>Description</b>:</dt><dd>See also $espGetSessionVar and $espGetSessionObj for alternate ways to retrieve session data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Variable name to get.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The session variable value. Returns NULL if not set.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga1f544d956f7515e66730b5ab72a329d6"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
getTop
()
</div>
<div class="apiDetail">
<p>Get a relative URI to the top of the application.</p>
<dl><dt><b>Description</b>:</dt><dd>This will return an absolute URI for the top of the application. This will be &quot;/&quot; if there is no application script name. Otherwise, it will return a URI for the script name for the application. Alternatively, this can be constructed via uri(&quot;~&quot;).</dd></dl>
<dl><dt>Returns:</dt><dd>String Absolute URI to the top of the application.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gad86dc79486e424b71970a6c2340de171"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *
getUploads
()
</div>
<div class="apiDetail">
<p>Get the uploaded files.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the hash table defining the uploaded files. This hash is indexed by the file identifier supplied in the upload form. The hash entries are HttpUploadFile objects.</dd></dl>
<dl><dt>Returns:</dt><dd>A hash of HttpUploadFile objects.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga1562f14a38ec9ace0787756964e51cda"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
getUri
()
</div>
<div class="apiDetail">
<p>Get the request URI string.</p>
<dl><dt><b>Description</b>:</dt><dd>This is a convenience API to return the request URI.</dd></dl>
<dl><dt>Returns:</dt><dd>The <a class="ref" BBB href="#group___esp_req_1ga41a42035766ff5d2fd0fd74588e167ea">espGetConn()</a>-&gt;rx-&gt;uri.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga0a5b008243290b353eeb090bd69be46e"></a>
<div class="api">
<div class="prototype">
void
icon
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML icon.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">uri</td><td>URI reference for the icon resource.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga91e4a113e7036281b1fa7478d2b62f77"></a>
<div class="api">
<div class="prototype">
void
image
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML image.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">uri</td><td>URI reference for the image resource.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga8e8c0dccb4ded8a2fecec11d389cf8c8"></a>
<div class="api">
<div class="prototype">
void
inform
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Set an informational flash notification message.</p>
<dl><dt><b>Description</b>:</dt><dd>Flash messages persist for only one request and are a convenient way to pass state information or feedback messages to the next request. This routine calls $espInform.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style message format.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaa3f886ac8ecb0b4f2f6decb1da1f5c82"></a>
<div class="api">
<div class="prototype">
void
input
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an input field as part of a form.</p>
This is a smart input control that will call the appropriate input control based on the database record field data type
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">field</td><td>Name for the input field. This defines the HTML element name and provides the source of the initial value to display. The field should be a property of the form current record. If this call is used without a form control record, the actual data value should be supplied via the options.value property.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga36e02fce10743365c3be3f4d7311bcb6"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
isEof
()
</div>
<div class="apiDetail">
<p>Test if the receive input stream is at end-of-file.</p>
<dl><dt>Returns:</dt><dd>&quot;true&quot; if there is no more receive data to read.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga2c49e32dea0137b5bd9516c217b47fe5"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
isFinalized
()
</div>
<div class="apiDetail">
<p>Test if a http request is finalized.</p>
<dl><dt><b>Description</b>:</dt><dd>This tests if <a class="ref" BBB href="#group___esp_req_1gac142434246bc5558dfe73a78ded7a7f0">espFinalize</a> or <a class="ref" BBB href="#group___http_tx_1ga279ad49e5163402e2afd6caf478bcc70" external="http.dtags">httpFinalize</a> has been called for a request.</dd></dl>
<dl><dt>Returns:</dt><dd>&quot;true&quot; if the request has been finalized.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga609397e6582775d72e233942fb46cec8"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
isSecure
()
</div>
<div class="apiDetail">
<p>Test if the connection is using SSL and is secure.</p>
<dl><dt>Returns:</dt><dd>&quot;true&quot; if the connection is using SSL.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga8270401dba93512f1baa1314e254bb41"></a>
<div class="api">
<div class="prototype">
void
label
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a text label field.</p>
This renders an output-only text field. Use
espText()
for input fields
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">text</td><td>Label text to display.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaa340f0f548b2b4de74c31c54710ef079"></a>
<div class="api">
<div class="prototype">
void
mail
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *address, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a mail link.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Recipient name to display.</td>
<tr><td class="param">address</td><td>Mail recipient address link.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaf422f6e91b1cbcb12f5624395c35b6b8"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
makeGrid
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *content)
</div>
<div class="apiDetail">
<p>Make a grid.</p>
<dl><dt><b>Description</b>:</dt><dd>This call makes a free-standing data grid based on the JSON format content string. The record is not saved to the database.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">content</td><td>JSON format content string. The content should be an array of objects where each object is a set of property names and values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An EdiGrid instance.</dd></dl>
<dl><dt><b>Example</b>:</dt><dd>: grid = ediMakeGrid("[ \ <br/>
{ id: &apos;1&apos;, country: &apos;Australia&apos; }, \ <br/>
{ id: &apos;2&apos;, country: &apos;China&apos; }, \ <br/>
]");.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gae478be50b70b65cbc43e79a2f7e87ad3"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *
makeHash
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Make a hash table container of property values.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine formats the given arguments, parses the result as a JSON string and returns an equivalent hash of property values. The result after formatting should be of the form: hash(&quot;{ key: &apos;value&apos;, key2: &apos;value&apos;, key3: &apos;value&apos; }&quot;);.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">...</td><td>arguments.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd><a class="ref" BBB href="#struct_mpr_hash" external="mpr.dtags">MprHash</a> instance.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga0292bb1e6965cb8befad09d4ce7a2839"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
makeRec
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *content)
</div>
<div class="apiDetail">
<p>Make a record.</p>
<dl><dt><b>Description</b>:</dt><dd>This call makes a free-standing data record based on the JSON format content string. The record is not saved to the database.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">content</td><td>JSON format content string. The content should be a set of property names and values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An EdiRec instance.</dd></dl>
<dl><dt><b>Example</b>:</dt><dd>: rec = ediMakeRec(&quot;{ id: 1, title: &apos;Message One&apos;, body: &apos;Line one&apos; }&quot;);.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga93fd87500bb0783792cc96f12ed250ac"></a>
<div class="api">
<div class="prototype">
void
notice
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Set an error flash notification message.</p>
<dl><dt><b>Description</b>:</dt><dd>Flash messages persist for only one request and are a convenient way to pass state information or feedback messages to the next request.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style message format.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gad638c34898123293ebc120c1f9396a9c"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
param
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name)
</div>
<div class="apiDetail">
<p>Get a request parameter.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the value of a named request parameter. Form variables are defined via www-urlencoded query or post data contained in the request. This routine calls $espGetParam.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Name of the request parameter to retrieve.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>String containing the request parameter&apos;s value. Caller should not free.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga3c8e01edebd0020f20411085635cca69"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *
params
()
</div>
<div class="apiDetail">
<p>Get the request parameter hash table.</p>
<dl><dt><b>Description</b>:</dt><dd>This call gets the params hash table for the current request. Route tokens, request query data, and www-url encoded form data are all entered into the params table after decoding. Use <a class="ref" BBB href="#group___mpr_hash_1ga28eaf688ae47d09abd9552fe003cedbb" external="mpr.dtags">mprLookupKey</a> to retrieve data from the table. This routine calls $espGetParams.</dd></dl>
<dl><dt>Returns:</dt><dd><a class="ref" BBB href="#struct_mpr_hash" external="mpr.dtags">MprHash</a> instance containing the request parameters.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga0322e295428bbb6e59beb7a0a4854f6e"></a>
<div class="api">
<div class="prototype">
void
progress
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *progress, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Emit a progress bar.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">progress</td><td>Progress percentage (0-100).</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gad51f892a429286884a4ca4e52169914f"></a>
<div class="api">
<div class="prototype">
void
radio
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, void *choices, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a radio button.</p>
This creates a radio button suitable for use within an input form
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">field</td><td>Name for the input radio button. This defines the HTML element name and provides the source of the initial value to display. The field should be a property of the form current record. If this call is used without a form control record, the actual data value should be supplied via the options.value property.</td>
<tr><td class="param">choices</td><td>Choices to select from. This is a JSON style set of properties. For example: espRadio(conn, &quot;priority&quot;, &quot;{ low: 0, med: 1, high: 2, }&quot;, NULL).</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaa26e4e1c0388326035e93a9334f6e0ba"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
readRecByKey
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)
</div>
<div class="apiDetail">
<p>Read a record identified by key value.</p>
<dl><dt><b>Description</b>:</dt><dd>Read a record from the given table as identified by the key value.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">key</td><td>Key value of the record to read.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Record instance of EdiRec.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga36f33afdfe9bdd2a583f43d2af4ed060"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
readRecWhere
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *operation, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Read one record.</p>
<dl><dt><b>Description</b>:</dt><dd>This runs a simple query on the database and selects the first matching record. The query selects a row that has a &quot;field&quot; that matches the given &quot;value&quot;.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">fieldName</td><td>Database field name to evaluate.</td>
<tr><td class="param">operation</td><td>Comparison operation. Set to &quot;==&quot;, &quot;!=&quot;, &quot;&lt;&quot;, &quot;&gt;&quot;, &quot;&lt;=&quot; or &quot;&gt;=&quot;.</td>
<tr><td class="param">value</td><td>Data value to compare with the field values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>First matching record. Returns NULL if no matching records.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga3a7af8bca824b7941d058eeb598194ca"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
receive
(char *buf, <a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Read receive body content.</p>
<dl><dt><b>Description</b>:</dt><dd>Read body content from the client.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">buf</td><td>Buffer to accept content data.</td>
<tr><td class="param">size</td><td>Size of the buffer.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of bytes read into the buffer.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga79cf206805a9595395af14e7c35f289d"></a>
<div class="api">
<div class="prototype">
void
redirect
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *target)
</div>
<div class="apiDetail">
<p>Redirect the client.</p>
<dl><dt><b>Description</b>:</dt><dd>Redirect the client to a new uri. This will redirect with an HTTP 302 status. If a different HTTP status code is required, use $espRedirect.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">target</td><td>New target uri for the client.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gad75c0fe1f7da45beaec75d3cddf7bdb4"></a>
<div class="api">
<div class="prototype">
void
redirectBack
()
</div>
<div class="apiDetail">
<p>Redirect the client back to the referrer.</p>
<dl><dt><b>Description</b>:</dt><dd>Redirect the client to the referring URI.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga6ddfd33e34cb0e8e442571979259a424"></a>
<div class="api">
<div class="prototype">
void
refresh
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *on, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *off, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Control the refresh of web page dynamic elements.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">on</td><td>URI to invoke when turning &quot;on&quot; refresh.</td>
<tr><td class="param">off</td><td>URI to invoke when turning &quot;off&quot; refresh.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options. <ul><li>minified Set to &quot;ture&quot; to select a minified (compressed) version of the script. </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaf89154adc3cbf6d6a6a32c6b4457c593"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
render
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Render a formatted string.</p>
<dl><dt><b>Description</b>:</dt><dd>Render a formatted string of data into packets to the client. Data packets will be created as required to store the write data. This call may block waiting for data to drain to the client.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style formatted string.</td>
<tr><td class="param">...</td><td>Arguments for fmt.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaa3ab885ce858d809f47571c64681b96d"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
renderCached
()
</div>
<div class="apiDetail">
<p>Render cached content.</p>
<dl><dt><b>Description</b>:</dt><dd>Render the saved, cached response from a prior request to this URI. This is useful if the caching mode has been set to &quot;manual&quot;.</dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga5c6a2717cd75e9e0069b206507e5207e"></a>
<div class="api">
<div class="prototype">
void
renderError
(int status, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Render an error message back to the client and finalize the request.</p>
The output is Html escaped for security
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">status</td><td>Http status code.</td>
<tr><td class="param">fmt</td><td>Printf style message format.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaa1e37f244a0e0796df494dfb756472a8"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
renderFile
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Render a file back to the client.</p>
<dl><dt><b>Description</b>:</dt><dd>Render a formatted string of data and then HTML escape. Data packets will be created as required to store the write data. This call may block waiting for data to drain to the client.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">path</td><td>Filename of the file to send to the client.</td>
<tr><td class="param">...</td><td>Arguments for fmt.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga40445cbba9d5b3a5baec51e59e3d6340"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
renderSafe
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Render a formatted string after HTML escaping.</p>
<dl><dt><b>Description</b>:</dt><dd>Render a formatted string of data and then HTML escape. Data packets will be created as required to store the write data. This call may block waiting for data to drain to the client.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style formatted string.</td>
<tr><td class="param">...</td><td>Arguments for fmt.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaf0db430f850378bd83c514a0dda77fb9"></a>
<div class="api">
<div class="prototype">
void
renderView
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *view)
</div>
<div class="apiDetail">
<p>Render a view template to the client.</p>
<dl><dt><b>Description</b>:</dt><dd>Actions are C procedures that are invoked when specific URIs are routed to the controller/action pair.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">view</td><td>view name.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga16aab7b1eeaafa67d40189ba9e3b9a88"></a>
<div class="api">
<div class="prototype">
void
script
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a script link.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">uri</td><td>Script URI to load. Set to null to get a default set of scripts. See $httpLink for a list of possible URI formats.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gab3444f174346e0d8e8d4d3a43d451c5e"></a>
<div class="api">
<div class="prototype">
void
securityToken
()
</div>
<div class="apiDetail">
<p>Generate a security token.</p>
<dl><dt><b>Description</b>:</dt><dd>Security tokens are used to help guard against CSRF threats. This call will generate a security token for the page and emit an HTML meta element for the security token. The token will automatically be included whenever forms are submitted and the token be validated by the receiving Controller. Forms will normally automatically generate the security token and that explicitly calling this routine is not required unless a security token is required for non-form requests such as AJAX requests. The $securityToken control should be called inside the &lt;head section of the web page.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga3a877e198637c1ec75ff2a53dc8d7ebd"></a>
<div class="api">
<div class="prototype">
void
setConn
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Set the current request connection.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>The HttpConn connection object to define.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gafe8d897ff436eabc6fc275f76222a5c3"></a>
<div class="api">
<div class="prototype">
void
setContentType
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *mimeType)
</div>
<div class="apiDetail">
<p>Set the transmission (response) content mime type.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the mime type Http header in the transmission.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">mimeType</td><td>Mime type string.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga85b884db9ea1993efaa01dbe686f601c"></a>
<div class="api">
<div class="prototype">
void
setCookie
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *domain, <a href="mprBare.html#group___mpr_time" class="ref">MprTime</a> lifespan, <a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> isSecure)
</div>
<div class="apiDetail">
<p>Define a cookie header to send with the response.</p>
The Path, Domain, and Expires properties can be set to null for default values
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Cookie name.</td>
<tr><td class="param">value</td><td>Cookie value.</td>
<tr><td class="param">path</td><td>Uri path to which the cookie applies.</td>
<tr><td class="param">domain</td><td>String Domain in which the cookie applies. Must have 2-3 &quot;.&quot; and begin with a leading &quot;.&quot;. For example: domain: .example.com Some browsers will accept cookies without the initial &quot;.&quot;, but the spec: (RFC 2109) requires it.</td>
<tr><td class="param">lifespan</td><td>Lifespan of the cookie. (MOB units?).</td>
<tr><td class="param">isSecure</td><td>Boolean Set to &quot;true&quot; if the cookie only applies for SSL based connections.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga6c39fec614ae333bcc5448930ab2dc8d"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
setField
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Update a record field without writing to the database.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine updates the record object with the given value. The record will not be written to the database. To write to the database, use $writeRec.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Record to update.</td>
<tr><td class="param">fieldName</td><td>Record field name to update.</td>
<tr><td class="param">value</td><td>Value to update.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The record instance if successful, otherwise NULL.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaa3b523e44e0dab2a6b1fc320e600a4fd"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
setFields
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)
</div>
<div class="apiDetail">
<p>Update record fields without writing to the database.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine updates the record object with the given values. The "data&apos; argument supplies a hash of fieldNames and values. The data hash may come from the request $params() or it can be manually created via <a class="ref" BBB href="#group___edi_1gac8ba9b4a0cdc2d2f30de7d915a4c51c1">ediMakeHash</a> to convert a JSON string into an options hash. For example: updateFields(rec, hash(&quot;{ name: &apos;%s&apos;, address: &apos;%s&apos; }&quot;, name, address)) The record will not be written to the database. To write to the database, use $ediWriteRec.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Record to update.</td>
<tr><td class="param">data</td><td>Hash of field names and values to use for the update.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The record instance if successful, otherwise NULL.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga7e1e6bad27a140a5f8f92d7cb3c3b6d9"></a>
<div class="api">
<div class="prototype">
void
setFlash
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *kind, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Set a flash notification message.</p>
<dl><dt><b>Description</b>:</dt><dd>Flash messages persist for only one request and are a convenient way to pass state information or feedback messages to the next request. Flash messages use the session state store, but persist only for one request. The $inform, $error and $warn convenience methods invoke $notice. This routine calls $espSetFlash.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">kind</td><td>Kind of flash message.</td>
<tr><td class="param">fmt</td><td>Printf style message format.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaf4cbdf3eef410884ed0928066d0503f2"></a>
<div class="api">
<div class="prototype">
void
setHeader
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Set a transmission header.</p>
<dl><dt><b>Description</b>:</dt><dd>Set a Http header to send with the request. If the header already exists, its value is overwritten.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">key</td><td>Http response header key.</td>
<tr><td class="param">fmt</td><td>Printf style formatted string to use as the header key value.</td>
<tr><td class="param">...</td><td>Arguments for fmt.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga65fe2a97ffad029e6229e4e2dd290dd5"></a>
<div class="api">
<div class="prototype">
void
setParam
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Set a request parameter value.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the value of a named request parameter to a string value. Form variables are defined via www-urlencoded query or post data contained in the request.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Name of the request parameter to set.</td>
<tr><td class="param">value</td><td>Value to set.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gadb4f7bc3020ab9c481f1ebcaf1ed3f2a"></a>
<div class="api">
<div class="prototype">
void
setSessionVar
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Set a session state variable.</p>
<dl><dt><b>Description</b>:</dt><dd>See also $espSetSessionVar and $espSetSessionObj for alternate ways to set session data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">name</td><td>Variable name to set.</td>
<tr><td class="param">value</td><td>Value to set.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga63470999d986c7d2d064dc44cdc2fcac"></a>
<div class="api">
<div class="prototype">
void
setStatus
(int status)
</div>
<div class="apiDetail">
<p>Set a Http response status.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the Http response status for the request. This defaults to 200 (OK).</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">status</td><td>Http status code.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gadeaed6401e64556c1a6ed364b47704aa"></a>
<div class="api">
<div class="prototype">
void
setTimeout
(void *proc, <a href="mprBare.html#group___mpr_time" class="ref">MprTime</a> timeout, void *data)
</div>
<div class="apiDetail">
<p>Create a timeout event.</p>
<dl><dt><b>Description</b>:</dt><dd>Invoke the given procedure after the timeout.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">proc</td><td>Function to invoke.</td>
<tr><td class="param">timeout</td><td>Time in milliseconds to elapse before invoking the timeout.</td>
<tr><td class="param">data</td><td>Argument to pass to proc.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga70074b92c4e5b0381a6a61f9e0f8e2cc"></a>
<div class="api">
<div class="prototype">
void
showRequest
()
</div>
<div class="apiDetail">
<p>Show request details.</p>
<dl><dt><b>Description</b>:</dt><dd>This echoes request details back to the client. This is useful as a debugging tool.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga50471de30febcd31bae044ec7627e67d"></a>
<div class="api">
<div class="prototype">
void
stylesheet
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a stylesheet link.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">uri</td><td>Stylesheet URI to load. Set to null to get a default set of stylesheets. See $httpLink for a list of possible URI formats.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga6c8039aca717c38fc7b0629cee7e6fdd"></a>
<div class="api">
<div class="prototype">
void
table
(<a href="#group___edi_grid" class="ref">EdiGrid</a> *grid, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a table.</p>
<dl><dt><b>Description</b>:</dt><dd>The table control can display static or dynamic tabular data. The client table control manages sorting by column, dynamic data refreshes and clicking on rows or cells.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">grid</td><td>Data to display. The data is a grid of data. Use ediCreateGrid or ediReadGrid.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
<tr><td class="param">options</td><td>Optional extra options. See $View for a list of the standard options. <ul><li>cell Boolean Set to &quot;true&quot; to make click or edit links apply per cell instead of per row. The default is false. </li><li>columns (Array|Object) The columns list is anobject hash of column objects where each column entry is hash of column options. Column options: <ul><li>align - Will right-align numbers by default </li><li>click - URI to invoke if the cell is clicked </li><li>edit - MOB </li><li>formatter - Function to invoke to format the value to display </li><li>header - Header text for the column </li><li>style - Cell styles </li><li>width - Column width. Can be a string percentage or numeric pixel width </li></ul></li><li>params Object Hash of post parameters to include in the request. This is a hash of key/value items. </li><li>pivot Boolean Pivot the table by swaping rows for columns and vice-versa </li><li>showHeader Boolean Control if column headings are displayed. </li><li>showId Boolean If a columns option is not provided, the id column is normally hidden. To display, set showId to be &quot;true&quot;. </li><li>sort String Enable row sorting and define the column to sort by. Defaults to the first column. </li><li>sortOrder String Default sort order. Set to &quot;ascending&quot; or &quot;descending&quot;.Defaults to ascending. </li><li>style String CSS class to use for the table. The ultimate style to use for a table cell is the combination of style, styleCells, styleColumns and style Rows. </li><li>styleCells 2D Array of styles to use for the table body cells. Can also provide an array to the column.style property. </li><li>styleColumns Array of styles to use for the table body columns. Can also use the style option in the columns option. </li><li>styleRows Array of styles to use for the table body rows </li><li>title String Table title. </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga15bfb2c9cde23c908c659eb261901d01"></a>
<div class="api">
<div class="prototype">
void
tabs
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a tab control.</p>
The tab control can manage a set of panes and will selectively show and hide or invoke the selected panes. If the &quot;click&quot; option is defined, the selected pane will be invoked via a foreground click. If the &quot;remote&quot; option is defined, the selected pane will be invoked via a background click. If the &quot;toggle&quot; option is defined the selected pane will be made visible and other panes will be hidden. If using show/hide tabs, define the initial visible pane to be of the class &quot;-ejs-pane-visible&quot; and define other panes to be &quot;-ejs-pane-hidden&quot;. The control&apos;s client side code will toggle these classes to make panes visible or hidden
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Tab data for the control. Tab data is a single object where the tab text is the property key and the target to invoke is the property value.</td>
<tr><td class="param">options</td><td>Optional extra options. See $View for a list of the standard options. <ul><li>click Set to &quot;true&quot; to invoke the selected pane via a foreground click. </li><li>remote Set to &quot;true&quot; to invoke the selected pane via a background click. </li><li>toggle Set to &quot;true&quot; to show the selected pane and hide other panes. </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga3e4c53a1a64bfb4a120fd7864d11ce59"></a>
<div class="api">
<div class="prototype">
void
text
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a text input field as part of a form.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">field</td><td>Name for the input text field. This defines the HTML element name and provides the source of the initial value to display. The field should be a property of the form control record. It can be a simple property of the record or it can have multiple parts, such as: field.field.field. If this call is used without a form control record, the actual data value should be supplied via the options.value property. If the cols or rows option is defined, then a textarea HTML element will be used for multiline input.</td>
<tr><td class="param">options</td><td>Optional extra options. See $View for a list of the standard options. <ul><li>cols Number number of text columns </li><li>rows Number number of text rows </li><li>password Boolean The data to display is a password and should be obfuscated. </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga8d88083825d334fa044a6536cfc8caf8"></a>
<div class="api">
<div class="prototype">
void
tree
(<a href="#group___edi_grid" class="ref">EdiGrid</a> *grid, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a tree control.</p>
<dl><dt><b>Description</b>:</dt><dd>The tree control can display static or dynamic tree data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">grid</td><td>Optional initial data for the control. The data option may be used with the refresh option to dynamically refresh the data. The tree data is typically an XML document.</td>
<tr><td class="param">options</td><td>Optional extra options. See $View for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga71ab6f699454ab16232f98c28a47935c"></a>
<div class="api">
<div class="prototype">
void
updateCache
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *data, int lifesecs)
</div>
<div class="apiDetail">
<p>Update the cached content for a request.</p>
<dl><dt><b>Description</b>:</dt><dd>Save the given content for future requests. This is useful if the caching mode has been set to &quot;manual&quot;.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">uri</td><td>Request URI to cache for.</td>
<tr><td class="param">data</td><td>Data to cache.</td>
<tr><td class="param">lifesecs</td><td>Time in seconds to cache the data.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga8aef62e678a3e5602d8dd4b2b85db394"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
updateField
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Write a value to a database table field.</p>
<dl><dt><b>Description</b>:</dt><dd>Update the value of a table field in the selected table row. Note: validations are not run.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">key</td><td>Key value for the table row to update.</td>
<tr><td class="param">fieldName</td><td>Column name to update.</td>
<tr><td class="param">value</td><td>Value to write to the database field.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>&quot;true&quot; if the field can be successfully written.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga6fbc926bff3b0e9f15e9611ca1301fef"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
updateFields
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)
</div>
<div class="apiDetail">
<p>Write field values to a database row.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine updates the current record with the given data and then saves the record to the database. The "data&apos; argument supplies a hash of fieldNames and values. The data hash may come from the request $params() or it can be manually created via <a class="ref" BBB href="#group___edi_1gac8ba9b4a0cdc2d2f30de7d915a4c51c1">ediMakeHash</a> to convert a JSON string into an options hash. For example: ediWriteFields(rec, <a class="ref" BBB href="#group___esp_abbrev_1ga3c8e01edebd0020f20411085635cca69">params()</a>); The record runs field validations before saving to the database.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">data</td><td>Hash of field names and values to use for the update.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>&quot;true&quot; if the field can be successfully written. Returns false if field validations fail.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1gaac69d2eab0ce7dfea56ac4714d0e6e55"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
updateRec
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec)
</div>
<div class="apiDetail">
<p>Write a record to the database.</p>
<dl><dt><b>Description</b>:</dt><dd>The record will be saved to the database after running any field validations. If any field validations fail to pass, the record will not be written and error details can be retrieved via $ediGetRecErrors. If the record is a new record and the &quot;id&quot; column is EDI_AUTO_INC, then the &quot;id&quot; will be assigned prior to saving the record.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Record to write to the database.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>&quot;true&quot; if the record can be successfully written.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_abbrev_1ga56d17d8860dc351f63feaa55891cdf21"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
uri
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *target)
</div>
<div class="apiDetail">
<p>Create a URI.</p>
<dl><dt><b>Description</b>:</dt><dd>Create a URI link by expansions tokens based on the current request and route state. The target parameter may contain partial or complete URI information. The missing parts are supplied using the current request and route tables. The resulting URI is a normalized, server-local URI (that begins with &quot;/&quot;). The URI will include any defined route prefix, but will not include scheme, host or port components.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">target</td><td>The URI target. The target parameter can be a URI string or JSON style set of options. The target will have any embedded &quot;{tokens}&quot; expanded by using token values from the request parameters. If the target has an absolute URI path, that path is used directly after tokenization. If the target begins with &quot;~&quot;, that character will be replaced with the route prefix. This is a very convenient way to create application top-level relative links. <br/><br/>
If the target is a string that begins with &quot;{AT}&quot; it will be interpreted as a controller/action pair of the form &quot;{AT}Controller/action&quot;. If the &quot;controller/&quot; portion is absent, the current controller is used. If the action component is missing, the &quot;list&quot; action is used. A bare &quot;{AT}&quot; refers to the &quot;list&quot; action of the current controller. <br/><br/>
If the target starts with &quot;{&quot; it is interpreted as being a JSON style set of options that describe the link. If the target is a relative URI path, it is appended to the current request URI path. <br/><br/>
If the target is a JSON style of options, it can specify the URI components: scheme, host, port, path, reference and query. If these component properties are supplied, these will be combined to create a URI. <br/><br/>
If the target specifies either a controller/action or a JSON set of options, The URI will be created according to the route URI template. The template may be explicitly specified via a &quot;route&quot; target property. Otherwise, if an &quot;action&quot; property is specified, the route of the same name will be used. If these don&apos;t result in a usable route, the &quot;default&quot; route will be used. <br/><br/>
These are the properties supported in a JSON style &quot;{ ... }&quot; target: <ul><li>scheme String URI scheme portion </li><li>host String URI host portion </li><li>port Number URI port number </li><li>path String URI path portion </li><li>reference String URI path reference. Does not include &quot;#&quot; </li><li>query String URI query parameters. Does not include &quot;?&quot; </li><li>controller String Controller name if using a Controller-based route. This can also be specified via the action option. </li><li>action String Action to invoke. This can be a URI string or a Controller action of the form {AT}Controller/action. </li><li>route String Route name to use for the URI template </li></ul></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A normalized, server-local Uri string.</dd></dl>
<dl><dt><b>Example</b>:</dt><dd>Uri(&quot;http://example.com/index.html&quot;, 0); <br/>
uri(&quot;/path/to/index.html&quot;, 0); <br/>
uri(&quot;../images/splash.png&quot;, 0); <br/>
uri(&quot;~/static/images/splash.png&quot;, 0); <br/>
uri(&quot;${app}/static/images/splash.png&quot;, 0); <br/>
uri(&quot;@controller/checkout&quot;, 0); <br/>
uri(&quot;@controller/&quot;) <br/>
uri(&quot;@init&quot;) <br/>
uri(&quot;@&quot;) <br/>
uri(&quot;{ action: &apos;@post/create&apos; }&quot;, 0); <br/>
uri(&quot;{ action: &apos;checkout&apos; }&quot;, 0); <br/>
uri(&quot;{ action: &apos;logout&apos;, controller: &apos;admin&apos; }&quot;, 0); <br/>
uri(&quot;{ action: &apos;admin/logout&apos;&quot;, 0); <br/>
uri(&quot;{ product: &apos;candy&apos;, quantity: &apos;10&apos;, template: &apos;/cart/${product}/${quantity}&apos; }&quot;, 0); <br/>
uri(&quot;{ route: &apos;~/STAR/edit&apos;, action: &apos;checkout&apos;, id: &apos;99&apos; }&quot;, 0); <br/>
uri(&quot;{ template: &apos;~/static/images/${theme}/background.jpg&apos;, theme: &apos;blue&apos; }&quot;, 0);.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<h1>EspControl</h1>
<a name="group___esp_control"></a>
<div class="api">
<div class="prototype">EspControl</div>
<div class="apiDetail">
<p>There are two groups of ESP Control APIs.</p>
<dl><dt><b>API</b> Stability:</dt><dd>Prototype.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga2400f88754f6e5556efd76ef3ddeed93"></a>
<div class="api">
<div class="prototype">
void
endform
()
</div>
<div class="apiDetail">
<p>Signify the end of an HTML form.</p>
<dl><dt><b>Description</b>:</dt><dd>This emits a HTML closing form tag.</dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga46d20e684116990c878ef113b0702972"></a>
<div class="api">
<div class="prototype">
void
espAlert
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Display a popup alert message in the client&apos;s browser when the web page is displayed.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">text</td><td>Alert text to display.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options. <ul><li>period &mdash; Polling period in milliseconds for the client to check the server for status message updates. If this is not specifed, the connection to the server will be kept open. This permits the server to &quot;push&quot; alerts to the console, but will consume a connection at the server for each client. </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_control_1ga603c454b5dce3691e3ca7b0c1e7d860e"></a>
<div class="api">
<div class="prototype">
void
espAnchor
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML anchor link.</p>
<dl><dt><b>Description</b>:</dt><dd>This emits a label inside an anchor reference. i.e. a clickable link.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">text</td><td>Anchor text to display for the link.</td>
<tr><td class="param">uri</td><td>URI link for the anchor.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga5bf9787cd0cd13684a7e8ffa55aba884"></a>
<div class="api">
<div class="prototype">
void
espButton
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML button to use inside a form.</p>
<dl><dt><b>Description</b>:</dt><dd>This creates a button suitable for use inside an input form. When the button is clicked, the input form will be submitted.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">text</td><td>Button text to display. This text is also used as the name for the form input from this control.</td>
<tr><td class="param">value</td><td>Form input value to submit when the button is clicked.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1gae7c01afaa7ef62fce8c378a0864eee84"></a>
<div class="api">
<div class="prototype">
void
espButtonLink
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML button to use outside a form.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">text</td><td>Button text to display.</td>
<tr><td class="param">uri</td><td>URI to invoke when the button is clicked.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga11f59d518f29ecddd15cd6d970113d52"></a>
<div class="api">
<div class="prototype">
void
espChart
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_grid" class="ref">EdiGrid</a> *grid, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a graphic chart.</p>
<dl><dt><b>Description</b>:</dt><dd>The chart control can display static or dynamic tabular data. The client chart control manages sorting by column, dynamic data refreshes, pagination, and clicking on rows. TODO. This is incomplete.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">grid</td><td>Data to display. The data is a grid of data. Use ediCreateGrid or ediReadGrid.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options. <ul><li>columns Object hash of column entries. Each column entry is (in turn) an object hash of options. If unset, all columns are displayed using defaults. </li><li>kind String Type of chart. Select from: piechart, table, linechart, annotatedtimeline, guage, map, motionchart, areachart, intensitymap, imageareachart, barchart, imagebarchart, bioheatmap, columnchart, linechart, imagelinechart, imagepiechart, scatterchart (and more). </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga4c0097201d128c40f451af90ceb5f674"></a>
<div class="api">
<div class="prototype">
void
espCheckbox
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *checkedValue, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an input checkbox.</p>
<dl><dt><b>Description</b>:</dt><dd>This creates a checkbox suitable for use within an input form.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">name</td><td>Name for the input checkbox. This defines the HTML element name, and provides the source of the initial value for the checkbox. The field should be a property of the $espForm current record. If this call is used without a form control record, the actual data value should be supplied via the options.value property.</td>
<tr><td class="param">checkedValue</td><td>Value for which the checkbox will be checked.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga5677ea87f674bd598faee87113b7fd2f"></a>
<div class="api">
<div class="prototype">
void
espDivision
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *body, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML division.</p>
<dl><dt><b>Description</b>:</dt><dd>This creates an HTML element with the required options. It is useful to generate a dynamically refreshing division.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">body</td><td>HTML body to render.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga74f4ebc195992a3b8e1229db1cc864d3"></a>
<div class="api">
<div class="prototype">
void
espDropdown
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *choices, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a dropdown selection list.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">field</td><td>Record field name to provide the default value for the list. The field should be a property of the form current record. The field name is used to create the HTML input control name. If this call is used without a form control record, the actual data value should be supplied via the options.value property.</td>
<tr><td class="param">choices</td><td>Choices to select from. This is a JSON style set of properties. For example: espDropdown(conn, &quot;priority&quot;, &quot;{ low: 0, med: 1, high: 2 }&quot;, NULL).</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1gadf62f0d9f2459c1be758606992c235ac"></a>
<div class="api">
<div class="prototype">
void
espEndform
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Signify the end of an HTML form.</p>
<dl><dt><b>Description</b>:</dt><dd>This emits a HTML closing form tag.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1gad7619da182c4e98e7ff0c30036929229"></a>
<div class="api">
<div class="prototype">
void
espFlash
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *kinds, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render flash messages.</p>
<dl><dt><b>Description</b>:</dt><dd>Flash messages are one-time messages that are displayed to the client on the next request (only). Flash messages use the session state store but persist for only one request. See $espSetFlash for how to define flash messages.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">kinds</td><td>Space separated list of flash messages types. Typical types are: &quot;error&quot;, &quot;inform&quot;, &quot;warning&quot;.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options. <ul><li>retain &mdash; Number of seconds to retain the message. If &lt;= 0, the message is retained until another message is displayed. Default is 0. MOB - this default implies it is displayed for zero seconds </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1gadb29a44388231433289094ab1313c240"></a>
<div class="api">
<div class="prototype">
void
espForm
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_rec" class="ref">EdiRec</a> *record, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML form.</p>
<dl><dt><b>Description</b>:</dt><dd>This will render an HTML form tag and optionally associate the given record as the current record for the request. Abbreviated controls (see $EspAbbrev) use the current record to supply form data fields and values. The espForm control can be used without a record. In this case, nested ESP controls may have to provide values via an Options.value field.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">record</td><td>Record to use by default to supply form field names and values.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options. <ul><li>hideErrors &mdash; Don&apos;t display database record errors. Records retain error diagnostics from the previous failed write. Setting this option will prevent the display of such errors. </li><li>modal &mdash; Make the form a modal dialog. This will block all other HTML controls except the form. </li><li>nosecurity &mdash; Don&apos;t generate a security token for the form. </li><li>securityToken &mdash; String Override CSRF security token to include when the form is submitted. A default security token will always be generated unless options.nosecurity is defined to be true. Security tokens are used by ESP to mitigate cross-site scripting errors. </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga462c0f8e483d69249668dc4254005bd0"></a>
<div class="api">
<div class="prototype">
void
espIcon
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML icon.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">uri</td><td>URI reference for the icon resource.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1gafdc98cdf30e71fd013d2ff2e1b10ccb1"></a>
<div class="api">
<div class="prototype">
void
espImage
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an HTML image.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">uri</td><td>URI reference for the image resource.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga9dc11bf739eeb2ec348d1e0adc50b5ef"></a>
<div class="api">
<div class="prototype">
void
espInput
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render an input field as part of a form.</p>
This is a smart input control that will call the appropriate input control based on the database record field data type
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">field</td><td>Name for the input field. This defines the HTML element name and provides the source of the initial value to display. The field should be a property of the form current record. If this call is used without a form control record, the actual data value should be supplied via the options.value property.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga292e9afc5d77571f11aecb967c30855f"></a>
<div class="api">
<div class="prototype">
void
espLabel
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *text, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a text label field.</p>
This renders an output-only text field. Use
espText()
for input fields
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">text</td><td>Label text to display.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga87d3d362beaeb6d9d698536d0e8ee593"></a>
<div class="api">
<div class="prototype">
void
espMail
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *address, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a mail link.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">name</td><td>Recipient name to display.</td>
<tr><td class="param">address</td><td>Mail recipient address link.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga6fe85fea47319ff5201edcc9be477540"></a>
<div class="api">
<div class="prototype">
void
espProgress
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *progress, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Emit a progress bar.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">progress</td><td>Progress percentage (0-100).</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga8e7a51fb64f2adbd01183236875ce890"></a>
<div class="api">
<div class="prototype">
void
espRadio
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, void *choices, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a radio button.</p>
This creates a radio button suitable for use within an input form
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">field</td><td>Name for the input radio button. This defines the HTML element name and provides the source of the initial value to display. The field should be a property of the form current record. If this call is used without a form control record, the actual data value should be supplied via the options.value property.</td>
<tr><td class="param">choices</td><td>Choices to select from. This is a JSON style set of properties. For example: espRadio(conn, &quot;priority&quot;, &quot;{ low: 0, med: 1, high: 2, }&quot;, NULL).</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1gae38efda7004c7bfa985d300784432b9a"></a>
<div class="api">
<div class="prototype">
void
espRefresh
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *on, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *off, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Control the refresh of web page dynamic elements.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">on</td><td>URI to invoke when turning &quot;on&quot; refresh.</td>
<tr><td class="param">off</td><td>URI to invoke when turning &quot;off&quot; refresh.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options. <ul><li>minified &mdash; Set to &quot;true&quot; to select a minified (compressed) version of the script. </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga69fa3b47aaf280fe1f234ddd9944b741"></a>
<div class="api">
<div class="prototype">
void
espScript
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a script link.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">uri</td><td>Script URI to load. Set to null to get a default set of scripts. See $httpLink for a list of possible URI formats.</td>
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga258632ff2d1da9acb11510e70fff745c"></a>
<div class="api">
<div class="prototype">
void
espSecurityToken
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Generate a security token.</p>
<dl><dt><b>Description</b>:</dt><dd>Security tokens are used to help guard against CSRF threats. This call will generate a security token for the page, and emit an HTML meta element for the security token. The token will automatically be included whenever forms are submitted and the token is validated by the receiving Controller. Typically, forms will automatically generate the security token. Note that explicitly calling this routine is not necessary unless a security token is required for non-form requests such as AJAX requests. The $securityToken control should be called inside the &lt;head section of the web page.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga63289f4ce5787e316b85c4ef1ddc42ba"></a>
<div class="api">
<div class="prototype">
void
espStylesheet
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a stylesheet link.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">uri</td><td>Stylesheet URI to load. Set to null to get a default set of stylesheets. See $httpLink for a list of possible URI formats.</td>
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1gab137ba67f183a346258867aedd5ffecb"></a>
<div class="api">
<div class="prototype">
void
espTable
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_grid" class="ref">EdiGrid</a> *grid, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a table.</p>
<dl><dt><b>Description</b>:</dt><dd>The table control can display static or dynamic tabular data. The client table control manages sorting by column, dynamic data refreshes, and clicking on rows or cells.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">grid</td><td>Data to display. The data is a grid of data. Use ediCreateGrid or ediReadGrid.</td>
<tr><td class="param">options</td><td>Extra options. See $EspControl for a list of the standard options.</td>
<tr><td class="param">options</td><td>Optional extra options. See $View for a list of the standard options. <ul><li>cell Boolean Set to &quot;true&quot; to make click or edit links apply per cell instead of per row. The default is false. </li><li>columns (Array|Object) The columns list is an object hash of column objects where each column entry is a hash of column options. Column options: <ul><li>align - Will right-align numbers by default </li><li>click - URI to invoke if the cell is clicked </li><li>edit - MOB </li><li>formatter - Function to invoke to format the value to display </li><li>header - Header text for the column </li><li>style - Cell styles </li><li>width - Column width. Can be a string percentage or numeric pixel width </li></ul></li><li>params Object Hash of post parameters to include in the request. This is a hash of key/value items. </li><li>pivot Boolean Pivot the table by swapping rows for columns and vice-versa </li><li>showHeader Boolean Control if column headings are displayed. </li><li>showId Boolean If a column&apos;s option is not provided, the id column is normally hidden. To display, set showId to be &apos;true&apos;. </li><li>sort String Enable row sorting and define the column to sort by. Defaults to the first column. </li><li>sortOrder String Default sort order. Set to &quot;ascending&quot; or &quot;descending&quot;. Defaults to ascending. </li><li>style String CSS class to use for the table. The ultimate style to use for a table cell is the combination of style, styleCells, styleColumns, and style Rows. </li><li>styleCells 2D Array of styles to use for the table body cells. Can also provide an array to the column.style property. </li><li>styleColumns Array of styles to use for the table body columns. Can also use the style option in the columns option. </li><li>styleRows Array of styles to use for the table body rows </li><li>title String Table title. </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga99318656d06ca7b87c39c88fda5839a6"></a>
<div class="api">
<div class="prototype">
void
espTabs
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a tab control.</p>
The tab control can manage a set of panes and will selectively show and hide or invoke the selected panes. If the &quot;click&quot; option is defined, the selected pane will be invoked via a foreground click. If the &quot;remote&quot; option is defined, the selected pane will be invoked via a background click. If the &quot;toggle&quot; option is defined the selected pane will be made visible and other panes will be hidden. If using show/hide tabs, define the initial visible pane to be of the class &quot;-ejs-pane-visible&quot; and define other panes to be &quot;-ejs-pane-hidden&quot;. The control&apos;s client side code will toggle these classes to make panes visible or hidden
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">rec</td><td>Tab data for the control. Tab data is be be a single object where the tab text is the property key and the target to invoke is the property value.</td>
<tr><td class="param">options</td><td>Optional extra options. See $View for a list of the standard options. <ul><li>click Set to &quot;true&quot; to invoke the selected pane via a foreground click. </li><li>remote Set to &quot;true&quot; to invoke the selected pane via a background click. </li><li>toggle Set to &quot;true&quot; to show the selected pane and hide other panes. </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga884c56db7cf61601b19f5cd748415cd5"></a>
<div class="api">
<div class="prototype">
void
espText
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a text input field as part of a form.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">field</td><td>Name for the input text field. This defines the HTML element name and provides the source of the initial value to display. The field should be a property of the form control record. It can be a simple property of the record or it can have multiple parts, such as: field.field.field. If this call is used without a form control record, the actual data value should be supplied via the options.value property. If the cols or rows option is defined, then a textarea HTML element will be used for multiline input.</td>
<tr><td class="param">options</td><td>Optional extra options. See $View for a list of the standard options. <ul><li>cols Number number of text columns </li><li>rows Number number of text rows </li><li>password Boolean The data to display is a password and should be obfuscated. </li></ul></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<a name="group___esp_control_1ga462a61759aaca9af06e66e99f8de323c"></a>
<div class="api">
<div class="prototype">
void
espTree
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_grid" class="ref">EdiGrid</a> *grid, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *options)
</div>
<div class="apiDetail">
<p>Render a tree control.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
</table></dd></dl>
<dl><dt><b>Description</b>:</dt><dd>The tree control can display static or dynamic tree data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">grid</td><td>Optional initial data for the control. The data option may be used with the refresh option to dynamically refresh the data. The tree data is typically an XML document.</td>
<tr><td class="param">options</td><td>Optional extra options. See $View for a list of the standard options.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
<a href="#group___esp_control_1ga46d20e684116990c878ef113b0702972" class="ref">espAlert</a></dd></dl>
</div>
</div>
<h1>EspParse</h1>
<a name="group___esp_parse"></a>
<div class="api">
<div class="prototype">EspParse</div>
<div class="apiDetail">
<p>ESP page parser structure.</p>
<dl><dt>See Also:</dt><dd>
</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">char *</td><td><td>data</td><td>
Input data to parse.
</td>
<tr><td class="param">int</td><td><td>lineNumber</td><td>
Line number for error reporting.
</td>
<tr><td class="param">char *</td><td><td>next</td><td>
Next character in input.
</td>
<tr><td class="param">MprBuf *</td><td><td>token</td><td>
Storage buffer for token.
</td>
</table></dd></dl>
</div>
</div>
<h1>EspReq</h1>
<a name="group___esp_req"></a>
<div class="api">
<div class="prototype">EspReq</div>
<div class="apiDetail">
<p>ESP request.</p>
<dl><dt>See Also:</dt><dd>
</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param"><a class="ref" BBB href="#struct_esp_action">EspAction</a> *</td><td><td>action</td><td>
Action to invoke.
</td>
<tr><td class="param">int</td><td><td>appLoaded</td><td>
App module already probed.
</td>
<tr><td class="param">int</td><td><td>autoFinalize</td><td>
Request is or will be auto-finalized.
</td>
<tr><td class="param">char *</td><td><td>cacheName</td><td>
Base name of intermediate compiled file.
</td>
<tr><td class="param">char *</td><td><td>commandLine</td><td>
Command line for compile/link.
</td>
<tr><td class="param">char *</td><td><td>controllerName</td><td>
Controller name.
</td>
<tr><td class="param">char *</td><td><td>controllerPath</td><td>
Path to controller source.
</td>
<tr><td class="param">char *</td><td><td>entry</td><td>
Module entry point.
</td>
<tr><td class="param">EspRoute *</td><td><td>eroute</td><td>
Extended route info.
</td>
<tr><td class="param"><a class="ref" BBB href="#struct_esp">Esp</a> *</td><td><td>esp</td><td>
Convenient esp reference.
</td>
<tr><td class="param"><a class="ref" BBB href="#struct_mpr_hash" external="mpr.dtags">MprHash</a> *</td><td><td>flash</td><td>
New flash messages.
</td>
<tr><td class="param">int</td><td><td>lastDomID</td><td>
Last generated DOM ID.
</td>
<tr><td class="param"><a class="ref" BBB href="#struct_mpr_hash" external="mpr.dtags">MprHash</a> *</td><td><td>lastFlash</td><td>
Flash messages from the last request.
</td>
<tr><td class="param">char *</td><td><td>module</td><td>
Name of compiled module.
</td>
<tr><td class="param">EdiRec *</td><td><td>record</td><td>
Current data record.
</td>
<tr><td class="param">HttpRoute *</td><td><td>route</td><td>
Route reference.
</td>
<tr><td class="param">EspSession *</td><td><td>session</td><td>
Session data object.
</td>
<tr><td class="param">int</td><td><td>sessionProbed</td><td>
Already probed for session store.
</td>
<tr><td class="param">char *</td><td><td>source</td><td>
Name of ESP source.
</td>
<tr><td class="param">char *</td><td><td>view</td><td>
Path to view.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___esp_req_1ga85a69dfce5ad4415bd484cd9ce81a5cf"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
eReadRecByKey
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)
</div>
<div class="apiDetail">
<p>Read a record identified by the key value.</p>
<dl><dt><b>Description</b>:</dt><dd>Read a record from the given table as identified by the key value.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">key</td><td>Key value of the record to read.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Record instance of EdiRec.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaae88740666af5ee9b21ad39648857db8"></a>
<div class="api">
<div class="prototype">
void
espAddHeader
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Add a header to the transmission using a format string.</p>
<dl><dt><b>Description</b>:</dt><dd>Add a header if it does not already exist.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">key</td><td>Http response header key.</td>
<tr><td class="param">fmt</td><td>Printf style formatted string to use as the header key value.</td>
<tr><td class="param">...</td><td>Arguments for fmt.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code. Returns MPR_ERR_ALREADY_EXISTS if the header already exists.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gad772b64162b7f4eb80ef1a3a1795175d"></a>
<div class="api">
<div class="prototype">
void
espAddHeaderString
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Add a header to the transmission.</p>
<dl><dt><b>Description</b>:</dt><dd>Add a header if it does not already exist.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">key</td><td>Http response header key.</td>
<tr><td class="param">value</td><td>Value to set for the header.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code. Returns MPR_ERR_ALREADY_EXISTS if the header already exists.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaa50588be6fe69e04738fc0276d7afbbb"></a>
<div class="api">
<div class="prototype">
void
espAppendHeader
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Append a transmission header.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the header if it does not already exist. Append with a &quot;, &quot; separator if the header already exists.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">key</td><td>Http response header key.</td>
<tr><td class="param">fmt</td><td>Printf style formatted string to use as the header key value.</td>
<tr><td class="param">...</td><td>Arguments for fmt.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gacb696dcdff91355fc9df37f5c7171a01"></a>
<div class="api">
<div class="prototype">
void
espAppendHeaderString
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Append a transmission header string.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the header if it does not already exist. Append with a &quot;, &quot; separator if the header already exists.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">key</td><td>Http response header key.</td>
<tr><td class="param">value</td><td>Value to set for the header.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gab6aeea9bb5cb500eabf3e1cfd1745f03"></a>
<div class="api">
<div class="prototype">
void
espAutoFinalize
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Auto-finalize transmission of the http request.</p>
<dl><dt><b>Description</b>:</dt><dd>If auto-finalization is enabled via <a class="ref" BBB href="#group___esp_req_1ga54f5ce21966922b0883d1942ccbeae8d">espSetAutoFinalizing</a>, this call will finalize writing Http response data by writing the final chunk trailer if required. If using chunked transfers, a null chunk trailer is required to signify the end of write data. If the request is already finalized, this call does nothing.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gab1683170a07c0b0073ab8c1969680e9a"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espCheckSecurityToken
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Check a security token.</p>
<dl><dt><b>Description</b>:</dt><dd>Check the request security token. If a required security token is defined in the session state, the request must supply the same token with all POST requests. This helps mitigate potential CSRF threats. Security tokens are used to help guard against CSRF threats. If a template web page includes the <a class="ref" BBB href="#group___esp_abbrev_1gab3444f174346e0d8e8d4d3a43d451c5e">securityToken()</a> control, a security token will be added to the meta section of the generated HTML. When a form is posted from this page, the ESP jQuery script will add the security token to the form parameters. This call validates the security token to ensure it matches the security token stored in session state.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>False if the request is a POST request and the security token does not match the session held token. Otherwise return &quot;true&quot;.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga4aa105d2149d85a5abe5c36f527389be"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
espCreateRec
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)
</div>
<div class="apiDetail">
<p>Create a record and initialize field values.</p>
<dl><dt><b>Description</b>:</dt><dd>This will call $ediCreateRec to create a record based on the given table&apos;s schema. It will then call $ediSetFields to update the record with the given data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">data</td><td>Hash of field values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>EdRec instance.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gac142434246bc5558dfe73a78ded7a7f0"></a>
<div class="api">
<div class="prototype">
void
espFinalize
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Finalize transmission of the http request.</p>
<dl><dt><b>Description</b>:</dt><dd>Finalize writing HTTP data by writing the final chunk trailer if required. If using chunked transfers, a null chunk trailer is required to signify the end of write data. If the request is already finalized, this call does nothing.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gadf50b51bf7ab10d828e85be140c005c5"></a>
<div class="api">
<div class="prototype">
void
espFlush
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Flush transmit data.</p>
<dl><dt><b>Description</b>:</dt><dd>This writes any buffered data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga0607326dfa8535e1264dfccba14c3d7f"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#group___mpr_list" class="ref">MprList</a> *
espGetColumns
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_rec" class="ref">EdiRec</a> *rec)
</div>
<div class="apiDetail">
<p>Get a list of column names.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">rec</td><td>Database record. If set to NULL, the current database record defined via $form() is used.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An MprList of column names in the given table. If there is no record defined, an empty list is returned.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga41a42035766ff5d2fd0fd74588e167ea"></a>
<div class="api">
<div class="prototype">
<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *
espGetConn
()
</div>
<div class="apiDetail">
<p>Get the current request connection.</p>
<dl><dt>Returns:</dt><dd>The HttpConn connection object.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga3cb308121f5659d48f58c217959c3800"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1aa6887458d0a070b3665166af590089d8" class="ref">MprOff</a>
espGetContentLength
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the receive body content length.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the length of the receive body content (if any). This is used in servers to get the length of posted data and, in clients, to get the response body length.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the response content data in bytes.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gadf281290e500c98b3c7214c410b32599"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
espGetContentType
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the receive body content type.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the content mime type of the receive body content (if any).</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Mime type of any receive content. Set to NULL if not posted data.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga1c47b7c05e41bc39b9f3426134c1bf7c"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
espGetCookies
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the request cookies.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the cookies defined in the current request.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Return a string containing the cookies sent in the Http header of the last request.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gadb72373974f7f4d05a8dbbdf966c6496"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi" class="ref">Edi</a> *
espGetDatabase
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the current database instance.</p>
<dl><dt><b>Description</b>:</dt><dd>A route may have a default database configured via the EspDb Appweb.conf configuration directive. The database will be opened when the web server initializes and will be shared between all requests using the route.</dd></dl>
<dl><dt>Returns:</dt><dd>Edi EDI database handle.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gae6b27fef4d9ab873b3ff7a3657c0a1f0"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
espGetDir
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the default document root directory for the request route.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A directory path name.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaefe462fb7ee0c6fa6a0c7842b973de3c"></a>
<div class="api">
<div class="prototype">
<a href="#group___esp_route" class="ref">EspRoute</a> *
espGetEspRoute
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the current extended route information.</p>
<dl><dt>Returns:</dt><dd>EspRoute instance.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga4236af8f29a206e18c4b7a86ac32dba6"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
espGetFlashMessage
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *type)
</div>
<div class="apiDetail">
<p>Get a flash message.</p>
<dl><dt><b>Description</b>:</dt><dd>This retrieves a flash message of a specified type. Flash messages are special session state messages that are passed to the next request (only).</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">type</td><td>Type of flash message to retrieve. Possible types include: &quot;error&quot;, &quot;inform&quot;, &quot;warning&quot;, &quot;all&quot;.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaddf870926cbeee2779b687522d5db0aa"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
espGetHeader
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)
</div>
<div class="apiDetail">
<p>Get an rx http header.</p>
<dl><dt><b>Description</b>:</dt><dd>Get a http response header for a given header key.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">key</td><td>Name of the header to retrieve. This should be a lower case header name. For example: &quot;Connection&quot;.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Value associated with the header key or null if the key did not exist in the response.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga8daa40cd83a356ad1b1b940751b1df00"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *
espGetHeaderHash
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the hash table of rx Http headers.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the internal hash table of rx headers.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Hash table. See <a class="ref" BBB href="#struct_mpr_hash" external="mpr.dtags">MprHash</a> for how to access the hash table.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga8b03cbaba01462fb4a7349c9d02fddf3"></a>
<div class="api">
<div class="prototype">
char *
espGetHeaders
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get all the request http headers.</p>
<dl><dt><b>Description</b>:</dt><dd>Get all the rx headers. The returned string formats all the headers in the form: key: value\nkey2: value2\n.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>String containing all the headers. The caller must free this returned string.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga91bd6b5ad25cefe913aa6ebfe43fa928"></a>
<div class="api">
<div class="prototype">
int
espGetIntParam
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *var, int defaultValue)
</div>
<div class="apiDetail">
<p>Get a request pararmeter as an integer.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the value of a named request parameter as an integer. Form variables are defined via www-urlencoded query or post data contained in the request.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">var</td><td>Name of the request parameter to retrieve.</td>
<tr><td class="param">defaultValue</td><td>Default value to return if the variable is not defined. Can be null.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Integer containing the request parameter&apos;s value.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga4c81c8e4e35c7a3001473462ccd3bbf6"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
espGetMethod
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the HTTP method.</p>
<dl><dt><b>Description</b>:</dt><dd>This is a convenience API to return the Http method.</dd></dl>
<dl><dt>Returns:</dt><dd>The HttpConn.rx.method property.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga98e63a9a924ec667a3c1b540e56792d3"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
espGetParam
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *var, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *defaultValue)
</div>
<div class="apiDetail">
<p>Get a request parameter.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the value of a named request parameter. Form variables are defined via www-urlencoded query or post data contained in the request.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">var</td><td>Name of the request parameter to retrieve.</td>
<tr><td class="param">defaultValue</td><td>Default value to return if the variable is not defined. Can be null.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>String containing the request parameter&apos;s value. Caller should not free.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga5bf6214a6875c73c015e7d2b96f1b57a"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *
espGetParams
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the request parameter hash table.</p>
<dl><dt><b>Description</b>:</dt><dd>This call gets the params hash table for the current request. Route tokens, request query data, and www-url encoded form data are all entered into the params table after decoding. Use <a class="ref" BBB href="#group___mpr_hash_1ga28eaf688ae47d09abd9552fe003cedbb" external="mpr.dtags">mprLookupKey</a> to retrieve data from the table.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd><a class="ref" BBB href="#struct_mpr_hash" external="mpr.dtags">MprHash</a> instance containing the request parameters.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaf84aa1df39869744c4e0ac87e99f1a89"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
espGetQueryString
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the request query string.</p>
<dl><dt><b>Description</b>:</dt><dd>Get query string sent with the current request.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>String containing the request query string. Caller should not free.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga400095fc3f1743660baedac7c95ff53c"></a>
<div class="api">
<div class="prototype">
char *
espGetReferrer
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the referring URI.</p>
<dl><dt><b>Description</b>:</dt><dd>This returns the referring URI as described in the HTTP &quot;referer&quot; (yes the HTTP specification does spell it incorrectly) header. If this header is not defined, this routine will return the home URI as returned by $espGetHome.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>String URI back to the referring URI. If no referrer is defined, refers to the home URI.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga72246c1dc89e871ec596ae0959077af2"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi" class="ref">Edi</a> *
espGetRouteDatabase
(<a href="httpBare.html#group___http_route" class="ref">HttpRoute</a> *route)
</div>
<div class="apiDetail">
<p>Get the default database defined on a route.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">route</td><td>HttpRoute object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Database instance object.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga4323100f7ccf0a198b0ee2593749fe5e"></a>
<div class="api">
<div class="prototype">
int
espGetStatus
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the response status.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An integer Http response code. Typically 200 is success.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gad4631deeb02544938b8590806ae8bb8e"></a>
<div class="api">
<div class="prototype">
char *
espGetStatusMessage
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the Http response status message.</p>
<dl><dt><b>Description</b>:</dt><dd>The HTTP status message is supplied on the first line of the HTTP response.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A Http status message.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaa05557bc29a21cff91faeba9d141c6e2"></a>
<div class="api">
<div class="prototype">
char *
espGetTop
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get a relative URI to the top of the application.</p>
<dl><dt><b>Description</b>:</dt><dd>This will return an absolute URI for the top of the application. This will be &quot;/&quot; if there is no application script name. Otherwise, it will return a URI for the script name for the application.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>String Absolute URI to the top of the application.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaedbde7b9b4acc7ab426336c359166348"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *
espGetUploads
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the uploaded files.</p>
<dl><dt><b>Description</b>:</dt><dd>Get the hash table defining the uploaded files. This hash is indexed by the file identifier supplied in the upload form. The hash entries are HttpUploadFile objects.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A hash of HttpUploadFile objects.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaba2676d2009310d3fca8f22a16efbf60"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
espGetUri
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the request URI string.</p>
<dl><dt><b>Description</b>:</dt><dd>This is a convenience API to return the request URI.</dd></dl>
<dl><dt>Returns:</dt><dd>The <a class="ref" BBB href="#group___esp_req_1ga41a42035766ff5d2fd0fd74588e167ea">espGetConn()</a>-&gt;rx-&gt;uri.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gacfd0fe0f0edb952cd670564ac47febc4"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espHasGrid
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Test if a current grid has been defined.</p>
<dl><dt><b>Description</b>:</dt><dd>The current grid is defined via $setRec.</dd></dl>
<dl><dt>Returns:</dt><dd>&quot;True&quot; if a current grid has been defined.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga0f7bf9745f2331aebb05069bba6ba356"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espHasRec
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Test if a current record has been defined and save to the database.</p>
<dl><dt><b>Description</b>:</dt><dd>This call returns &quot;true&quot; if a current record is defined and has been saved to the database with a valid &quot;id&quot; field.</dd></dl>
<dl><dt>Returns:</dt><dd>&quot;True&quot; if a current record with a valid &quot;id&quot; is defined.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gac50e125f397c0dce5072fab8f551cd32"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espIsEof
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Test if the receive input stream is at end-of-file.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>&quot;True&quot; if there is no more receive data to read.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga610467cde893472908e6c25bde472fc4"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espIsFinalized
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Test if a http request is finalized.</p>
<dl><dt><b>Description</b>:</dt><dd>This tests if <a class="ref" BBB href="#group___esp_req_1gac142434246bc5558dfe73a78ded7a7f0">espFinalize</a> or <a class="ref" BBB href="#group___http_tx_1ga279ad49e5163402e2afd6caf478bcc70" external="http.dtags">httpFinalize</a> has been called for a request.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>&quot;True&quot; if the request has been finalized.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gab216150d5432ef9465462e8e69f5f31f"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espIsSecure
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Test if the connection is using SSL and is secure.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>&quot;True&quot; if the connection is using SSL.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga1e9dbe6079a33c74147a3d1f1951b0a6"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
espMakeGrid
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *content)
</div>
<div class="apiDetail">
<p>Make a grid.</p>
<dl><dt><b>Description</b>:</dt><dd>This call makes a free-standing data grid based on the JSON format content string. The record is not saved to the database.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">content</td><td>JSON format content string. The content should be an array of objects where each object is a set of property names and values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An EdiGrid instance.</dd></dl>
<dl><dt><b>Example</b>:</dt><dd>: grid = ediMakeGrid("[ \ <br/>
{ id: &apos;1&apos;, country: &apos;Australia&apos; }, \ <br/>
{ id: &apos;2&apos;, country: &apos;China&apos; }, \ <br/>
]");.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gabd004590a14f92dca3bd5a95810ef3e0"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *
espMakeHash
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Make a hash table container of property values.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine formats the given arguments, parses the result as a JSON string and returns an equivalent hash of property values. The result after formatting should be of the form: hash(&quot;{ key: &apos;value&apos;, key2: &apos;value&apos;, key3: &apos;value&apos; }&quot;);.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">fmt</td><td>Printf style format string.</td>
<tr><td class="param">...</td><td>arguments.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd><a class="ref" BBB href="#struct_mpr_hash" external="mpr.dtags">MprHash</a> instance.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaccf30f4813878e977e4dee0b323a2f4f"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
espMakeRec
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *content)
</div>
<div class="apiDetail">
<p>Make a record.</p>
<dl><dt><b>Description</b>:</dt><dd>This call makes a free-standing data record based on the JSON format content string. The record is not saved to the database.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">content</td><td>JSON format content string. The content should be a set of property names and values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An EdiRec instance.</dd></dl>
<dl><dt><b>Example</b>:</dt><dd>: rec = ediMakeRec(&quot;{ id: 1, title: &apos;Message One&apos;, body: &apos;Line one&apos; }&quot;);.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gacc2fb39132dab5f624a0f026d2e73440"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espMatchParam
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *var, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Match a request parameter with an expected value.</p>
<dl><dt><b>Description</b>:</dt><dd>Compare a request parameter and return &quot;true&quot; if it exists and its value matches.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">var</td><td>Name of the request parameter.</td>
<tr><td class="param">value</td><td>Expected value to match.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>&quot;True&quot; if the value matches.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gad212c90436628352de69b8adda436b5e"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
espReadAllRecs
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)
</div>
<div class="apiDetail">
<p>Read all the records in table from the database.</p>
<dl><dt><b>Description</b>:</dt><dd>This reads a table and returns a grid containing the table data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A grid containing all table rows. Returns NULL if the table cannot be found.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga1bc7aa1ff9481195b79b76e58a5ff66f"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
espReadRec
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)
</div>
<div class="apiDetail">
<p>Read the identified record.</p>
<dl><dt><b>Description</b>:</dt><dd>Read the record identified by the request params(&quot;id&quot;) from the nominated table.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The identified record. Returns NULL if the table or record cannot be found.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga8e8ad5fd82f6979198192b4b63d30cc7"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
espReadRecsWhere
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *operation, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Read matching records.</p>
<dl><dt><b>Description</b>:</dt><dd>This runs a simple query on the database and returns matching records in a grid. The query selects all rows that have a &quot;field&quot; that matches the given &quot;value&quot;.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">fieldName</td><td>Database field name to evaluate.</td>
<tr><td class="param">operation</td><td>Comparison operation. Set to &quot;==&quot;, &quot;!=&quot;, &quot;&lt;&quot;, &quot;&gt;&quot;, &quot;&lt;=&quot; or &quot;&gt;=&quot;.</td>
<tr><td class="param">value</td><td>Data value to compare with the field values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A grid containing all matching records. Returns NULL if no matching records.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga7776f14b394d8bdf6817cb7276960861"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
espReadRecWhere
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *operation, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Read one record.</p>
<dl><dt><b>Description</b>:</dt><dd>This runs a simple query on the database and selects the first matching record. The query selects a row that has a &quot;field&quot; that matches the given &quot;value&quot;.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">fieldName</td><td>Database field name to evaluate.</td>
<tr><td class="param">operation</td><td>Comparison operation. Set to &quot;==&quot;, &quot;!=&quot;, &quot;&lt;&quot;, &quot;&gt;&quot;, &quot;&lt;=&quot; or &quot;&gt;=&quot;.</td>
<tr><td class="param">value</td><td>Data value to compare with the field values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>First matching record. Returns NULL if no matching records.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga64f9ab9cb2c3c8b0f7f580cb22e45ce5"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
espReceive
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, char *buf, <a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Read receive body content.</p>
<dl><dt><b>Description</b>:</dt><dd>Read body content from the client.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">buf</td><td>Buffer to accept content data.</td>
<tr><td class="param">size</td><td>Size of the buffer.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of bytes read into the buffer.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga2b1dc5b4a688fc1062395d6420e85ef9"></a>
<div class="api">
<div class="prototype">
void
espRedirect
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, int status, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *target)
</div>
<div class="apiDetail">
<p>Redirect the client.</p>
<dl><dt><b>Description</b>:</dt><dd>Redirect the client to a new uri.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">status</td><td>Http status code to send with the response.</td>
<tr><td class="param">target</td><td>New target uri for the client.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaaf5114ed096b363628229ea0ae0f94c3"></a>
<div class="api">
<div class="prototype">
void
espRedirectBack
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Redirect the client back to the referrer.</p>
<dl><dt><b>Description</b>:</dt><dd>Redirect the client to the referring URI.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga8743524e4c8aff73135e0ad6f2d44d7c"></a>
<div class="api">
<div class="prototype">
int
espRemoveHeader
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)
</div>
<div class="apiDetail">
<p>Remove a header from the transmission.</p>
<dl><dt><b>Description</b>:</dt><dd>Remove a header if present.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">key</td><td>Http response header key.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Zero if successful, otherwise a negative MPR error code.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaa833750f16375fa479d0fcc22dfc2169"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
espRender
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Render a formatted string.</p>
<dl><dt><b>Description</b>:</dt><dd>Render a formatted string of data into packets to the client. Data packets will be created as required to store the write data. This call may block waiting for data to drain to the client.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">fmt</td><td>Printf style formatted string.</td>
<tr><td class="param">...</td><td>Arguments for fmt.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gae1fa564a4b89afb64df3d9681973e1bf"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
espRenderBlock
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *buf, <a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a> size)
</div>
<div class="apiDetail">
<p>Render a block of data to the client.</p>
<dl><dt><b>Description</b>:</dt><dd>Render a block of data to the client. Data packets will be created as required to store the write data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">buf</td><td>Buffer containing the write data.</td>
<tr><td class="param">size</td><td>Size of the data in buf.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga94594750521ce6621691dcec43a2d670"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
espRenderCached
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Render cached content.</p>
<dl><dt><b>Description</b>:</dt><dd>Render the saved, cached response from a prior request to this URI. This is useful if the caching mode has been set to &quot;manual&quot;.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaf5951884b79343ba98eb53b8c2d28a4f"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
espRenderError
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, int status, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Render an error message back to the client and finalize the request.</p>
The output is Html escaped for security
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">status</td><td>Http status code.</td>
<tr><td class="param">fmt</td><td>Printf style message format.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga543bb9b12ee3f064a730a47164feac0d"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
espRenderFile
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path)
</div>
<div class="apiDetail">
<p>Render the contents of a file back to the client.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">path</td><td>File path name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaf3bc7904c49db358937584129928579f"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
espRenderParam
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name)
</div>
<div class="apiDetail">
<p>Render the value of a request parameter to the client.</p>
<dl><dt><b>Description</b>:</dt><dd>This writes the value of a request parameter after HTML escaping its value.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">name</td><td>Form variable name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga743eec6372aeb305a939bc9b0026281e"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
espRenderSafeString
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s)
</div>
<div class="apiDetail">
<p>Render a safe string of data to the client.</p>
<dl><dt><b>Description</b>:</dt><dd>HTML escape a string and then write the string of data to the client. Data packets will be created as required to store the write data. This call may block waiting for the data to the client to drain.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">s</td><td>String containing the data to write.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga2bc125ce68d2a8a8992228f0232c9b6f"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a7d08ccc1e981eb4d5a238641ac4ccfc1" class="ref">ssize</a>
espRenderString
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *s)
</div>
<div class="apiDetail">
<p>Render a string of data to the client.</p>
<dl><dt><b>Description</b>:</dt><dd>Render a string of data to the client. Data packets will be created as required to store the write data. This call may block waiting for data to drain to the client.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">s</td><td>String containing the data to write.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga492e5353599306baaf769d1b8636260e"></a>
<div class="api">
<div class="prototype">
void
espRenderView
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name)
</div>
<div class="apiDetail">
<p>Render a view template to the client.</p>
<dl><dt><b>Description</b>:</dt><dd>Actions are C procedures that are invoked when specific URIs are routed to the controller/action pair.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">name</td><td>view name.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga54f5ce21966922b0883d1942ccbeae8d"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espSetAutoFinalizing
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> on)
</div>
<div class="apiDetail">
<p>Enable auto-finalizing for this request.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">on</td><td>Set to &quot;true&quot; to enable auto-finalizing.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>&quot;True&quot; if auto-finalizing was enabled prior to this call.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga6ea189a01c1c680e3f5d77396b3bd3a8"></a>
<div class="api">
<div class="prototype">
void
espSetConn
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Set the current request connection.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>The HttpConn connection object to define.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gae9b3e3ddb3bf784d77cba59045dfeb81"></a>
<div class="api">
<div class="prototype">
void
espSetContentLength
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1aa6887458d0a070b3665166af590089d8" class="ref">MprOff</a> length)
</div>
<div class="apiDetail">
<p>Define a content length header in the transmission.</p>
<dl><dt><b>Description</b>:</dt><dd>This will define a &quot;Content-Length: NNN&quot; request header.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">length</td><td>Numeric value for the content length header.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga7bb7c062a2fb64c1756c93dc79481c2c"></a>
<div class="api">
<div class="prototype">
void
espSetContentType
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *mimeType)
</div>
<div class="apiDetail">
<p>Set the transmission (response) content mime type.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the mime type Http header in the transmission.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">mimeType</td><td>Mime type string.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gab3fa02a25383898985307c8c12ab9147"></a>
<div class="api">
<div class="prototype">
void
espSetCookie
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *domain, <a href="mprBare.html#group___mpr_time" class="ref">MprTime</a> lifespan, <a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a> isSecure)
</div>
<div class="apiDetail">
<p>Set a cookie in the transmission.</p>
<dl><dt><b>Description</b>:</dt><dd>Define a cookie to send in the transmission Http header.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">name</td><td>Cookie name.</td>
<tr><td class="param">value</td><td>Cookie value.</td>
<tr><td class="param">path</td><td>URI path to which the cookie applies.</td>
<tr><td class="param">domain</td><td>String Domain in which the cookie applies. Must have 2-3 &quot;.&quot; and begin with a leading &quot;.&quot;. For example: domain: .example.com. Some browsers will accept cookies without the initial &quot;.&quot;, but the spec: (RFC 2109) requires it.</td>
<tr><td class="param">lifespan</td><td>Duration for the cookie to persist in msec.</td>
<tr><td class="param">isSecure</td><td>Set to &quot;true&quot; if the cookie only applies for SSL based connections.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga37e670dbf583aacb9bd662934ccf34f8"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
espSetField
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Update a record field without writing to the database.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine updates the record object with the given value. The record will not be written to the database. To write to the database, use $writeRec.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Record to update.</td>
<tr><td class="param">fieldName</td><td>Record field name to update.</td>
<tr><td class="param">value</td><td>Value to update.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The record instance if successful, otherwise NULL.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaed1f88027c9c3bd4bcac7f8392e91e87"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
espSetFields
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)
</div>
<div class="apiDetail">
<p>Update record fields without writing to the database.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine updates the record object with the given values. The "data&apos; argument supplies a hash of fieldNames and values. The data hash may come from the request $params() or it can be manually created via <a class="ref" BBB href="#group___edi_1gac8ba9b4a0cdc2d2f30de7d915a4c51c1">ediMakeHash</a> to convert a JSON string into an options hash. For example: updateFields(rec, hash(&quot;{ name: &apos;%s&apos;, address: &apos;%s&apos; }&quot;, name, address)) The record will not be written to the database. To write to the database, use $ediWriteRec.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Record to update.</td>
<tr><td class="param">data</td><td>Hash of field names and values to use for the update.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The record instance if successful, otherwise NULL.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaad505657a6cb461d6645e1ee47740926"></a>
<div class="api">
<div class="prototype">
void
espSetFlash
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *kind, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Send a flash message.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">kind</td><td>Kind of flash message.</td>
<tr><td class="param">fmt</td><td>Printf style formatted string to use as the message.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gac9ed013a63fe33aa9262a26bfa6ff317"></a>
<div class="api">
<div class="prototype">
void
espSetFlashv
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *kind, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, va_list args)
</div>
<div class="apiDetail">
<p>Send a flash message.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">kind</td><td>Kind of flash message.</td>
<tr><td class="param">fmt</td><td>Printf style formatted string to use as the message.</td>
<tr><td class="param">args</td><td>Varargs style list.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga6e09b2658067694a86d1535bf56aebae"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
espSetGrid
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_grid" class="ref">EdiGrid</a> *grid)
</div>
<div class="apiDetail">
<p>Set the current database grid.</p>
<dl><dt>Returns:</dt><dd>The grid instance. This permits chaining.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga66c536436b8a99612b1ce571c315b39b"></a>
<div class="api">
<div class="prototype">
void
espSetHeader
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fmt, ...)
</div>
<div class="apiDetail">
<p>Set a transmission header.</p>
<dl><dt><b>Description</b>:</dt><dd>Set a Http header to send with the request. If the header already exists, its value is overwritten.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">key</td><td>Http response header key.</td>
<tr><td class="param">fmt</td><td>Printf style formatted string to use as the header key value.</td>
<tr><td class="param">...</td><td>Arguments for fmt.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gafcb200922fb98165c0485348ea640d01"></a>
<div class="api">
<div class="prototype">
void
espSetHeaderString
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Set a simple key/value transmission header.</p>
<dl><dt><b>Description</b>:</dt><dd>Set a Http header to send with the request. If the header already exists, its value is overwritten.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">key</td><td>Http response header key.</td>
<tr><td class="param">value</td><td>String value for the key.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga3d21ff0ee522ae25885378e8cb55d1e9"></a>
<div class="api">
<div class="prototype">
void
espSetIntParam
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *var, int value)
</div>
<div class="apiDetail">
<p>Set an integer request parameter value.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the value of a named request parameter to an integer value. Form variables are defined via www-urlencoded query or post data contained in the request.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">var</td><td>Name of the request parameter to set.</td>
<tr><td class="param">value</td><td>Value to set.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga491fdeaf71f15fb950d54245b7de865b"></a>
<div class="api">
<div class="prototype">
void
espSetParam
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *var, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Set a request parameter value.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the value of a named request parameter to a string value. Form variables are defined via www-urlencoded query or post data contained in the request.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">var</td><td>Name of the request parameter to set.</td>
<tr><td class="param">value</td><td>Value to set.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gaab0d7914afa7352d5708048c021f1ee1"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
espSetRec
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_rec" class="ref">EdiRec</a> *rec)
</div>
<div class="apiDetail">
<p>Set the current database record.</p>
<dl><dt><b>Description</b>:</dt><dd>The current record is used to supply data to various abbreviated controls, such as: <a class="ref" BBB href="#group___esp_abbrev_1ga3e4c53a1a64bfb4a120fd7864d11ce59">text()</a>, <a class="ref" BBB href="#group___esp_abbrev_1gaa3f886ac8ecb0b4f2f6decb1da1f5c82">input()</a>, checkbox and <a class="ref" BBB href="#group___esp_abbrev_1gae43638b69d2bf1bf6cf037459aad2ce2">dropdown()</a></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">rec</td><td>Record object to define as the current record.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The grid instance. This permits chaining.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga3151f73107b752661efecbacf9011894"></a>
<div class="api">
<div class="prototype">
void
espSetStatus
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, int status)
</div>
<div class="apiDetail">
<p>Set a Http response status.</p>
<dl><dt><b>Description</b>:</dt><dd>Set the Http response status for the request. This defaults to 200 (OK).</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">status</td><td>Http status code.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga4ed2f95cccb206fc9069c0a77c5c1e62"></a>
<div class="api">
<div class="prototype">
void
espShowRequest
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Show request details.</p>
<dl><dt><b>Description</b>:</dt><dd>This e request details back to the client. This is useful as a debugging tool.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga2d10fdd68ab00d306d344c815f7655e7"></a>
<div class="api">
<div class="prototype">
void
espUpdateCache
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *data, int lifesecs)
</div>
<div class="apiDetail">
<p>Update the cached content for a request.</p>
<dl><dt><b>Description</b>:</dt><dd>Save the given content for future requests. This is useful if the caching mode has been set to &quot;manual&quot;.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">uri</td><td>Request URI to cache for.</td>
<tr><td class="param">data</td><td>Data to cache.</td>
<tr><td class="param">lifesecs</td><td>Time in seconds to cache the data.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga1dda75c993af2b593ff9a14b37db9532"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espUpdateField
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Write a value to a database table field.</p>
<dl><dt><b>Description</b>:</dt><dd>Update the value of a table field in the selected table row. Note: validations are not run.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">key</td><td>Key value for the table row to update.</td>
<tr><td class="param">fieldName</td><td>Column name to update.</td>
<tr><td class="param">value</td><td>Value to write to the database field.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>&quot;true&quot; if the field can be successfully written.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1gab39fd8b2a794223bfbe46e06b1498264"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espUpdateFields
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *data)
</div>
<div class="apiDetail">
<p>Write field values to a database row.</p>
<dl><dt><b>Description</b>:</dt><dd>This routine updates the current record with the given data and then saves the record to the database. The "data&apos; argument supplies a hash of fieldNames and values. The data hash may come from the request $params() or it can be manually created via <a class="ref" BBB href="#group___edi_1gac8ba9b4a0cdc2d2f30de7d915a4c51c1">ediMakeHash</a> to convert a JSON string into an options hash. For example: ediWriteFields(rec, <a class="ref" BBB href="#group___esp_abbrev_1ga3c8e01edebd0020f20411085635cca69">params()</a>); The record runs field validations before saving to the database.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">data</td><td>Hash of field names and values to use for the update.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>&quot;true&quot; if the field can be successfully written. Returns false if field validations fail.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga585c648e2d4b3b6183bf22cc976b7d4b"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espUpdateRec
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="#group___edi_rec" class="ref">EdiRec</a> *rec)
</div>
<div class="apiDetail">
<p>Write a record to the database.</p>
<dl><dt><b>Description</b>:</dt><dd>The record will be saved to the database after running any field validations. If any field validations fail to pass, the record will not be written and error details can be retrieved via $ediGetRecErrors. If the record is a new record and the &quot;id&quot; column is EDI_AUTO_INC, then the &quot;id&quot; will be assigned prior to saving the record.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">rec</td><td>Record to write to the database.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>&quot;true&quot; if the record can be successfully written.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga47475da9d7a9da33d0d07cd2a8211b8d"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
espUri
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *target)
</div>
<div class="apiDetail">
<p>Create a URI.</p>
<dl><dt><b>Description</b>:</dt><dd>Create a URI link by expansions tokens based on the current request and route state. The target parameter may contain partial or complete URI information. The missing parts are supplied using the current request and route tables. The resulting URI is a normalized, server-local URI (that begins with &quot;/&quot;). The URI will include any defined route prefix, but will not include scheme, host or port components.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">target</td><td>The URI target. The target parameter can be a URI string or JSON style set of options. The target will have any embedded &quot;{tokens}&quot; expanded by using token values from the request parameters. If the target has an absolute URI path, that path is used directly after tokenization. If the target begins with &quot;~&quot;, that character will be replaced with the route prefix. This is a very convenient way to create application top-level relative links. <br/><br/>
If the target is a string that begins with &quot;{AT}&quot; it will be interpreted as a controller/action pair of the form &quot;{AT}Controller/action&quot;. If the &quot;controller/&quot; portion is absent, the current controller is used. If the action component is missing, the &quot;list&quot; action is used. A bare &quot;{AT}&quot; refers to the &quot;list&quot; action of the current controller. <br/><br/>
If the target starts with &quot;{&quot; it is interpreted as being a JSON style set of options that describe the link. If the target is a relative URI path, it is appended to the current request URI path. <br/><br/>
If the target is a JSON style of options, it can specify the URI components: scheme, host, port, path, reference and query. If these component properties are supplied, these will be combined to create a URI. <br/><br/>
If the target specifies either a controller/action or a JSON set of options, The URI will be created according to the route URI template. The template may be explicitly specified via a &quot;route&quot; target property. Otherwise, if an &quot;action&quot; property is specified, the route of the same name will be used. If these don&apos;t result in a usable route, the &quot;default&quot; route will be used. <br/><br/>
These are the properties supported in a JSON style &quot;{ ... }&quot; target: <ul><li>scheme String URI scheme portion </li><li>host String URI host portion </li><li>port Number URI port number </li><li>path String URI path portion </li><li>reference String URI path reference. Does not include &quot;#&quot; </li><li>query String URI query parameters. Does not include &quot;?&quot; </li><li>controller String Controller name if using a Controller-based route. This can also be specified via the action option. </li><li>action String Action to invoke. This can be a URI string or a Controller action of the form {AT}Controller/action. </li><li>route String Route name to use for the URI template </li></ul></td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A normalized, server-local Uri string.</dd></dl>
<dl><dt><b>Example</b>:</dt><dd>EspUri(conn, &quot;http://example.com/index.html&quot;, 0); <br/>
espUri(conn, &quot;/path/to/index.html&quot;, 0); <br/>
espUri(conn, &quot;../images/splash.png&quot;, 0); <br/>
espUri(conn, &quot;~/static/images/splash.png&quot;, 0); <br/>
espUri(conn, &quot;${app}/static/images/splash.png&quot;, 0); <br/>
espUri(conn, &quot;@controller/checkout&quot;, 0); <br/>
espUri(conn, &quot;@controller/&quot;) <br/>
espUri(conn, &quot;@init&quot;) <br/>
espUri(conn, &quot;@&quot;) <br/>
espUri(conn, &quot;{ action: &apos;@post/create&apos; }&quot;, 0); <br/>
espUri(conn, &quot;{ action: &apos;checkout&apos; }&quot;, 0); <br/>
espUri(conn, &quot;{ action: &apos;logout&apos;, controller: &apos;admin&apos; }&quot;, 0); <br/>
espUri(conn, &quot;{ action: &apos;admin/logout&apos;&quot;, 0); <br/>
espUri(conn, &quot;{ product: &apos;candy&apos;, quantity: &apos;10&apos;, template: &apos;/cart/${product}/${quantity}&apos; }&quot;, 0); <br/>
espUri(conn, &quot;{ route: &apos;~/STAR/edit&apos;, action: &apos;checkout&apos;, id: &apos;99&apos; }&quot;, 0); <br/>
espUri(conn, &quot;{ template: &apos;~/static/images/${theme}/background.jpg&apos;, theme: &apos;blue&apos; }&quot;, 0);.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga6cb98a81fac3b68ef772a6cc7a37a156"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
getMethod
()
</div>
<div class="apiDetail">
<p>Get the HTTP method.</p>
<dl><dt><b>Description</b>:</dt><dd>This is a convenience API to return the Http method.</dd></dl>
<dl><dt>Returns:</dt><dd>The HttpConn.rx.method property.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<h1>EspRoute</h1>
<a name="group___esp_route"></a>
<div class="api">
<div class="prototype">EspRoute</div>
<div class="apiDetail">
<p>EspRoute extended route configuration.</p>
<dl><dt>See Also:</dt><dd>
</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">char *</td><td><td>appModuleName</td><td>
App module name when compiled flat.
</td>
<tr><td class="param">char *</td><td><td>appModulePath</td><td>
App module path when compiled flat.
</td>
<tr><td class="param">char *</td><td><td>cacheDir</td><td>
Directory for cached compiled controllers and views.
</td>
<tr><td class="param">char *</td><td><td>compile</td><td>
Compile template.
</td>
<tr><td class="param">EspProc</td><td><td>controllerBase</td><td>
Initialize base for a controller.
</td>
<tr><td class="param">char *</td><td><td>controllersDir</td><td>
Directory for controllers.
</td>
<tr><td class="param">char *</td><td><td>dbDir</td><td>
Directory for databases.
</td>
<tr><td class="param">Edi *</td><td><td>edi</td><td>
Default database for this route.
</td>
<tr><td class="param">MprList *</td><td><td>env</td><td>
Environment for compiler.
</td>
<tr><td class="param">int</td><td><td>keepSource</td><td>
Preserve generated source.
</td>
<tr><td class="param">char *</td><td><td>layoutsDir</td><td>
Directory for layouts.
</td>
<tr><td class="param">MprTime</td><td><td>lifespan</td><td>
Default cache lifespan.
</td>
<tr><td class="param">char *</td><td><td>link</td><td>
Link template.
</td>
<tr><td class="param">HttpRoute *</td><td><td>route</td><td>
Back link to the owning route.
</td>
<tr><td class="param">char *</td><td><td>searchPath</td><td>
Search path to use when locating compiler/linker.
</td>
<tr><td class="param">int</td><td><td>showErrors</td><td>
Send server errors back to client.
</td>
<tr><td class="param">char *</td><td><td>staticDir</td><td>
Directory for static web content.
</td>
<tr><td class="param">int</td><td><td>update</td><td>
Auto-update modified ESP source.
</td>
<tr><td class="param">char *</td><td><td>viewsDir</td><td>
Directory for views.
</td>
</table></dd></dl>
</div>
</div>
<a name="group___esp_route_1gac9c9e0843eba723790fa16c8fd508a8b"></a>
<div class="api">
<div class="prototype">
char *
espBuildScript
(<a href="httpBare.html#group___http_route" class="ref">HttpRoute</a> *route, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *page, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *cacheName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *layout, char **err)
</div>
<div class="apiDetail">
<p>Convert an ESP web page into compilable C code.</p>
<dl><dt><b>Description</b>:</dt><dd>This parses an ESP web page into an equivalent C source view.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">route</td><td>EspRoute object.</td>
<tr><td class="param">page</td><td>ESP web page script.</td>
<tr><td class="param">path</td><td>Pathname for the ESP web page. This is used to process include directives which are resolved relative to this path.</td>
<tr><td class="param">cacheName</td><td>MD5 cache name. Not a full path.</td>
<tr><td class="param">layout</td><td>Default layout page.</td>
<tr><td class="param">err</td><td>Output parameter to hold any relevant error message.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>C language code string for the web page.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_route_1ga01d07d3db11f99c0d1b93b068ec56c67"></a>
<div class="api">
<div class="prototype">
int
espCache
(<a href="httpBare.html#group___http_route" class="ref">HttpRoute</a> *route, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *uri, int lifesecs, int flags)
</div>
<div class="apiDetail">
<p>Add caching for response content.</p>
<dl><dt><b>Description</b>:</dt><dd>This call configures caching for request responses. Caching may be used for any HTTP method, though typically it is most useful for state-less GET requests. Output data may be uniquely cached for requests with different request parameters (query, post and route parameters). <br/><br/>
When server-side caching is requested and manual-mode is not enabled, the request response will be automatically cached. Subsequent client requests will revalidate the cached content with the server. If the server-side cached content has not expired, a HTTP Not-Modified (304) response will be sent and the client will use its client-side cached content. This results in a very fast transaction with the client as no response data is sent. Server-side caching will cache both the response headers and content. <br/><br/>
If manual server-side caching is requested, the response will be automatically cached, but subsequent requests will require the handler to explicitly send cached content by calling $httpWriteCached. <br/><br/>
If client-side caching is requested, a &quot;Cache-Control&quot; Http header will be sent to the client with the caching &quot;max-age&quot; set to the lifesecs argument value. This causes the client to serve client-cached content and to not contact the server at all until the max-age expires. Alternatively, you can use $httpSetHeader to explicitly set a "Cache-Control header. For your reference, here are some keywords that can be used in the Cache-Control Http header. <br/><br/>
&quot;max-age&quot; Max time in seconds the resource is considered fresh. &quot;s-maxage&quot; Max time in seconds the resource is considered fresh from a shared cache. &quot;public&quot; marks authenticated responses as cacheable. &quot;private&quot; shared caches may not store the response. &quot;no-cache&quot; cache must re-submit request for validation before using cached copy. &quot;no-store&quot; response may not be stored in a cache. &quot;must-revalidate&quot; forces clients to revalidate the request with the server. &quot;proxy-revalidate&quot; similar to must-revalidate except only for proxy caches. <br/><br/>
Use client-side caching for static content that will rarely change or for content for which using &quot;reload&quot; in the browser is an adequate solution to force a refresh. Use manual server-side caching for situations where you need to explicitly control when and how cached data is returned to the client. For most other situations, use server-side caching.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">route</td><td>HttpRoute object.</td>
<tr><td class="param">uri</td><td>URI to cache. If the URI is set to &quot;*&quot; all URIs for that action are uniquely cached. If the request has POST data, the URI may include such post data in a sorted query format. E.g. {uri: /buy?item=scarf&amp;quantity=1}.</td>
<tr><td class="param">lifesecs</td><td>Lifespan of cache items in seconds. If not set to positive integer, the lifesecs will default to the route lifespan.</td>
<tr><td class="param">flags</td><td>Cache control flags. Select ESP_CACHE_MANUAL to enable manual mode. In manual mode, cached content will not be automatically sent. Use $httpWriteCached in the request handler to write previously cached content. <br/><br/>
Select ESP_CACHE_CLIENT to enable client-side caching. In this mode a &quot;Cache-Control&quot; Http header will be sent to the client with the caching &quot;max-age&quot;. WARNING: the client will not send any request for this URI until the max-age timeout has expired. <br/><br/>
Select HTTP_CACHE_RESET to first reset existing caching configuration for this route. <br/><br/>
Select HTTP_CACHE_COMBINED, HTTP_CACHE_ONLY or HTTP_CACHE_UNIQUE to define the server-side caching mode. Only one of these three mode flags should be specified. <br/><br/>
If the HTTP_CACHE_COMBINED flag is set, the request params (query, post data and route parameters) will be ignored and all request for a given URI path will cache to the same cache record. <br/><br/>
Select HTTP_CACHE_UNIQUE to uniquely cache requests with different request parameters. The URIs specified in $uris should not contain any request parameters. <br/><br/>
Select HTTP_CACHE_ONLY to cache only the exact URI with parameters specified in $uris. The parameters must be in sorted www-urlencoded format. For example: /example.esp?hobby=sailing&amp;name=john.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A count of the bytes actually written.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_route_1ga3b649e2be364263d078bb29ae3cbbb0a"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espCompile
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *source, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *module, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *cacheName, int isView)
</div>
<div class="apiDetail">
<p>Compile a view or controller.</p>
<dl><dt><b>Description</b>:</dt><dd>This compiles ESP controllers and views into loadable, cached modules.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">source</td><td>ESP source file name.</td>
<tr><td class="param">module</td><td>Output module file name.</td>
<tr><td class="param">cacheName</td><td>MD5 cache name. Not a full path.</td>
<tr><td class="param">isView</td><td>Set to &quot;true&quot; if the source is a view.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>&quot;True&quot; if the compilation is successful. Errors are logged and sent back to the client if EspRoute.showErrors is true.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_route_1ga321abe89cc91246b2a44f40493988670"></a>
<div class="api">
<div class="prototype">
void
espDefineAction
(<a href="httpBare.html#group___http_route" class="ref">HttpRoute</a> *route, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *targetKey, void *actionProc)
</div>
<div class="apiDetail">
<p>Define an action.</p>
<dl><dt><b>Description</b>:</dt><dd>Actions are C procedures that are invoked when specific URIs are routed to the controller/action pair.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">route</td><td>Route object.</td>
<tr><td class="param">targetKey</td><td>Target key used to select the action in a HttpRoute target. This is typically a URI prefix.</td>
<tr><td class="param">actionProc</td><td>EspProc callback procedure to invoke when the action is requested.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_route_1gae250d071bb458546c8ed5fad3aba5e84"></a>
<div class="api">
<div class="prototype">
void
espDefineBase
(<a href="httpBare.html#group___http_route" class="ref">HttpRoute</a> *route, <a href="#esp_8h_1aa0c56d9f50902eb9cf16889d3d95c129" class="ref">EspProc</a> baseProc)
</div>
<div class="apiDetail">
<p>Define a base function to invoke for all controller actions.</p>
<dl><dt><b>Description</b>:</dt><dd>A base function can be defined that will be called before calling any controller action. This emulates a super class constructor.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">route</td><td>Route object.</td>
<tr><td class="param">baseProc</td><td>Function to call just prior to invoking a controller action.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_route_1gab7ebccfe31eb1e07f3f40db700d18bd9"></a>
<div class="api">
<div class="prototype">
void
espDefineView
(<a href="httpBare.html#group___http_route" class="ref">HttpRoute</a> *route, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *path, void *viewProc)
</div>
<div class="apiDetail">
<p>Define a view.</p>
<dl><dt><b>Description</b>:</dt><dd>Views are ESP web pages that are executed to return presentation data back to the client.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">route</td><td>Http route object.</td>
<tr><td class="param">path</td><td>Path to the ESP view source code.</td>
<tr><td class="param">viewProc</td><td>EspViewPrococ callback procedure to invoke when the view is requested.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_route_1ga680226fbc5c0a870ff91eef7d13ac4c8"></a>
<div class="api">
<div class="prototype">
char *
espExpandCommand
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *command, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *source, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *module)
</div>
<div class="apiDetail">
<p>Expand a compile or link command template.</p>
<dl><dt><b>Description</b>:</dt><dd>This expands a command template and replaces &quot;${tokens}&quot; with their equivalent value. The supported tokens are: <ul><li>ARCH - Build architecture (i386, x86_64) </li><li>CC - Compiler pathname </li><li>DEBUG - Compiler debug options (-g, -Zi, -Od) </li><li>INC - Include directory (out/inc) </li><li>LIB - Library directory (out/lib, out/bin) </li><li>LIBS - Required libraries directory (mod_esp, libappweb) </li><li>OBJ - Name of compiled source (out/lib/view-MD5.o) </li><li>OUT - Output module (view_MD5.dylib) </li><li>SHLIB - Shared library extension (.lib, .so) </li><li>SHOBJ - Shared object extension (.dll, .so) </li><li>SRC - Path to source code for view or controller (already templated) </li><li>TMP - System temporary directory </li><li>WINSDK - Path to the Windows SDK </li><li>VS - Path to Visual Studio </li></ul></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">command</td><td>Http connection object.</td>
<tr><td class="param">source</td><td>ESP web page source pathname.</td>
<tr><td class="param">module</td><td>Output module pathname.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An expanded command line.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<h1>EspSession</h1>
<a name="group___esp_session"></a>
<div class="api">
<div class="prototype">EspSession</div>
<div class="apiDetail">
<p>ESP session state object.</p>
<dl><dt>See Also:</dt><dd>
</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">MprCache *</td><td><td>cache</td><td>
Cache store reference.
</td>
<tr><td class="param">char *</td><td><td>id</td><td>
Session ID key.
</td>
<tr><td class="param">MprTime</td><td><td>lifespan</td><td>
Session inactivity timeout (msecs).
</td>
</table></dd></dl>
</div>
</div>
<a name="group___esp_session_1ga7d2c9558796acec2501b7d31dfc877b9"></a>
<div class="api">
<div class="prototype">
<a href="#group___esp_session" class="ref">EspSession</a> *
espAllocSession
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *id, <a href="mprBare.html#group___mpr_time" class="ref">MprTime</a> lifespan)
</div>
<div class="apiDetail">
<p>Allocate a new session state object.</p>
<dl><dt><b>Description</b>:</dt><dd></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">id</td><td>Unique session state ID.</td>
<tr><td class="param">lifespan</td><td>Session lifespan in ticks.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A session state object.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_session_1ga11e5e8371651e92dae33c1d778265e77"></a>
<div class="api">
<div class="prototype">
<a href="#group___esp_session" class="ref">EspSession</a> *
espCreateSession
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Create a session object.</p>
<dl><dt><b>Description</b>:</dt><dd>This call creates a session object if one does not already exist. Session state stores persist across individual HTTP requests.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A session state object.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_session_1gab325d1d70bce4551a89fd7f0d1208b07"></a>
<div class="api">
<div class="prototype">
void
espDestroySession
(<a href="#group___esp_session" class="ref">EspSession</a> *sp)
</div>
<div class="apiDetail">
<p>Destroy a session state object.</p>
<dl><dt><b>Description</b>:</dt><dd></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">sp</td><td>Session state object allocated with <a class="ref" BBB href="#group___esp_session_1ga7d2c9558796acec2501b7d31dfc877b9">espAllocSession</a></td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_session_1ga4a615da785dba2c514e3237f37c92338"></a>
<div class="api">
<div class="prototype">
<a href="#group___esp_session" class="ref">EspSession</a> *
espGetSession
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, int create)
</div>
<div class="apiDetail">
<p>Get a session state object.</p>
<dl><dt><b>Description</b>:</dt><dd></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">create</td><td>Set to &quot;true&quot; to create a session state object if one does not already exist for this client.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A session state object.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_session_1ga74599c6792fca6d518dc85ea51fe12ab"></a>
<div class="api">
<div class="prototype">
char *
espGetSessionID
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the session ID.</p>
<dl><dt><b>Description</b>:</dt><dd></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The session ID string.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_session_1gac081825cc4af1199f77b638e659ab32d"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *
espGetSessionObj
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)
</div>
<div class="apiDetail">
<p>Get an object from the session state store.</p>
<dl><dt><b>Description</b>:</dt><dd>Retrieve an object from the session state store by deserializing all properties.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">key</td><td>Session state key.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_session_1ga60a5effb2a9ef53fdb02dbe865bf6093"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
espGetSessionVar
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *defaultValue)
</div>
<div class="apiDetail">
<p>Get a session state variable.</p>
<dl><dt><b>Description</b>:</dt><dd></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">name</td><td>Variable name to get.</td>
<tr><td class="param">defaultValue</td><td>If the variable does not exist, return the defaultValue.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The variable value or defaultValue if it does not exist.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_session_1ga01ef5e61df606729516e7955f5140704"></a>
<div class="api">
<div class="prototype">
int
espSetSessionObj
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key, <a href="mprBare.html#struct_mpr_hash" class="ref">MprHash</a> *value)
</div>
<div class="apiDetail">
<p>Set an object into the session state store.</p>
<dl><dt><b>Description</b>:</dt><dd>Store an object in the session state store by serializing all properties.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">key</td><td>Session state key.</td>
<tr><td class="param">value</td><td>Object to serialize.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_session_1ga100b653cb5cb53f21805db558ffe609f"></a>
<div class="api">
<div class="prototype">
int
espSetSessionVar
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *name, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Set a session variable.</p>
<dl><dt><b>Description</b>:</dt><dd></dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
<tr><td class="param">name</td><td>Variable name to set.</td>
<tr><td class="param">value</td><td>Variable value to use.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A session state object.</dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<h2>Functions</h2>
<a name="esp_8h_1a440de6fba35ad0513c2925f11a0f3710"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
espGetGrid
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get the current database grid.</p>
<dl><dt><b>Description</b>:</dt><dd>The current grid is defined via $setGrid.</dd></dl>
<dl><dt>Returns:</dt><dd>EdiGrid instance.</dd></dl>
</div>
</div>
<a name="esp_8h_1ae84ca6c41153894754c0bb48a8ce865d"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
espGetSecurityToken
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn)
</div>
<div class="apiDetail">
<p>Get a unique security token.</p>
<dl><dt><b>Description</b>:</dt><dd>Security tokens help mitigate against replay attacks. The security token is stored in HttpRx.securityToken and in the session store.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The security token string.</dd></dl>
</div>
</div>
<a name="esp_8h_1a366ed657abe537c8b22930f69273707b"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
espRemoveRec
(<a href="httpBare.html#group___http_conn" class="ref">HttpConn</a> *conn, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)
</div>
<div class="apiDetail">
<p>Remove a record from a database table.</p>
<dl><dt><b>Description</b>:</dt><dd>Remove the record identified by the key value from the given table.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>HttpConn connection object.</td>
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">key</td><td>Key value of the record to remove.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Record instance of EdiRec.</dd></dl>
</div>
</div>
<a name="esp_8h_1a4ab3c77c072c0e1b7a21439a85240d7e"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#group___mpr_list" class="ref">MprList</a> *
getColumns
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec)
</div>
<div class="apiDetail">
<p>Get a list of column names.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">rec</td><td>Database record. If set to NULL, the current database record defined via $form() is used.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>An MprList of column names in the given table. If there is no record defined, an empty list is returned.</dd></dl>
</div>
</div>
<a name="esp_8h_1aae0c48e803f796f2549974ceaccc4f12"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *
getField
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *field)
</div>
<div class="apiDetail">
<p>Get a field from the current database record.</p>
<dl><dt><b>Description</b>:</dt><dd>The current grid is defined via $setRec.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">field</td><td>Field name to return.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>String value for &quot;field&quot; in the current record.</dd></dl>
</div>
</div>
<a name="esp_8h_1a2e60477a5b4168f59758c93507b4b899"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
getGrid
()
</div>
<div class="apiDetail">
<p>Get the current database grid.</p>
<dl><dt><b>Description</b>:</dt><dd>The current grid is defined via $setGrid.</dd></dl>
<dl><dt>Returns:</dt><dd>EdiGrid instance.</dd></dl>
</div>
</div>
<a name="esp_8h_1a8a4d997f211531f9ad4a21133f761349"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
getRec
()
</div>
<div class="apiDetail">
<p>Get the current database record.</p>
<dl><dt><b>Description</b>:</dt><dd>The current record is defined via $setRec.</dd></dl>
<dl><dt>Returns:</dt><dd>EdiRec instance.</dd></dl>
</div>
</div>
<a name="esp_8h_1a25287207066ad592e465b36148439e2d"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
hasGrid
()
</div>
<div class="apiDetail">
<p>Test if a current grid has been defined.</p>
<dl><dt><b>Description</b>:</dt><dd>The current grid is defined via $setRec.</dd></dl>
<dl><dt>Returns:</dt><dd>&quot;true&quot; if a current grid has been defined.</dd></dl>
</div>
</div>
<a name="esp_8h_1a9ae793b0c68219491acb86735fa7a4d8"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
hasRec
()
</div>
<div class="apiDetail">
<p>Test if a current record has been defined and save to the database.</p>
<dl><dt><b>Description</b>:</dt><dd>This call returns &quot;true&quot; if a current record is defined and has been saved to the database with a valid &quot;id&quot; field.</dd></dl>
<dl><dt>Returns:</dt><dd>&quot;true&quot; if a current record with a valid &quot;id&quot; is defined.</dd></dl>
</div>
</div>
<a name="esp_8h_1a34ab6b0e4c677e26dde41a749c6ebc1c"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
readRec
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)
</div>
<div class="apiDetail">
<p>Read the identified record.</p>
<dl><dt><b>Description</b>:</dt><dd>Read the record identified by the request params(&quot;id&quot;) from the nominated table.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">tableName</td><td>Database table name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>The identified record. Returns NULL if the table or record cannot be found.</dd></dl>
</div>
</div>
<a name="esp_8h_1a0709c70065cc9048a1a7a5ac6e294d16"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
readRecsWhere
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *fieldName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *operation, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *value)
</div>
<div class="apiDetail">
<p>Read matching records.</p>
<dl><dt><b>Description</b>:</dt><dd>This runs a simple query on the database and returns matching records in a grid. The query selects all rows that have a &quot;field&quot; that matches the given &quot;value&quot;.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">fieldName</td><td>Database field name to evaluate.</td>
<tr><td class="param">operation</td><td>Comparison operation. Set to &quot;==&quot;, &quot;!=&quot;, &quot;&lt;&quot;, &quot;&gt;&quot;, &quot;&lt;=&quot; or &quot;&gt;=&quot;.</td>
<tr><td class="param">value</td><td>Data value to compare with the field values.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A grid containing all matching records. Returns NULL if no matching records.</dd></dl>
</div>
</div>
<a name="esp_8h_1a550c1016448c47c8ef7b78612a67ccd2"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
readTable
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName)
</div>
<div class="apiDetail">
<p>Read all the records in table from the database.</p>
<dl><dt><b>Description</b>:</dt><dd>This reads a table and returns a grid containing the table data.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">tableName</td><td>Database table name.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>A grid containing all table rows. Returns NULL if the table cannot be found.</dd></dl>
</div>
</div>
<a name="esp_8h_1a09091b0bc981b74fdf0b197fbee8adab"></a>
<div class="api">
<div class="prototype">
<a href="mprBare.html#mpr_8h_1ad5c9d4ba3dc37783a528b0925dc981a0" class="ref">bool</a>
removeRec
(<a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *tableName, <a href="mprBare.html#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" class="ref">cchar</a> *key)
</div>
<div class="apiDetail">
<p>Remove a record from a database table.</p>
<dl><dt><b>Description</b>:</dt><dd>Remove the record identified by the key value from the given table.</dd></dl>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">tableName</td><td>Database table name.</td>
<tr><td class="param">key</td><td>Key value of the record to remove.</td>
</table></dd></dl>
<dl><dt>Returns:</dt><dd>Record instance of EdiRec.</dd></dl>
</div>
</div>
<a name="esp_8h_1aeed08cdbf64becc6ea822e9208831f63"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_grid" class="ref">EdiGrid</a> *
setGrid
(<a href="#group___edi_grid" class="ref">EdiGrid</a> *grid)
</div>
<div class="apiDetail">
<p>Set the current database grid.</p>
<dl><dt>Returns:</dt><dd>The grid instance. This permits chaining.</dd></dl>
</div>
</div>
<a name="esp_8h_1afef8aa52aab6f3d8a3eebfe7eeb0edf4"></a>
<div class="api">
<div class="prototype">
<a href="#group___edi_rec" class="ref">EdiRec</a> *
setRec
(<a href="#group___edi_rec" class="ref">EdiRec</a> *rec)
</div>
<div class="apiDetail">
<p>Set the current database record.</p>
<dl><dt><b>Description</b>:</dt><dd>The current record is used to supply data to various abbreviated controls, such as: <a class="ref" BBB href="#group___esp_abbrev_1ga3e4c53a1a64bfb4a120fd7864d11ce59">text()</a>, <a class="ref" BBB href="#group___esp_abbrev_1gaa3f886ac8ecb0b4f2f6decb1da1f5c82">input()</a>, checkbox and <a class="ref" BBB href="#group___esp_abbrev_1gae43638b69d2bf1bf6cf037459aad2ce2">dropdown()</a></dd></dl>
<dl><dt>Returns:</dt><dd>The grid instance. This permits chaining.</dd></dl>
</div>
</div>
<h2>Typedefs</h2>
<a name="esp_8h_1aa0c56d9f50902eb9cf16889d3d95c129"></a>
<div class="api">
<div class="prototype">
typedef void(* EspProc)(HttpConn *conn).
</div>
<div class="apiDetail">
<p>Procedure callback.</p>
</div>
</div>
<a name="group___edi_service_1ga3cf21d57a02f250570e2beafc05befd9"></a>
<div class="api">
<div class="prototype">
typedef cchar*(* EdiValidationProc)(struct EdiValidation *vp, struct EdiRec *rec, cchar *fieldName, cchar *value).
</div>
<div class="apiDetail">
<p>Field validation callback procedure.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">vp</td><td>Validation structure reference.</td>
<tr><td class="param">rec</td><td>Record to validate.</td>
<tr><td class="param">fieldName</td><td>Field name to validate.</td>
<tr><td class="param">value</td><td>Field value to validate.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="group___esp_req_1ga4645d40178e3548fd0e6ad13fec1b5ed"></a>
<div class="api">
<div class="prototype">
typedef void(* EspViewProc)(HttpConn *conn).
</div>
<div class="apiDetail">
<p>View procedure callback.</p>
<dl><dt>Parameters:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">conn</td><td>Http connection object.</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>
<a name="struct_edi_provider"></a>
<div class="api">
<div class="prototype">EdiProvider</div>
<div class="apiDetail">
<p>Database provider interface.</p>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
</table></dd></dl>
</div>
</div>
<a name="struct_edi_validation"></a>
<div class="api">
<div class="prototype">EdiValidation</div>
<div class="apiDetail">
<p>Validation structure.</p>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param"><a class="ref" BBB href="#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" external="mpr.dtags">cvoid</a> *</td><td><td>data</td><td>
Allocated data that must be marked for GC.
</td>
<tr><td class="param"><a class="ref" BBB href="#mpr_8h_1a5272042f7e0f5c53e2fd4b49ff47d92d" external="mpr.dtags">cvoid</a> *</td><td><td>mdata</td><td>
Non-GC (malloc) data.
</td>
<tr><td class="param"><a class="ref" BBB href="#mpr_8h_1a0f128c3e0c83721af0220c00554e9c4e" external="mpr.dtags">cchar</a> *</td><td><td>name</td><td>
Validation name.
</td>
<tr><td class="param"><a class="ref" BBB href="#group___edi_service_1ga3cf21d57a02f250570e2beafc05befd9">EdiValidationProc</a></td><td><td>vfn</td><td>
Validation callback procedure.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_esp"></a>
<div class="api">
<div class="prototype">Esp</div>
<div class="apiDetail">
<p>Top level ESP structure.</p>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param"><a class="ref" BBB href="#struct_mpr_hash" external="mpr.dtags">MprHash</a> *</td><td><td>actions</td><td>
Table of actions.
</td>
<tr><td class="param">EdiService *</td><td><td>ediService</td><td>
Database service.
</td>
<tr><td class="param"><a class="ref" BBB href="#struct_mpr_hash" external="mpr.dtags">MprHash</a> *</td><td><td>internalOptions</td><td>
Table of internal HTML control options.
</td>
<tr><td class="param">int</td><td><td>inUse</td><td>
Active ESP request counter.
</td>
<tr><td class="param"><a class="ref" BBB href="#struct_mpr_thread_local" external="mpr.dtags">MprThreadLocal</a> *</td><td><td>local</td><td>
Thread local data.
</td>
<tr><td class="param"><a class="ref" BBB href="#struct_mpr_mutex" external="mpr.dtags">MprMutex</a> *</td><td><td>mutex</td><td>
Multithread lock.
</td>
<tr><td class="param">MprCache *</td><td><td>sessionCache</td><td>
Session state cache.
</td>
<tr><td class="param"><a class="ref" BBB href="#struct_mpr_hash" external="mpr.dtags">MprHash</a> *</td><td><td>views</td><td>
Table of views.
</td>
</table></dd></dl>
</div>
</div>
<a name="struct_esp_action"></a>
<div class="api">
<div class="prototype">EspAction</div>
<div class="apiDetail">
<p>ESP Action.</p>
<dl><dt><b>Description</b>:</dt><dd>Actions are run after a request URI is routed to a controller.</dd></dl>
<dl><dt>Fields:</dt><dd>
<table class="parameters" title="Parameters">
<tr><td class="param">EspProc</td><td><td>actionProc</td><td>
Action procedure to run to respond to the request.
</td>
</table></dd></dl>
<dl><dt>See Also:</dt><dd>
</dd></dl>
</div>
</div>