aboutsummaryrefslogtreecommitdiff
path: root/doc/oscl_html/oscl__socket__serv__imp__pv_8h-source.html
blob: d3aa338361ea752f5a21d6b05e6459f63245826a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<!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> &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_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> &amp;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> &amp;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>&amp;);
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 &amp; 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> &amp;, <span class="keywordtype">int</span> &amp;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>