blob: 21dc3fb2242c761d51caaf0939447b130a2df5ae [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_stats.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_stats.h</h1><a href="oscl__socket__stats_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001
00002
00003 <span class="preprocessor">#ifndef OSCL_SOCKET_STATS_H_INCLUDED</span>
00004 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_SOCKET_STATS_H_INCLUDED</span>
00005 <span class="preprocessor"></span>
00009 <span class="preprocessor">#include "<a class="code" href="oscl__base_8h.html">oscl_base.h</a>"</span>
00010 <span class="preprocessor">#include "<a class="code" href="oscl__vector_8h.html">oscl_vector.h</a>"</span>
00011 <span class="preprocessor">#include "<a class="code" href="oscl__mem_8h.html">oscl_mem.h</a>"</span>
00012 <span class="preprocessor">#include "<a class="code" href="oscl__mutex_8h.html">oscl_mutex.h</a>"</span>
00013
<a name="l00014"></a><a class="code" href="oscl__socket__stats_8h.html#a23">00014</a> <span class="keyword">enum</span> <a class="code" href="oscl__socket__stats_8h.html#a23">TOsclSocketStatEvent</a>
00015 {
00016 <span class="comment">//Request/Method AO events</span>
00017 <a class="code" href="oscl__socket__stats_8h.html#a23a2">EOsclSocket_RequestAO_Success</a>
00018 , <a class="code" href="oscl__socket__stats_8h.html#a23a3">EOsclSocket_RequestAO_Canceled</a>
00019 , <a class="code" href="oscl__socket__stats_8h.html#a23a4">EOsclSocket_RequestAO_Error</a>
00020 , <a class="code" href="oscl__socket__stats_8h.html#a23a5">EOsclSocket_RequestAO_Timeout</a>
00021 <span class="comment">//Server events</span>
00022 , <a class="code" href="oscl__socket__stats_8h.html#a23a6">EOsclSocket_ServRequestIssued</a>
00023 , <a class="code" href="oscl__socket__stats_8h.html#a23a7">EOsclSocket_ServPoll</a>
00024 , <a class="code" href="oscl__socket__stats_8h.html#a23a8">EOsclSocket_OS</a>
00025 , <a class="code" href="oscl__socket__stats_8h.html#a23a9">EOsclSocket_Readable</a>
00026 , <a class="code" href="oscl__socket__stats_8h.html#a23a10">EOsclSocket_Writable</a>
00027 , <a class="code" href="oscl__socket__stats_8h.html#a23a11">EOsclSocket_Except</a>
00028 , <a class="code" href="oscl__socket__stats_8h.html#a23a12">EOsclSocket_DataRecv</a>
00029 , <a class="code" href="oscl__socket__stats_8h.html#a23a13">EOsclSocket_DataSent</a>
00030 , <a class="code" href="oscl__socket__stats_8h.html#a23a14">EOsclSocket_ServRequestComplete</a>
00031 , <a class="code" href="oscl__socket__stats_8h.html#a23a15">EOsclSocket_ServRequestCancelIssued</a>
00032 <span class="comment">//loop socket events</span>
00033 , <a class="code" href="oscl__socket__stats_8h.html#a23a16">EOsclSocketServ_LoopsockOk</a>
00034 , <a class="code" href="oscl__socket__stats_8h.html#a23a17">EOsclSocketServ_LoopsockError</a>
00035 };
00036 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> TPVSocketStatStr[] =
00037 {
00038 <span class="comment">//Request/Method AO events</span>
00039 <span class="stringliteral">"AO_Success"</span>
00040 , <span class="stringliteral">"AO_Canceled"</span>
00041 , <span class="stringliteral">"AO_Error"</span>
00042 , <span class="stringliteral">"AO_Timeout"</span>
00043 <span class="comment">//Server events</span>
00044 , <span class="stringliteral">"Serv_ReqIssued"</span>
00045 , <span class="stringliteral">"Serv_Poll"</span>
00046 , <span class="stringliteral">"Serv_OS_Op"</span>
00047 , <span class="stringliteral">"Serv_Readable"</span>
00048 , <span class="stringliteral">"Serv_Writeable"</span>
00049 , <span class="stringliteral">"Serv_Except!"</span>
00050 , <span class="stringliteral">"Serv_DataRecv'd"</span>
00051 , <span class="stringliteral">"Serv_DataSent"</span>
00052 , <span class="stringliteral">"Serv_ReqComplete"</span>
00053 , <span class="stringliteral">"Serv_ReqCancel"</span>
00054 <span class="comment">//loop socket events</span>
00055 , <span class="stringliteral">"Loopsock_OK"</span>
00056 , <span class="stringliteral">"Loopsock_Err"</span>
00057 } ;
00058
<a name="l00059"></a><a class="code" href="oscl__socket__stats_8h.html#a24">00059</a> <span class="keyword">enum</span> <a class="code" href="oscl__socket__stats_8h.html#a24">TOsclSocketServStatEvent</a>
00060 {
00061 <span class="comment">//select loop events</span>
00062 <a class="code" href="oscl__socket__stats_8h.html#a24a18">EOsclSocketServ_SelectNoActivity</a> = 0
00063 , <a class="code" href="oscl__socket__stats_8h.html#a24a19">EOsclSocketServ_SelectActivity</a>
00064 , <a class="code" href="oscl__socket__stats_8h.html#a24a20">EOsclSocketServ_SelectRescheduleAsap</a>
00065 , <a class="code" href="oscl__socket__stats_8h.html#a24a21">EOsclSocketServ_SelectReschedulePoll</a>
00066 , <a class="code" href="oscl__socket__stats_8h.html#a24a22">EOsclSocketServ_LastEvent</a>
00067 };
00068 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> TPVSocketServStatStr[] =
00069 {
00070 <span class="stringliteral">"Select_No"</span>
00071 , <span class="stringliteral">"Select_Yes"</span>
00072 , <span class="stringliteral">"Select_Resched_Asap"</span>
00073 , <span class="stringliteral">"Select_Resched_Poll"</span>
00074 } ;
00075
00076 <span class="preprocessor">#include "<a class="code" href="oscl__socket__tuneables_8h.html">oscl_socket_tuneables.h</a>"</span>
00077 <span class="preprocessor">#if(PV_OSCL_SOCKET_STATS_LOGGING)</span>
00078 <span class="preprocessor"></span>
00079 <span class="keyword">class </span><a class="code" href="classPVLogger.html">PVLogger</a>;
00080 <span class="keyword">class </span>OsclSocketStatEventEntry
00081 {
00082 <span class="keyword">public</span>:
00083 OsclSocketStatEventEntry(<a class="code" href="oscl__socket__stats_8h.html#a23">TOsclSocketStatEvent</a> aEvent, uint32 aTime, int32 aParam)
00084 : iEvent(aEvent)
00085 , iTicks(aTime)
00086 , iParam(aParam)
00087 {}
00088 <a class="code" href="oscl__socket__stats_8h.html#a23">TOsclSocketStatEvent</a> iEvent;
00089 uint32 iTicks;
00090 int32 iParam;
00091 };
00092
00093 <span class="preprocessor">#include "<a class="code" href="oscl__socket__types_8h.html">oscl_socket_types.h</a>"</span>
00094
00095 <span class="preprocessor">#define OsclSocketStats_NUM_ACTIVE_REQUESTS EPVSocket_Last</span>
00096 <span class="preprocessor"></span>
00097 <span class="comment">//Define the maximum number of polling events that will be logged.</span>
00098 <span class="comment">//Additional poll events will be counted but not logged individually.</span>
00099 <span class="preprocessor">#define OsclSocketStats_MAX_POLL_EVENTS 100</span>
00100 <span class="preprocessor"></span>
00101 <span class="keyword">class </span>OsclSocketStats
00102 {
00103 <span class="keyword">public</span>:
00104 OsclSocketStats();
00105 ~OsclSocketStats();
00106 <span class="keywordtype">void</span> ShowTuneables();
00107 <span class="keywordtype">void</span> Add(<a class="code" href="oscl__socket__types_8h.html#a19">TPVSocketFxn</a>, <a class="code" href="oscl__socket__stats_8h.html#a23">TOsclSocketStatEvent</a>, int32 aParam = (-1));
00108 <span class="keywordtype">void</span> Log(<a class="code" href="oscl__socket__types_8h.html#a19">TPVSocketFxn</a>);
00109 <span class="keywordtype">void</span> Log();
00110 <span class="keywordtype">void</span> Clear(<a class="code" href="oscl__socket__types_8h.html#a19">TPVSocketFxn</a>);
00111 <span class="keywordtype">void</span> Construct(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* aContainer, <a class="code" href="group__osclbase.html#a25">OsclAny</a>*aServ);
00112 <span class="keywordtype">void</span> LogAndDump();
00113 <span class="keyword">private</span>:
00114 <a class="code" href="classOscl__Vector.html">Oscl_Vector&lt;OsclSocketStatEventEntry, OsclMemAllocator&gt;</a> iEvents[OsclSocketStats_NUM_ACTIVE_REQUESTS];
00115 <a class="code" href="classOscl__Vector.html">Oscl_Vector&lt;OsclSocketStatEventEntry, OsclMemAllocator&gt;</a> iPollEvents[OsclSocketStats_NUM_ACTIVE_REQUESTS];
00116 int32 iExcessPollEvents[OsclSocketStats_NUM_ACTIVE_REQUESTS];
00117 int32 iLastCompletionTime[OsclSocketStats_NUM_ACTIVE_REQUESTS];
00118 <a class="code" href="classOsclThreadLock.html">OsclThreadLock</a> iLock;
00119 <span class="keywordtype">char</span>* iLogStr;
00120 <a class="code" href="classPVLogger.html">PVLogger</a>* iLogger;
00121 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* iSock;
00122 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* iServ;
00123 };
00124
00125 <span class="keyword">class </span>OsclSocketServStats
00126 {
00127 <span class="keyword">public</span>:
00128 OsclSocketServStats();
00129 ~OsclSocketServStats();
00130 <span class="keywordtype">void</span> Add(<a class="code" href="oscl__socket__stats_8h.html#a24">TOsclSocketServStatEvent</a>);
00131 <span class="keywordtype">void</span> Construct(<a class="code" href="group__osclbase.html#a25">OsclAny</a>*aServ);
00132 <span class="keywordtype">void</span> LogAndDump();
00133 <span class="keyword">private</span>:
00134 <span class="keywordtype">void</span> Log(<a class="code" href="oscl__socket__stats_8h.html#a24">TOsclSocketServStatEvent</a>);
00135 <span class="keywordtype">void</span> Clear();
00136 <span class="keywordtype">void</span> ShowTuneables();
00137 uint32 iEvents[<a class="code" href="oscl__socket__stats_8h.html#a24a22">EOsclSocketServ_LastEvent</a>];
00138 <a class="code" href="classPVLogger.html">PVLogger</a>* iLogger;
00139 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* iServ;
00140 };
00141
00142 <span class="preprocessor">#endif</span>
00143 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00144 <span class="preprocessor"></span>
00145
00146
</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>