blob: 19cff07739169f1e840fc59cddb93bd80699ab38 [file] [log] [blame]
<!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_method.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_method.h</h1><a href="oscl__socket__method_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001
00002 <span class="preprocessor">#ifndef OSCL_SOCKET_METHOD_H_INCLUDED</span>
00003 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_SOCKET_METHOD_H_INCLUDED</span>
00004 <span class="preprocessor"></span>
00005 <span class="preprocessor">#include "<a class="code" href="osclconfig__io_8h.html">osclconfig_io.h</a>"</span>
00006 <span class="preprocessor">#include "<a class="code" href="oscl__socket__types_8h.html">oscl_socket_types.h</a>"</span>
00007 <span class="comment">//#include "oscl_socket_serv_imp.h"</span>
00008 <span class="preprocessor">#include "<a class="code" href="oscl__scheduler__ao_8h.html">oscl_scheduler_ao.h</a>"</span>
00009 <span class="preprocessor">#include "<a class="code" href="oscl__socket__request_8h.html">oscl_socket_request.h</a>"</span>
00010 <span class="preprocessor">#include "<a class="code" href="pvlogger_8h.html">pvlogger.h</a>"</span>
00011 <span class="preprocessor">#include "<a class="code" href="oscl__socket__tuneables_8h.html">oscl_socket_tuneables.h</a>"</span>
00012 <span class="preprocessor">#include "<a class="code" href="oscl__ip__socket_8h.html">oscl_ip_socket.h</a>"</span>
00013
<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>
00015 <span class="preprocessor"></span>
00016 <span class="keyword">class </span><a class="code" href="classOsclSocketI.html">OsclSocketI</a>;
00017 <span class="keyword">class </span><a class="code" href="classOsclSocketObserver.html">OsclSocketObserver</a>;
00018 <span class="keyword">class </span><a class="code" href="classOsclSocketRequestAO.html">OsclSocketRequestAO</a>;
00019 <span class="keyword">class </span><a class="code" href="classOsclIPSocketI.html">OsclIPSocketI</a>;
00020
<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>
00027 {
00028 <span class="keyword">public</span>:
<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>&amp; 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)
00030 : <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)
00031 , <a class="code" href="classOsclSocketMethod.html#m0">iContainer</a>(aContainer)
00032 , <a class="code" href="classOsclSocketMethod.html#m1">iSocketFxn</a>(fxn)
00033 , <a class="code" href="classOsclSocketMethod.html#n0">iSocketRequestAO</a>(<a class="code" href="group__osclbase.html#a81">NULL</a>)
00034 {
00035 }
<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>()
00037 {}
00038
<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>()
00040 {
00041 <a class="code" href="classOsclTimerObject.html#a8">Cancel</a>();
00042 }
00043
00044 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#a3">AbortAll</a>();
00045
00046 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#a4">CancelMethod</a>();
00047
<a name="l00048"></a><a class="code" href="classOsclSocketMethod.html#m0">00048</a> <a class="code" href="classOsclIPSocketI.html">OsclIPSocketI</a>&amp; <a class="code" href="classOsclSocketMethod.html#m0">iContainer</a>;
00049
<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>;
00051
<a name="l00052"></a><a class="code" href="classOsclSocketMethod.html#a5">00052</a> <a class="code" href="classOscl__DefAlloc.html">Oscl_DefAlloc</a>&amp; <a class="code" href="classOsclSocketMethod.html#a5">Alloc</a>()
00053 {
00054 <span class="keywordflow">return</span> iContainer.<a class="code" href="classOsclIPSocketI.html#a8">Alloc</a>();
00055 }
00056
00057 <span class="keyword">protected</span>:
<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)
00059 {
00060 <span class="keywordflow">if</span> (!aAO)
00061 <a class="code" href="classOsclError.html#d7">OsclError::Leave</a>(<a class="code" href="group__osclerror.html#a12">OsclErrGeneral</a>);
00062 <a class="code" href="classOsclSocketMethod.html#n0">iSocketRequestAO</a> = aAO;
00063 }
00064
00065 <span class="keywordtype">bool</span> <a class="code" href="classOsclSocketMethod.html#b1">StartMethod</a>(int32 aTimeoutMsec);
00066
00067 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#b2">MethodDone</a>();
00068
00069 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketMethod.html#b3">Run</a>();
00070
<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>;
00072 };
00073
00074 <span class="preprocessor">#include "<a class="code" href="oscl__socket__imp_8h.html">oscl_socket_imp.h</a>"</span>
00075
<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>
00081 {
00082 <span class="keyword">public</span>:
<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>()
00084 {
00085 }
00086 <span class="keyword">protected</span>:
00087
<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>&amp; aContainer, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)
00089 : <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)
00090 , <a class="code" href="classOsclSocketRequestAO.html#n0">iContainer</a>(aContainer)
00091 , <a class="code" href="classOsclSocketRequestAO.html#n1">iSocketError</a>(0)
00092 , <a class="code" href="classOsclSocketRequestAO.html#n2">iParam</a>(<a class="code" href="group__osclbase.html#a81">NULL</a>)
00093 , <a class="code" href="classOsclSocketRequestAO.html#n3">iParamSize</a>(0)
00094 {}
00095
<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>()
00097 {
00098 <a class="code" href="classOsclSocketRequestAO.html#b3">CleanupParam</a>(<span class="keyword">true</span>);
00099 }
00100
00101 <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) ;
00102 <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>);
00103
00104
<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>()
00106 {
00107 <a class="code" href="classOsclActiveObject.html#a9">Cancel</a>();
00108 }
00109
<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>()
00111 {
00112 <a class="code" href="classOsclSocketRequestAO.html#n0">iContainer</a>.<a class="code" href="classOsclSocketMethod.html#a2">Abort</a>();
00113 }
00114
00115 <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classOsclSocketRequestAO.html#b6">GetSocketError</a>();
00116
<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>()
00118 {
00119 <a class="code" href="classOsclSocketRequestAO.html#b10">SocketI</a>()-&gt;<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>);
00120 <span class="comment">//we launch the cancellation process here. oscl scheduler</span>
00121 <span class="comment">//will wait on completion of this AO request, which will</span>
00122 <span class="comment">//happen in the server thread.</span>
00123 }
00124
00125 <span class="keywordtype">void</span> <a class="code" href="classOsclSocketRequestAO.html#b8">Run</a>();
00126
<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>()
00128 {}
00129
<a name="l00130"></a><a class="code" href="classOsclSocketRequestAO.html#n0">00130</a> <a class="code" href="classOsclSocketMethod.html">OsclSocketMethod</a>&amp; <a class="code" href="classOsclSocketRequestAO.html#n0">iContainer</a>;
<a name="l00131"></a><a class="code" href="classOsclSocketRequestAO.html#n1">00131</a> int32 <a class="code" href="classOsclSocketRequestAO.html#n1">iSocketError</a>;
<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>;
<a name="l00133"></a><a class="code" href="classOsclSocketRequestAO.html#n3">00133</a> uint32 <a class="code" href="classOsclSocketRequestAO.html#n3">iParamSize</a>;
00134
<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>()
00136 {
00137 <span class="keywordflow">return</span> iContainer.<a class="code" href="classOsclSocketMethod.html#m0">iContainer</a>.<a class="code" href="classOsclIPSocketI.html#n4">iSocket</a>;
00138 }
00139
<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>()
00141 {
00142 <span class="keywordflow">return</span> iContainer.<a class="code" href="classOsclSocketMethod.html#m0">iContainer</a>.<a class="code" href="classOsclIPSocketI.html#n3">iObserver</a>;
00143 }
<a name="l00144"></a><a class="code" href="classOsclSocketRequestAO.html#b12">00144</a> uint32 <a class="code" href="classOsclSocketRequestAO.html#b12">Id</a>()
00145 {
00146 <span class="keywordflow">return</span> iContainer.<a class="code" href="classOsclSocketMethod.html#m0">iContainer</a>.<a class="code" href="classOsclIPSocketI.html#n2">iId</a>;
00147 }
<a name="l00148"></a><a class="code" href="classOsclSocketRequestAO.html#b13">00148</a> <a class="code" href="classOscl__DefAlloc.html">Oscl_DefAlloc</a>&amp; <a class="code" href="classOsclSocketRequestAO.html#b13">Alloc</a>()
00149 {
00150 <span class="keywordflow">return</span> iContainer.<a class="code" href="classOsclSocketMethod.html#m0">iContainer</a>.<a class="code" href="classOsclIPSocketI.html#a8">Alloc</a>();
00151 }
00152
<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>;
<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>;
<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>;
00156 };
00157
<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>()
00159 {
00160 <a class="code" href="classOsclSocketMethod.html#a2">Abort</a>();
00161 <span class="keywordflow">if</span> (iSocketRequestAO)
00162 <a class="code" href="classOsclSocketMethod.html#n0">iSocketRequestAO</a>-&gt;<a class="code" href="classOsclSocketRequestAO.html#b4">Abort</a>();
00163 }
00164
<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>()
00166 {
00167 <span class="comment">//cancel the timeout if any</span>
00168 <a class="code" href="classOsclSocketMethod.html#a2">Abort</a>();
00169 <span class="comment">//cancel the request to the socket server.</span>
00170 <a class="code" href="classOsclSocketMethod.html#n0">iSocketRequestAO</a>-&gt;<a class="code" href="classOsclSocketRequestAO.html#b7">DoCancel</a>();
00171 }
00172
<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>()
00174 {
00175 <a class="code" href="classOsclSocketMethod.html#n0">iSocketRequestAO</a>-&gt;<a class="code" href="classOsclSocketRequestAO.html#b4">Abort</a>();
00176 }
00177
00178 <span class="preprocessor">#endif</span>
00179 <span class="preprocessor"></span>
</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>