1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 2<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> 3<title>oscl_socket_serv_imp_pv.h Source File</title> 4<link href="doxygen.css" rel="stylesheet" type="text/css"> 5</head><body> 6<!-- Generated by Doxygen 1.2.18 --> 7<center> 8<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> 9<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 1000002 <span class="preprocessor">#ifndef OSCL_SOCKET_SERV_IMP_PV_H_INCLUDED</span> 1100003 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_SOCKET_SERV_IMP_PV_H_INCLUDED</span> 1200004 <span class="preprocessor"></span> 1300005 <span class="preprocessor">#include "<a class="code" href="oscl__socket__serv__imp__base_8h.html">oscl_socket_serv_imp_base.h</a>"</span> 1400006 <span class="preprocessor">#include "<a class="code" href="oscl__socket__serv__imp__reqlist_8h.html">oscl_socket_serv_imp_reqlist.h</a>"</span> 1500007 <span class="preprocessor">#include "<a class="code" href="oscl__socket__tuneables_8h.html">oscl_socket_tuneables.h</a>"</span> 1600008 1700009 1800013 <span class="preprocessor">#if PV_SOCKET_SERVER_IS_THREAD</span> 1900014 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__semaphore_8h.html">oscl_semaphore.h</a>"</span> 2000015 <span class="preprocessor">#include "<a class="code" href="oscl__mutex_8h.html">oscl_mutex.h</a>"</span> 2100016 <span class="preprocessor">#else</span> 2200017 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__scheduler__ao_8h.html">oscl_scheduler_ao.h</a>"</span> 2300018 <span class="preprocessor">#endif</span> 2400019 <span class="preprocessor"></span> 2500020 <span class="keyword">class </span>PVServiStats; 2600021 2700024 <span class="preprocessor">#if (PV_SOCKET_SERVER_IS_THREAD)</span> 2800025 <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> 2900026 #else 30<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> 3100028 #endif 3200029 { 3300030 <span class="keyword">public</span>: 3400031 <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); 3500032 int32 <a class="code" href="classOsclSocketServI.html#a0">Connect</a>(uint32 aMessageSlots); 3600033 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketServI.html#a1">Close</a>(<span class="keywordtype">bool</span>); 3700034 3800035 <span class="comment">//check if calling context is server thread.</span> 3900036 <span class="comment">//in non-threaded implementation, will always return "true".</span> 4000037 <span class="keywordtype">bool</span> <a class="code" href="classOsclSocketServI.html#a2">IsServerThread</a>(); 4100038 4200039 <span class="keyword">private</span>: 4300040 <a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>(<a class="code" href="classOscl__DefAlloc.html">Oscl_DefAlloc</a> &a); 4400041 ~<a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>(); 4500042 <span class="keywordtype">void</span> ConstructL(); 4600043 4700044 <span class="comment">//socket request list.</span> 4800045 <a class="code" href="classOsclSocketServRequestList.html">OsclSocketServRequestList</a> iSockServRequestList; 4900046 5000047 <span class="preprocessor">#if PV_SOCKET_SERVER_SELECT_LOOPBACK_SOCKET</span> 5100048 <span class="preprocessor"></span> <span class="comment">//blocking select wakeup feature</span> 5200049 <span class="keyword">class </span><a class="code" href="classOsclSocketServI.html#l1">LoopbackSocket</a> 5300050 { 5400051 <span class="keyword">public</span>: 5500052 <a class="code" href="classOsclSocketServI.html#l1">LoopbackSocket</a>() 5600053 { 5700054 iEnable = <span class="keyword">false</span>; 5800055 iContainer = <a class="code" href="group__osclbase.html#a81">NULL</a>; 5900056 } 6000057 <span class="keywordtype">bool</span> iEnable; 6100058 <span class="keywordtype">void</span> Read(); 6200059 <span class="keywordtype">void</span> ProcessSelect(<a class="code" href="osclconfig__io_8h.html#a44">TOsclSocket</a>&); 6300060 <span class="keywordtype">void</span> Init(<a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>* aContainer); 6400061 <span class="keywordtype">void</span> Cleanup(); 6500062 <span class="keywordtype">void</span> Write(); 6600063 <span class="preprocessor">#if PV_OSCL_SOCKET_STATS_LOGGING</span> 6700064 <span class="preprocessor"></span> OsclSocketStats iStats; 6800065 <span class="preprocessor">#endif</span> 6900066 <span class="preprocessor"></span> <span class="keyword">private</span>: 7000067 <a class="code" href="osclconfig__io_8h.html#a45">TOsclSockAddr</a> iAddr; 7100068 <a class="code" href="osclconfig__io_8h.html#a44">TOsclSocket</a> iSocket; 7200069 <a class="code" href="classOsclSocketServI.html">OsclSocketServI</a>* iContainer; 7300070 }; 7400071 <a class="code" href="classOsclSocketServI.html#l1">LoopbackSocket</a> iLoopbackSocket; 7500072 <span class="preprocessor">#endif</span> 7600073 <span class="preprocessor"></span> uint32 iSelectPollIntervalMsec; 7700074 7800075 <span class="keywordtype">void</span> WakeupBlockingSelect() 7900076 { 8000077 <span class="preprocessor">#if PV_SOCKET_SERVER_SELECT_LOOPBACK_SOCKET</span> 8100078 <span class="preprocessor"></span> <span class="keywordflow">if</span> (iLoopbackSocket.iEnable) 8200079 iLoopbackSocket.Write(); 8300080 <span class="preprocessor">#endif</span> 8400081 <span class="preprocessor"></span> } 8500082 8600083 int32 StartServImp(); 8700084 <span class="keywordtype">void</span> ConstructServImp(); 8800085 <span class="keywordtype">void</span> CleanupServImp(); 8900086 <span class="keywordtype">void</span> StopServImp(); 9000087 <span class="keywordtype">void</span> ServerEntry(); 9100088 <span class="keywordtype">void</span> ServerExit(); 9200089 9300090 <span class="preprocessor">#if PV_SOCKET_SERVER_IS_THREAD</span> 9400091 <span class="preprocessor"></span> TOsclThreadId iThreadId; 9500092 <span class="comment">//start & exit semaphores.</span> 9600093 <a class="code" href="classOsclSemaphore.html">OsclSemaphore</a> iStart, iExit; 9700094 <span class="comment">//thread exit flag</span> 9800095 <span class="keywordtype">bool</span> iClose; 9900096 <span class="keyword">public</span>: 10000097 <span class="comment">//this needs to be public for use by the thread routine.</span> 10100098 <span class="keywordtype">void</span> InThread(); 10200099 <span class="keyword">private</span>: 10300100 <span class="preprocessor">#else</span> 10400101 <span class="preprocessor"></span> <span class="comment">//for AO implemenation.</span> 10500102 <span class="keywordtype">void</span> <a class="code" href="classPVActiveBase.html#a4">Run</a>(); 10600103 <span class="keywordtype">void</span> WakeupAO(); 10700104 <span class="preprocessor">#if PV_SOCKET_SERVER_SELECT</span> 10800105 <span class="preprocessor"></span> <span class="keywordtype">int</span> iNhandles; 10900106 <span class="keywordtype">int</span> iNfds; 11000107 <span class="preprocessor">#endif</span> 11100108 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 11200109 <span class="preprocessor"></span> 11300110 <span class="preprocessor">#if PV_SOCKET_SERVER_SELECT</span> 11400111 <span class="preprocessor"></span> <span class="comment">//select flags.</span> 11500112 fd_set iReadset, iWriteset, iExceptset; 11600113 <span class="keywordtype">void</span> ProcessSocketRequests(<span class="keywordtype">int</span> &, <span class="keywordtype">int</span> &n); 11700114 <span class="preprocessor">#else</span> 11800115 <span class="preprocessor"></span> <span class="keywordtype">void</span> ProcessSocketRequests(); 11900116 <span class="preprocessor">#endif</span> 12000117 <span class="preprocessor"></span> 121<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>; 122<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>; 12300120 124<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>; 125<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>; 126<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>; 127<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>; 128<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>; 129<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>; 13000127 13100128 PVServiStats* iServiStats; 13200129 13300130 }; 13400131 135<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> 136<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> 137<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> 13800137 <span class="preprocessor"></span> 13900138 14000139 <span class="preprocessor">#endif</span> 14100140 <span class="preprocessor"></span> 14200141 14300142 144</pre></div><hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>OSCL API</small> 145<address style="align: left;"><small>Posting Version: OPENCORE_20090310 </small> 146</small></address> 147</body> 148</html> 149