• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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> &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>
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> &amp;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> &amp;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>&amp;);
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 &amp; 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> &amp;, <span class="keywordtype">int</span> &amp;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