blob: c3fb9f70b7bfc96ad341a5b1997259e182c28512 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>oscl_socket_serv_imp_reqlist.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>oscl_socket_serv_imp_reqlist.h</h1><a href="oscl__socket__serv__imp__reqlist_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001
00002 <span class="preprocessor">#ifndef OSCL_SOCKET_SERV_IMP_REQLIST_H_INCLUDED</span>
00003 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_SOCKET_SERV_IMP_REQLIST_H_INCLUDED</span>
00004 <span class="preprocessor"></span>
00005 <span class="preprocessor">#include "<a class="code" href="oscl__socket__tuneables_8h.html">oscl_socket_tuneables.h</a>"</span>
00006 <span class="preprocessor">#include "<a class="code" href="oscl__defalloc_8h.html">oscl_defalloc.h</a>"</span>
00007 <span class="preprocessor">#include "<a class="code" href="oscl__vector_8h.html">oscl_vector.h</a>"</span>
00008 <span class="preprocessor">#include "<a class="code" href="oscl__mem_8h.html">oscl_mem.h</a>"</span>
00009
00010 <span class="preprocessor">#if PV_SOCKET_SERVER_IS_THREAD</span>
00011 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__semaphore_8h.html">oscl_semaphore.h</a>"</span>
00012 <span class="preprocessor">#include "<a class="code" href="oscl__mutex_8h.html">oscl_mutex.h</a>"</span>
00013 <span class="preprocessor">#endif</span>
00014 <span class="preprocessor"></span>
00015 <span class="keyword">class </span><a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>;
00016 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;<span class="keyword">class </span>OsclSocketQueue;
00017 <span class="keyword">class </span><a class="code" href="classOsclSocketI.html">OsclSocketI</a>;
00018 <span class="keyword">class </span><a class="code" href="classOsclSocketRequest.html">OsclSocketRequest</a>;
00019
<a name="l00020"></a><a class="code" href="classOsclSocketServRequestQElem.html">00020</a> <span class="keyword">class </span><a class="code" href="classOsclSocketServRequestQElem.html">OsclSocketServRequestQElem</a>
00021 {
00022 <span class="keyword">public</span>:
<a name="l00023"></a><a class="code" href="classOsclSocketServRequestQElem.html#a0">00023</a> <a class="code" href="classOsclSocketServRequestQElem.html#a0">OsclSocketServRequestQElem</a>(<a class="code" href="classOsclSocketRequest.html">OsclSocketRequest</a>* r)
00024 : <a class="code" href="classOsclSocketServRequestQElem.html#m0">iSocketRequest</a>(r)
00025 , <a class="code" href="classOsclSocketServRequestQElem.html#m1">iSelect</a>(0)
00026 , <a class="code" href="classOsclSocketServRequestQElem.html#m2">iCancel</a>(false)
00027 {}
00028
<a name="l00029"></a><a class="code" href="classOsclSocketServRequestQElem.html#m0">00029</a> <a class="code" href="classOsclSocketRequest.html">OsclSocketRequest</a>* <a class="code" href="classOsclSocketServRequestQElem.html#m0">iSocketRequest</a>;
<a name="l00030"></a><a class="code" href="classOsclSocketServRequestQElem.html#m1">00030</a> uint8 <a class="code" href="classOsclSocketServRequestQElem.html#m1">iSelect</a>;
<a name="l00031"></a><a class="code" href="classOsclSocketServRequestQElem.html#m2">00031</a> <span class="keywordtype">bool</span> <a class="code" href="classOsclSocketServRequestQElem.html#m2">iCancel</a>;
00032 };
00033
<a name="l00036"></a><a class="code" href="classOsclSocketServRequestList.html">00036</a> <span class="keyword">class </span><a class="code" href="classOsclSocketServRequestList.html">OsclSocketServRequestList</a>
00037 {
00038 <span class="keyword">public</span>:
00039 <a class="code" href="classOsclSocketServRequestList.html#a0">OsclSocketServRequestList</a>();
00040 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketServRequestList.html#a1">Add</a>(<a class="code" href="classOsclSocketRequest.html">OsclSocketRequest</a> *);
00041 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketServRequestList.html#a2">StartCancel</a>(<a class="code" href="classOsclSocketRequest.html">OsclSocketRequest</a> *);
00042 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketServRequestList.html#a3">Open</a>(<a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>*s);
00043 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketServRequestList.html#a4">Close</a>();
00044 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketServRequestList.html#a5">Wakeup</a>();
00045 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketServRequestList.html#a6">WaitOnRequests</a>();
<a name="l00046"></a><a class="code" href="classOsclSocketServRequestList.html#a7">00046</a> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketServRequestList.html#a7">Remove</a>(<a class="code" href="classOsclSocketServRequestQElem.html">OsclSocketServRequestQElem</a>* aElem)
00047 {
00048 aElem-&gt;<a class="code" href="classOsclSocketServRequestQElem.html#m0">iSocketRequest</a> = <a class="code" href="group__osclbase.html#a81">NULL</a>;
00049 }
00050
00051 <span class="keyword">private</span>:
00052 <span class="comment">//a queue of the active sockets.</span>
00053 <a class="code" href="classOscl__Vector.html">Oscl_Vector&lt;OsclSocketServRequestQElem, OsclMemAllocator&gt;</a> iActiveRequests;
00054
00055 <span class="preprocessor">#if PV_SOCKET_SERVER_IS_THREAD</span>
00056 <span class="preprocessor"></span> <span class="comment">//thread protection</span>
00057 <a class="code" href="classOsclMutex.html">OsclMutex</a> iCrit;
00058 <a class="code" href="classOsclSemaphore.html">OsclSemaphore</a> iSem;
00059 <span class="preprocessor">#endif</span>
00060 <span class="preprocessor"></span>
00061 <a class="code" href="classOsclSocketServI.html">OsclSocketServI</a> *iContainer;
00062
00063 <span class="comment">//input queues for requests from the app side. requests</span>
00064 <span class="comment">//are picked up by server thread, so these queues need</span>
00065 <span class="comment">//to be used with thread locks.</span>
00066 <a class="code" href="classOscl__Vector.html">Oscl_Vector&lt;OsclSocketRequest*, OsclMemAllocator&gt;</a> iAddRequests;
00067 <a class="code" href="classOscl__Vector.html">Oscl_Vector&lt;OsclSocketRequest*, OsclMemAllocator&gt;</a> iCancelRequests;
00068 <span class="keywordtype">void</span> GetNewRequests();
00069 <span class="keywordtype">void</span> Lock();
00070 <span class="keywordtype">void</span> Unlock();
00071
<a name="l00072"></a><a class="code" href="classOsclSocketServRequestList.html#l0">00072</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>;
00073 };
00074
00075
00076 <span class="preprocessor">#endif</span>
00077 <span class="preprocessor"></span>
00078
00079
</pre></div><hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>OSCL API</small>
<address style="align: left;"><small>Posting Version: OPENCORE_20090310 </small>
</small></address>
</body>
</html>