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_method.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_method.h</h1><a href="oscl__socket__method_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 1000002 <span class="preprocessor">#ifndef OSCL_SOCKET_METHOD_H_INCLUDED</span> 1100003 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_SOCKET_METHOD_H_INCLUDED</span> 1200004 <span class="preprocessor"></span> 1300005 <span class="preprocessor">#include "<a class="code" href="osclconfig__io_8h.html">osclconfig_io.h</a>"</span> 1400006 <span class="preprocessor">#include "<a class="code" href="oscl__socket__types_8h.html">oscl_socket_types.h</a>"</span> 1500007 <span class="comment">//#include "oscl_socket_serv_imp.h"</span> 1600008 <span class="preprocessor">#include "<a class="code" href="oscl__scheduler__ao_8h.html">oscl_scheduler_ao.h</a>"</span> 1700009 <span class="preprocessor">#include "<a class="code" href="oscl__socket__request_8h.html">oscl_socket_request.h</a>"</span> 1800010 <span class="preprocessor">#include "<a class="code" href="pvlogger_8h.html">pvlogger.h</a>"</span> 1900011 <span class="preprocessor">#include "<a class="code" href="oscl__socket__tuneables_8h.html">oscl_socket_tuneables.h</a>"</span> 2000012 <span class="preprocessor">#include "<a class="code" href="oscl__ip__socket_8h.html">oscl_ip_socket.h</a>"</span> 2100013 22<a name="l00014"></a><a class="code" href="oscl__socket__method_8h.html#a0">00014</a> <span class="preprocessor">#define MSEC_TO_MICROSEC 1000</span> 2300015 <span class="preprocessor"></span> 2400016 <span class="keyword">class </span><a class="code" href="classOsclSocketI.html">OsclSocketI</a>; 2500017 <span class="keyword">class </span><a class="code" href="classOsclSocketObserver.html">OsclSocketObserver</a>; 2600018 <span class="keyword">class </span><a class="code" href="classOsclSocketRequestAO.html">OsclSocketRequestAO</a>; 2700019 <span class="keyword">class </span><a class="code" href="classOsclIPSocketI.html">OsclIPSocketI</a>; 2800020 29<a name="l00026"></a><a class="code" href="classOsclSocketMethod.html">00026</a> <span class="keyword">class </span><a class="code" href="classOsclSocketMethod.html">OsclSocketMethod</a> : <span class="keyword">public</span> <a class="code" href="classOsclTimerObject.html">OsclTimerObject</a> 3000027 { 3100028 <span class="keyword">public</span>: 32<a name="l00029"></a><a class="code" href="classOsclSocketMethod.html#a0">00029</a> <a class="code" href="classOsclSocketMethod.html#a0">OsclSocketMethod</a>(<a class="code" href="classOsclIPSocketI.html">OsclIPSocketI</a>& aContainer, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code" href="oscl__socket__types_8h.html#a19">TPVSocketFxn</a> fxn) 3300030 : <a class="code" href="classOsclTimerObject.html">OsclTimerObject</a>(<a class="code" href="oscl__socket__tuneables_8h.html#a0">PV_SOCKET_REQUEST_AO_PRIORITY</a>, name) 3400031 , <a class="code" href="classOsclSocketMethod.html#m0">iContainer</a>(aContainer) 3500032 , <a class="code" href="classOsclSocketMethod.html#m1">iSocketFxn</a>(fxn) 3600033 , <a class="code" href="classOsclSocketMethod.html#n0">iSocketRequestAO</a>(<a class="code" href="group__osclbase.html#a81">NULL</a>) 3700034 { 3800035 } 39<a name="l00036"></a><a class="code" href="classOsclSocketMethod.html#a1">00036</a> <span class="keyword">virtual</span> <a class="code" href="classOsclSocketMethod.html#a1">~OsclSocketMethod</a>() 4000037 {} 4100038 42<a name="l00039"></a><a class="code" href="classOsclSocketMethod.html#a2">00039</a> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#a2">Abort</a>() 4300040 { 4400041 <a class="code" href="classOsclTimerObject.html#a8">Cancel</a>(); 4500042 } 4600043 4700044 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#a3">AbortAll</a>(); 4800045 4900046 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#a4">CancelMethod</a>(); 5000047 51<a name="l00048"></a><a class="code" href="classOsclSocketMethod.html#m0">00048</a> <a class="code" href="classOsclIPSocketI.html">OsclIPSocketI</a>& <a class="code" href="classOsclSocketMethod.html#m0">iContainer</a>; 5200049 53<a name="l00050"></a><a class="code" href="classOsclSocketMethod.html#m1">00050</a> <a class="code" href="oscl__socket__types_8h.html#a19">TPVSocketFxn</a> <a class="code" href="classOsclSocketMethod.html#m1">iSocketFxn</a>; 5400051 55<a name="l00052"></a><a class="code" href="classOsclSocketMethod.html#a5">00052</a> <a class="code" href="classOscl__DefAlloc.html">Oscl_DefAlloc</a>& <a class="code" href="classOsclSocketMethod.html#a5">Alloc</a>() 5600053 { 5700054 <span class="keywordflow">return</span> iContainer.<a class="code" href="classOsclIPSocketI.html#a8">Alloc</a>(); 5800055 } 5900056 6000057 <span class="keyword">protected</span>: 61<a name="l00058"></a><a class="code" href="classOsclSocketMethod.html#b0">00058</a> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#b0">ConstructL</a>(<a class="code" href="classOsclSocketRequestAO.html">OsclSocketRequestAO</a> *aAO) 6200059 { 6300060 <span class="keywordflow">if</span> (!aAO) 6400061 <a class="code" href="classOsclError.html#d7">OsclError::Leave</a>(<a class="code" href="group__osclerror.html#a12">OsclErrGeneral</a>); 6500062 <a class="code" href="classOsclSocketMethod.html#n0">iSocketRequestAO</a> = aAO; 6600063 } 6700064 6800065 <span class="keywordtype">bool</span> <a class="code" href="classOsclSocketMethod.html#b1">StartMethod</a>(int32 aTimeoutMsec); 6900066 7000067 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#b2">MethodDone</a>(); 7100068 7200069 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#b3">Run</a>(); 7300070 74<a name="l00071"></a><a class="code" href="classOsclSocketMethod.html#n0">00071</a> <a class="code" href="classOsclSocketRequestAO.html">OsclSocketRequestAO</a> *<a class="code" href="classOsclSocketMethod.html#n0">iSocketRequestAO</a>; 7500072 }; 7600073 7700074 <span class="preprocessor">#include "<a class="code" href="oscl__socket__imp_8h.html">oscl_socket_imp.h</a>"</span> 7800075 79<a name="l00080"></a><a class="code" href="classOsclSocketRequestAO.html">00080</a> <span class="keyword">class </span><a class="code" href="classOsclSocketRequestAO.html">OsclSocketRequestAO</a> : <span class="keyword">public</span> <a class="code" href="classOsclActiveObject.html">OsclActiveObject</a> 8000081 { 8100082 <span class="keyword">public</span>: 82<a name="l00083"></a><a class="code" href="classOsclSocketRequestAO.html#a0">00083</a> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketRequestAO.html#a0">ConstructL</a>() 8300084 { 8400085 } 8500086 <span class="keyword">protected</span>: 8600087 87<a name="l00088"></a><a class="code" href="classOsclSocketRequestAO.html#b0">00088</a> <a class="code" href="classOsclSocketRequestAO.html#b0">OsclSocketRequestAO</a>(<a class="code" href="classOsclSocketMethod.html">OsclSocketMethod</a>& aContainer, <span class="keyword">const</span> <span class="keywordtype">char</span> *name) 8800089 : <a class="code" href="classOsclActiveObject.html">OsclActiveObject</a>(<a class="code" href="oscl__socket__tuneables_8h.html#a0">PV_SOCKET_REQUEST_AO_PRIORITY</a>, name) 8900090 , <a class="code" href="classOsclSocketRequestAO.html#n0">iContainer</a>(aContainer) 9000091 , <a class="code" href="classOsclSocketRequestAO.html#n1">iSocketError</a>(0) 9100092 , <a class="code" href="classOsclSocketRequestAO.html#n2">iParam</a>(<a class="code" href="group__osclbase.html#a81">NULL</a>) 9200093 , <a class="code" href="classOsclSocketRequestAO.html#n3">iParamSize</a>(0) 9300094 {} 9400095 95<a name="l00096"></a><a class="code" href="classOsclSocketRequestAO.html#b1">00096</a> <span class="keyword">virtual</span> <a class="code" href="classOsclSocketRequestAO.html#b1">~OsclSocketRequestAO</a>() 9600097 { 9700098 <a class="code" href="classOsclSocketRequestAO.html#b3">CleanupParam</a>(<span class="keyword">true</span>); 9800099 } 9900100 10000101 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOsclSocketRequestAO.html#b2">NewRequest</a>(<span class="keyword">const</span> uint32 size) ; 10100102 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketRequestAO.html#b3">CleanupParam</a>(<span class="keywordtype">bool</span> deallocate = <span class="keyword">false</span>); 10200103 10300104 104<a name="l00105"></a><a class="code" href="classOsclSocketRequestAO.html#b4">00105</a> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketRequestAO.html#b4">Abort</a>() 10500106 { 10600107 <a class="code" href="classOsclActiveObject.html#a9">Cancel</a>(); 10700108 } 10800109 109<a name="l00110"></a><a class="code" href="classOsclSocketRequestAO.html#b5">00110</a> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketRequestAO.html#b5">RequestDone</a>() 11000111 { 11100112 <a class="code" href="classOsclSocketRequestAO.html#n0">iContainer</a>.<a class="code" href="classOsclSocketMethod.html#a2">Abort</a>(); 11200113 } 11300114 11400115 <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classOsclSocketRequestAO.html#b6">GetSocketError</a>(); 11500116 116<a name="l00117"></a><a class="code" href="classOsclSocketRequestAO.html#b7">00117</a> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketRequestAO.html#b7">DoCancel</a>() 11700118 { 11800119 <a class="code" href="classOsclSocketRequestAO.html#b10">SocketI</a>()-><a class="code" href="classOsclSocketIBase.html#a20">CancelFxn</a>(<a class="code" href="classOsclSocketRequestAO.html#n0">iContainer</a>.<a class="code" href="classOsclSocketMethod.html#m1">iSocketFxn</a>); 11900120 <span class="comment">//we launch the cancellation process here. oscl scheduler</span> 12000121 <span class="comment">//will wait on completion of this AO request, which will</span> 12100122 <span class="comment">//happen in the server thread.</span> 12200123 } 12300124 12400125 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketRequestAO.html#b8">Run</a>(); 12500126 126<a name="l00127"></a><a class="code" href="classOsclSocketRequestAO.html#b9">00127</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketRequestAO.html#b9">Success</a>() 12700128 {} 12800129 129<a name="l00130"></a><a class="code" href="classOsclSocketRequestAO.html#n0">00130</a> <a class="code" href="classOsclSocketMethod.html">OsclSocketMethod</a>& <a class="code" href="classOsclSocketRequestAO.html#n0">iContainer</a>; 130<a name="l00131"></a><a class="code" href="classOsclSocketRequestAO.html#n1">00131</a> int32 <a class="code" href="classOsclSocketRequestAO.html#n1">iSocketError</a>; 131<a name="l00132"></a><a class="code" href="classOsclSocketRequestAO.html#n2">00132</a> <a class="code" href="classSocketRequestParam.html">SocketRequestParam</a> *<a class="code" href="classOsclSocketRequestAO.html#n2">iParam</a>; 132<a name="l00133"></a><a class="code" href="classOsclSocketRequestAO.html#n3">00133</a> uint32 <a class="code" href="classOsclSocketRequestAO.html#n3">iParamSize</a>; 13300134 134<a name="l00135"></a><a class="code" href="classOsclSocketRequestAO.html#b10">00135</a> <a class="code" href="classOsclSocketI.html">OsclSocketI</a> *<a class="code" href="classOsclSocketRequestAO.html#b10">SocketI</a>() 13500136 { 13600137 <span class="keywordflow">return</span> iContainer.<a class="code" href="classOsclSocketMethod.html#m0">iContainer</a>.<a class="code" href="classOsclIPSocketI.html#n4">iSocket</a>; 13700138 } 13800139 139<a name="l00140"></a><a class="code" href="classOsclSocketRequestAO.html#b11">00140</a> <a class="code" href="classOsclSocketObserver.html">OsclSocketObserver</a>* <a class="code" href="classOsclSocketRequestAO.html#b11">SocketObserver</a>() 14000141 { 14100142 <span class="keywordflow">return</span> iContainer.<a class="code" href="classOsclSocketMethod.html#m0">iContainer</a>.<a class="code" href="classOsclIPSocketI.html#n3">iObserver</a>; 14200143 } 143<a name="l00144"></a><a class="code" href="classOsclSocketRequestAO.html#b12">00144</a> uint32 <a class="code" href="classOsclSocketRequestAO.html#b12">Id</a>() 14400145 { 14500146 <span class="keywordflow">return</span> iContainer.<a class="code" href="classOsclSocketMethod.html#m0">iContainer</a>.<a class="code" href="classOsclIPSocketI.html#n2">iId</a>; 14600147 } 147<a name="l00148"></a><a class="code" href="classOsclSocketRequestAO.html#b13">00148</a> <a class="code" href="classOscl__DefAlloc.html">Oscl_DefAlloc</a>& <a class="code" href="classOsclSocketRequestAO.html#b13">Alloc</a>() 14800149 { 14900150 <span class="keywordflow">return</span> iContainer.<a class="code" href="classOsclSocketMethod.html#m0">iContainer</a>.<a class="code" href="classOsclIPSocketI.html#a8">Alloc</a>(); 15000151 } 15100152 152<a name="l00153"></a><a class="code" href="classOsclSocketRequestAO.html#l0">00153</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclSocketI.html">OsclSocketI</a>; 153<a name="l00154"></a><a class="code" href="classOsclSocketRequestAO.html#l1">00154</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclSocketMethod.html">OsclSocketMethod</a>; 154<a name="l00155"></a><a class="code" href="classOsclSocketRequestAO.html#l2">00155</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclSocketRequest.html">OsclSocketRequest</a>; 15500156 }; 15600157 157<a name="l00158"></a><a class="code" href="classOsclSocketMethod.html#a3">00158</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#a3">OsclSocketMethod::AbortAll</a>() 15800159 { 15900160 <a class="code" href="classOsclSocketMethod.html#a2">Abort</a>(); 16000161 <span class="keywordflow">if</span> (iSocketRequestAO) 16100162 <a class="code" href="classOsclSocketMethod.html#n0">iSocketRequestAO</a>-><a class="code" href="classOsclSocketRequestAO.html#b4">Abort</a>(); 16200163 } 16300164 164<a name="l00165"></a><a class="code" href="classOsclSocketMethod.html#a4">00165</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#a4">OsclSocketMethod::CancelMethod</a>() 16500166 { 16600167 <span class="comment">//cancel the timeout if any</span> 16700168 <a class="code" href="classOsclSocketMethod.html#a2">Abort</a>(); 16800169 <span class="comment">//cancel the request to the socket server.</span> 16900170 <a class="code" href="classOsclSocketMethod.html#n0">iSocketRequestAO</a>-><a class="code" href="classOsclSocketRequestAO.html#b7">DoCancel</a>(); 17000171 } 17100172 172<a name="l00173"></a><a class="code" href="classOsclSocketMethod.html#b2">00173</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#b2">OsclSocketMethod::MethodDone</a>() 17300174 { 17400175 <a class="code" href="classOsclSocketMethod.html#n0">iSocketRequestAO</a>-><a class="code" href="classOsclSocketRequestAO.html#b4">Abort</a>(); 17500176 } 17600177 17700178 <span class="preprocessor">#endif</span> 17800179 <span class="preprocessor"></span> 179</pre></div><hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>OSCL API</small> 180<address style="align: left;"><small>Posting Version: OPENCORE_20090310 </small> 181</small></address> 182</body> 183</html> 184