A task management system. At least this was the initial idea. Basically this it the base code for the taskrambler framework.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

216 lines
14 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Server: src/http/request.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.7.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Server&#160;<span id="projectnumber">0.0.1</span></div>
<div id="projectbrief">HTTP/REST server implementation</div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli">
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
initNavTree('request_8c.html','');
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<h1>src/http/request.c</h1> </div>
</div>
<div class="contents">
<a href="request_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00023"></a>00023 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;stdarg.h&gt;</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;string.h&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
<a name="l00027"></a>00027
<a name="l00028"></a>00028 <span class="preprocessor">#include &quot;class.h&quot;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &quot;hash.h&quot;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &quot;http/interface/http_intro.h&quot;</span>
<a name="l00031"></a>00031
<a name="l00032"></a>00032 <span class="preprocessor">#include &quot;http/request.h&quot;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &quot;utils/memory.h&quot;</span>
<a name="l00034"></a>00034
<a name="l00035"></a>00035
<a name="l00036"></a>00036 <span class="keyword">static</span>
<a name="l00037"></a>00037 <span class="keywordtype">int</span>
<a name="l00038"></a>00038 httpRequestCtor(<span class="keywordtype">void</span> * _this, va_list * params)
<a name="l00039"></a>00039 {
<a name="l00040"></a>00040 <a class="code" href="structHttpRequest.html">HttpRequest</a> <span class="keyword">this</span> = _this;
<a name="l00041"></a>00041 <span class="keywordtype">char</span> * method, * uri;
<a name="l00042"></a>00042 <span class="keywordtype">size_t</span> mlen, ulen;
<a name="l00043"></a>00043
<a name="l00044"></a>00044 method = va_arg(* params, <span class="keywordtype">char</span> *);
<a name="l00045"></a>00045 mlen = va_arg(* params, <span class="keywordtype">size_t</span>);
<a name="l00046"></a>00046 uri = va_arg(* params, <span class="keywordtype">char</span> *);
<a name="l00047"></a>00047 ulen = va_arg(* params, <span class="keywordtype">size_t</span>);
<a name="l00048"></a>00048
<a name="l00049"></a>00049 <a class="code" href="class_2class_8h.html#ab6391ca75b58104db1fc948f2e066e8d">PARENTCALL</a>(_this, Class, ctor, params);
<a name="l00050"></a>00050
<a name="l00051"></a>00051 this-&gt;method = malloc(mlen + 1);
<a name="l00052"></a>00052 this-&gt;method[mlen] = 0;
<a name="l00053"></a>00053 memcpy(this-&gt;method, method, mlen);
<a name="l00054"></a>00054
<a name="l00055"></a>00055 this-&gt;uri = malloc(ulen + 1);
<a name="l00056"></a>00056 this-&gt;uri[ulen] = 0;
<a name="l00057"></a>00057 memcpy(this-&gt;uri, uri, ulen);
<a name="l00058"></a>00058
<a name="l00059"></a>00059 this-&gt;<span class="keyword">get</span> = <span class="keyword">new</span>(<a class="code" href="structHash.html">Hash</a>);
<a name="l00060"></a>00060 this-&gt;post = <span class="keyword">new</span>(<a class="code" href="structHash.html">Hash</a>);
<a name="l00061"></a>00061 this-&gt;cookies = <span class="keyword">new</span>(<a class="code" href="structHash.html">Hash</a>);
<a name="l00062"></a>00062
<a name="l00063"></a>00063 <span class="keywordflow">return</span> 0;
<a name="l00064"></a>00064 }
<a name="l00065"></a>00065
<a name="l00066"></a>00066 <span class="keyword">static</span>
<a name="l00067"></a>00067 <span class="keywordtype">void</span>
<a name="l00068"></a>00068 httpRequestDtor(<span class="keywordtype">void</span> * _this)
<a name="l00069"></a>00069 {
<a name="l00070"></a>00070 <a class="code" href="structHttpRequest.html">HttpRequest</a> <span class="keyword">this</span> = _this;
<a name="l00071"></a>00071
<a name="l00072"></a>00072 <span class="keyword">delete</span>(this-&gt;<span class="keyword">get</span>);
<a name="l00073"></a>00073 <span class="keyword">delete</span>(this-&gt;post);
<a name="l00074"></a>00074 <span class="keyword">delete</span>(this-&gt;cookies);
<a name="l00075"></a>00075
<a name="l00076"></a>00076 <a class="code" href="memory_8h.html#a717b411d846e077ecccf689e256b9865">FREE</a>(this-&gt;uri);
<a name="l00077"></a>00077 <a class="code" href="memory_8h.html#a717b411d846e077ecccf689e256b9865">FREE</a>(this-&gt;method);
<a name="l00078"></a>00078 <a class="code" href="memory_8h.html#a717b411d846e077ecccf689e256b9865">FREE</a>(this-&gt;path);
<a name="l00079"></a>00079
<a name="l00080"></a>00080 <a class="code" href="class_2class_8h.html#ab6391ca75b58104db1fc948f2e066e8d">PARENTCALL</a>(_this, Class, dtor);
<a name="l00081"></a>00081 }
<a name="l00082"></a>00082
<a name="l00083"></a>00083 <span class="keyword">static</span>
<a name="l00084"></a>00084 <span class="keywordtype">size_t</span>
<a name="l00085"></a>00085 sizeGet(<span class="keywordtype">void</span> * _this)
<a name="l00086"></a>00086 {
<a name="l00087"></a>00087 <a class="code" href="structHttpRequest.html">HttpRequest</a> <span class="keyword">this</span> = _this;
<a name="l00088"></a>00088 <span class="keywordtype">size_t</span> size = 0;
<a name="l00089"></a>00089
<a name="l00090"></a>00090 size += strlen(this-&gt;method) + 1;
<a name="l00091"></a>00091 size += strlen(this-&gt;uri) + 1;
<a name="l00092"></a>00092 size += strlen(((<a class="code" href="structHttpMessage.html">HttpMessage</a>)<span class="keyword">this</span>)-&gt;version) + 2;
<a name="l00093"></a>00093
<a name="l00094"></a>00094 <span class="keywordflow">return</span> size;
<a name="l00095"></a>00095 }
<a name="l00096"></a>00096
<a name="l00097"></a>00097 <span class="keyword">static</span>
<a name="l00098"></a>00098 <span class="keywordtype">char</span> *
<a name="l00099"></a>00099 toString(<span class="keywordtype">void</span> * _this, <span class="keywordtype">char</span> * <span class="keywordtype">string</span>)
<a name="l00100"></a>00100 {
<a name="l00101"></a>00101 <a class="code" href="structHttpRequest.html">HttpRequest</a> <span class="keyword">this</span> = _this;
<a name="l00102"></a>00102
<a name="l00103"></a>00103 strcpy(<span class="keywordtype">string</span>, this-&gt;method);
<a name="l00104"></a>00104 <span class="keywordtype">string</span> += strlen(<span class="keywordtype">string</span>);
<a name="l00105"></a>00105 *<span class="keywordtype">string</span>++ = <span class="charliteral">&#39; &#39;</span>;
<a name="l00106"></a>00106
<a name="l00107"></a>00107 strcpy(<span class="keywordtype">string</span>, this-&gt;uri);
<a name="l00108"></a>00108 <span class="keywordtype">string</span> += strlen(<span class="keywordtype">string</span>);
<a name="l00109"></a>00109 *<span class="keywordtype">string</span>++ = <span class="charliteral">&#39; &#39;</span>;
<a name="l00110"></a>00110
<a name="l00111"></a>00111 strcpy(<span class="keywordtype">string</span>, ((<a class="code" href="structHttpMessage.html">HttpMessage</a>)<span class="keyword">this</span>)-&gt;version);
<a name="l00112"></a>00112 <span class="keywordtype">string</span> += strlen(<span class="keywordtype">string</span>);
<a name="l00113"></a>00113 *<span class="keywordtype">string</span>++ = <span class="charliteral">&#39;\r&#39;</span>;
<a name="l00114"></a>00114 *<span class="keywordtype">string</span>++ = <span class="charliteral">&#39;\n&#39;</span>;
<a name="l00115"></a>00115
<a name="l00116"></a>00116 <span class="keywordflow">return</span> string;
<a name="l00117"></a>00117 }
<a name="l00118"></a>00118
<a name="l00119"></a>00119 <a class="code" href="interface_8h.html#a446cc7d7282f8a0b8e62a371671ea605">INIT_IFACE</a>(Class, httpRequestCtor, httpRequestDtor, NULL);
<a name="l00120"></a>00120 <a class="code" href="interface_8h.html#a446cc7d7282f8a0b8e62a371671ea605">INIT_IFACE</a>(HttpIntro, sizeGet, toString);
<a name="l00121"></a>00121 <a class="code" href="class_2class_8h.html#a509b4880afb25bb862c448d7a71e7afe">CREATE_CLASS</a>(<a class="code" href="structHttpRequest.html">HttpRequest</a>,
<a name="l00122"></a>00122 <a class="code" href="structHttpMessage.html">HttpMessage</a>,
<a name="l00123"></a>00123 <a class="code" href="interface_8h.html#a02255665665c91d905ec32d00d9a4a85">IFACE</a>(Class),
<a name="l00124"></a>00124 <a class="code" href="interface_8h.html#a02255665665c91d905ec32d00d9a4a85">IFACE</a>(HttpIntro));
<a name="l00125"></a>00125
<a name="l00126"></a>00126 <span class="comment">// vim: set ts=4 sw=4:</span>
</pre></div></div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="request_8c.html">request.c</a> </li>
<li class="footer">Generated on Wed Mar 28 2012 10:39:43 for Server by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </li>
</ul>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Defines</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</body>
</html>