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> <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>
|