| <!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_pv.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> <a class="qindex" href="modules.html">Modules</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Data Structures</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Data Fields</a> <a class="qindex" href="globals.html">Globals</a> </center> |
| <hr><h1>oscl_socket_serv_imp_pv.h</h1><a href="oscl__socket__serv__imp__pv_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 |
| 00002 <span class="preprocessor">#ifndef OSCL_SOCKET_SERV_IMP_PV_H_INCLUDED</span> |
| 00003 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_SOCKET_SERV_IMP_PV_H_INCLUDED</span> |
| 00004 <span class="preprocessor"></span> |
| 00005 <span class="preprocessor">#include "<a class="code" href="oscl__socket__serv__imp__base_8h.html">oscl_socket_serv_imp_base.h</a>"</span> |
| 00006 <span class="preprocessor">#include "<a class="code" href="oscl__socket__serv__imp__reqlist_8h.html">oscl_socket_serv_imp_reqlist.h</a>"</span> |
| 00007 <span class="preprocessor">#include "<a class="code" href="oscl__socket__tuneables_8h.html">oscl_socket_tuneables.h</a>"</span> |
| 00008 |
| 00009 |
| 00013 <span class="preprocessor">#if PV_SOCKET_SERVER_IS_THREAD</span> |
| 00014 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__semaphore_8h.html">oscl_semaphore.h</a>"</span> |
| 00015 <span class="preprocessor">#include "<a class="code" href="oscl__mutex_8h.html">oscl_mutex.h</a>"</span> |
| 00016 <span class="preprocessor">#else</span> |
| 00017 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__scheduler__ao_8h.html">oscl_scheduler_ao.h</a>"</span> |
| 00018 <span class="preprocessor">#endif</span> |
| 00019 <span class="preprocessor"></span> |
| 00020 <span class="keyword">class </span>PVServiStats; |
| 00021 |
| 00024 <span class="preprocessor">#if (PV_SOCKET_SERVER_IS_THREAD)</span> |
| 00025 <span class="preprocessor"></span><span class="keyword">class </span><a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>: <span class="keyword">public</span> <a class="code" href="classHeapBase.html">HeapBase</a>, <span class="keyword">public</span> <a class="code" href="classOsclSocketServIBase.html">OsclSocketServIBase</a> |
| 00026 #else |
| <a name="l00027"></a><a class="code" href="classOsclSocketServI.html">00027</a> class <a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>: <span class="keyword">public</span> <a class="code" href="classOsclTimerObject.html">OsclTimerObject</a>, <span class="keyword">public</span> <a class="code" href="classOsclSocketServIBase.html">OsclSocketServIBase</a> |
| 00028 #endif |
| 00029 { |
| 00030 <span class="keyword">public</span>: |
| 00031 <span class="keyword">static</span> <a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>* <a class="code" href="classOsclSocketServI.html#d0">NewL</a>(<a class="code" href="classOscl__DefAlloc.html">Oscl_DefAlloc</a> &a); |
| 00032 int32 <a class="code" href="classOsclSocketServI.html#a0">Connect</a>(uint32 aMessageSlots); |
| 00033 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketServI.html#a1">Close</a>(<span class="keywordtype">bool</span>); |
| 00034 |
| 00035 <span class="comment">//check if calling context is server thread.</span> |
| 00036 <span class="comment">//in non-threaded implementation, will always return "true".</span> |
| 00037 <span class="keywordtype">bool</span> <a class="code" href="classOsclSocketServI.html#a2">IsServerThread</a>(); |
| 00038 |
| 00039 <span class="keyword">private</span>: |
| 00040 <a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>(<a class="code" href="classOscl__DefAlloc.html">Oscl_DefAlloc</a> &a); |
| 00041 ~<a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>(); |
| 00042 <span class="keywordtype">void</span> ConstructL(); |
| 00043 |
| 00044 <span class="comment">//socket request list.</span> |
| 00045 <a class="code" href="classOsclSocketServRequestList.html">OsclSocketServRequestList</a> iSockServRequestList; |
| 00046 |
| 00047 <span class="preprocessor">#if PV_SOCKET_SERVER_SELECT_LOOPBACK_SOCKET</span> |
| 00048 <span class="preprocessor"></span> <span class="comment">//blocking select wakeup feature</span> |
| 00049 <span class="keyword">class </span><a class="code" href="classOsclSocketServI.html#l1">LoopbackSocket</a> |
| 00050 { |
| 00051 <span class="keyword">public</span>: |
| 00052 <a class="code" href="classOsclSocketServI.html#l1">LoopbackSocket</a>() |
| 00053 { |
| 00054 iEnable = <span class="keyword">false</span>; |
| 00055 iContainer = <a class="code" href="group__osclbase.html#a81">NULL</a>; |
| 00056 } |
| 00057 <span class="keywordtype">bool</span> iEnable; |
| 00058 <span class="keywordtype">void</span> Read(); |
| 00059 <span class="keywordtype">void</span> ProcessSelect(<a class="code" href="osclconfig__io_8h.html#a44">TOsclSocket</a>&); |
| 00060 <span class="keywordtype">void</span> Init(<a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>* aContainer); |
| 00061 <span class="keywordtype">void</span> Cleanup(); |
| 00062 <span class="keywordtype">void</span> Write(); |
| 00063 <span class="preprocessor">#if PV_OSCL_SOCKET_STATS_LOGGING</span> |
| 00064 <span class="preprocessor"></span> OsclSocketStats iStats; |
| 00065 <span class="preprocessor">#endif</span> |
| 00066 <span class="preprocessor"></span> <span class="keyword">private</span>: |
| 00067 <a class="code" href="osclconfig__io_8h.html#a45">TOsclSockAddr</a> iAddr; |
| 00068 <a class="code" href="osclconfig__io_8h.html#a44">TOsclSocket</a> iSocket; |
| 00069 <a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>* iContainer; |
| 00070 }; |
| 00071 <a class="code" href="classOsclSocketServI.html#l1">LoopbackSocket</a> iLoopbackSocket; |
| 00072 <span class="preprocessor">#endif</span> |
| 00073 <span class="preprocessor"></span> uint32 iSelectPollIntervalMsec; |
| 00074 |
| 00075 <span class="keywordtype">void</span> WakeupBlockingSelect() |
| 00076 { |
| 00077 <span class="preprocessor">#if PV_SOCKET_SERVER_SELECT_LOOPBACK_SOCKET</span> |
| 00078 <span class="preprocessor"></span> <span class="keywordflow">if</span> (iLoopbackSocket.iEnable) |
| 00079 iLoopbackSocket.Write(); |
| 00080 <span class="preprocessor">#endif</span> |
| 00081 <span class="preprocessor"></span> } |
| 00082 |
| 00083 int32 StartServImp(); |
| 00084 <span class="keywordtype">void</span> ConstructServImp(); |
| 00085 <span class="keywordtype">void</span> CleanupServImp(); |
| 00086 <span class="keywordtype">void</span> StopServImp(); |
| 00087 <span class="keywordtype">void</span> ServerEntry(); |
| 00088 <span class="keywordtype">void</span> ServerExit(); |
| 00089 |
| 00090 <span class="preprocessor">#if PV_SOCKET_SERVER_IS_THREAD</span> |
| 00091 <span class="preprocessor"></span> TOsclThreadId iThreadId; |
| 00092 <span class="comment">//start & exit semaphores.</span> |
| 00093 <a class="code" href="classOsclSemaphore.html">OsclSemaphore</a> iStart, iExit; |
| 00094 <span class="comment">//thread exit flag</span> |
| 00095 <span class="keywordtype">bool</span> iClose; |
| 00096 <span class="keyword">public</span>: |
| 00097 <span class="comment">//this needs to be public for use by the thread routine.</span> |
| 00098 <span class="keywordtype">void</span> InThread(); |
| 00099 <span class="keyword">private</span>: |
| 00100 <span class="preprocessor">#else</span> |
| 00101 <span class="preprocessor"></span> <span class="comment">//for AO implemenation.</span> |
| 00102 <span class="keywordtype">void</span> <a class="code" href="classPVActiveBase.html#a4">Run</a>(); |
| 00103 <span class="keywordtype">void</span> WakeupAO(); |
| 00104 <span class="preprocessor">#if PV_SOCKET_SERVER_SELECT</span> |
| 00105 <span class="preprocessor"></span> <span class="keywordtype">int</span> iNhandles; |
| 00106 <span class="keywordtype">int</span> iNfds; |
| 00107 <span class="preprocessor">#endif</span> |
| 00108 <span class="preprocessor"></span><span class="preprocessor">#endif</span> |
| 00109 <span class="preprocessor"></span> |
| 00110 <span class="preprocessor">#if PV_SOCKET_SERVER_SELECT</span> |
| 00111 <span class="preprocessor"></span> <span class="comment">//select flags.</span> |
| 00112 fd_set iReadset, iWriteset, iExceptset; |
| 00113 <span class="keywordtype">void</span> ProcessSocketRequests(<span class="keywordtype">int</span> &, <span class="keywordtype">int</span> &n); |
| 00114 <span class="preprocessor">#else</span> |
| 00115 <span class="preprocessor"></span> <span class="keywordtype">void</span> ProcessSocketRequests(); |
| 00116 <span class="preprocessor">#endif</span> |
| 00117 <span class="preprocessor"></span> |
| <a name="l00118"></a><a class="code" href="classOsclSocketServI.html#l0">00118</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclSocketServRequestList.html">OsclSocketServRequestList</a>; |
| <a name="l00119"></a><a class="code" href="classOsclSocketServI.html#l1">00119</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclSocketServI.html#l1">LoopbackSocket</a>; |
| 00120 |
| <a name="l00121"></a><a class="code" href="classOsclSocketServI.html#l2">00121</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclTCPSocketI.html">OsclTCPSocketI</a>; |
| <a name="l00122"></a><a class="code" href="classOsclSocketServI.html#l3">00122</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclUDPSocketI.html">OsclUDPSocketI</a>; |
| <a name="l00123"></a><a class="code" href="classOsclSocketServI.html#l4">00123</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclSocketI.html">OsclSocketI</a>; |
| <a name="l00124"></a><a class="code" href="classOsclSocketServI.html#l5">00124</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclDNSI.html">OsclDNSI</a>; |
| <a name="l00125"></a><a class="code" href="classOsclSocketServI.html#l6">00125</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclSocketRequest.html">OsclSocketRequest</a>; |
| <a name="l00126"></a><a class="code" href="classOsclSocketServI.html#l7">00126</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclSocketServ.html">OsclSocketServ</a>; |
| 00127 |
| 00128 PVServiStats* iServiStats; |
| 00129 |
| 00130 }; |
| 00131 |
| <a name="l00134"></a><a class="code" href="oscl__socket__serv__imp__pv_8h.html#a0">00134</a> <span class="preprocessor">#define OSCL_READSET_FLAG 0x04</span> |
| <a name="l00135"></a><a class="code" href="oscl__socket__serv__imp__pv_8h.html#a1">00135</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_WRITESET_FLAG 0x02</span> |
| <a name="l00136"></a><a class="code" href="oscl__socket__serv__imp__pv_8h.html#a2">00136</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_EXCEPTSET_FLAG 0x01</span> |
| 00137 <span class="preprocessor"></span> |
| 00138 |
| 00139 <span class="preprocessor">#endif</span> |
| 00140 <span class="preprocessor"></span> |
| 00141 |
| 00142 |
| </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> |