examples/S60CppExamples/ClientServerAsync/doc/timeserversession_8cpp-source.html

00001 "-//W3C//DTD HTML 4.0 Transitional//EN">
00002 
00003 
00004 
00005 "Content-Type" content="text/html;charset=iso-8859-1">
00006 timeserversession.cpp Source File
00007 "style.css" rel="stylesheet" type="text/css">
00008 
00009 
00010 "0" width="100%" height="8" bgcolor="#eeeeee">
00011 
"100%" height="1">"2" color="#000000" face="Arial, Helvetica, sans-serif"> 00012 S60 5th Edition SDK
Example Applications Guide
00013 00014
class="tabs"> 00015
00020

timeserversession.cpp

class="fragment">
class="fragment">"l00001">00001 class="comment">/*
00021 00002 * ==============================================================================
00022 00003 *  Name        : timeserversession.cpp
00023 00004 *  Part of     : CSAsync
00024 00005 *  Interface   :
00025 00006 *  Description :
00026 00007 *  Version     :
00027 00008 *
00028 00009 *  Copyright (c) 2004-2006 Nokia Corporation.
00029 00010 *  This material, including documentation and any related
00030 00011 *  computer programs, is protected by copyright controlled by
00031 00012 *  Nokia Corporation.
00032 00013 * ==============================================================================
00033 00014 */
00034 "l00015">00015 
00035 "l00016">00016 
00036 "l00017">00017 class="comment">// INCLUDE FILES
00037 "l00018">00018 class="preprocessor">#include <e32math.h>
00038 "l00019">00019 
00039 "l00020">00020 class="preprocessor">#include "ClientServerCommon.h"
00040 "l00021">00021 class="preprocessor">#include "TimeServerSession.h"
00041 "l00022">00022 
00042 "l00023">00023 class="comment">// FUNCTION PROTOTYPES
00043 "l00024">00024 class="keyword">static TInt StartServer();
00044 "l00025">00025 class="keyword">static TInt CreateServerProcess();
00045 "l00026">00026 
00046 "l00027">00027 class="comment">// ========================= MEMBER FUNCTIONS ==================================
00047 "l00028">00028 
00048 "l00029">00029 class="comment">// -----------------------------------------------------------------------------
00049 "l00030">00030 class="comment">// RTimeServerSession::RTimeServerSession()
00050 "l00031">00031 class="comment">// C++ default constructor can NOT contain any code, that might leave.
00051 "l00032">00032 class="comment">// -----------------------------------------------------------------------------
00052 "l00033">00033 class="comment">//
00053 "l00034">class="code" href="class_r_time_server_session.html#d8a4b16d15242f1f1a1e7e2585bf81a6">00034 class="code" href="class_r_time_server_session.html#d8a4b16d15242f1f1a1e7e2585bf81a6">RTimeServerSession::RTimeServerSession()
00054 "l00035">00035 : RSessionBase(), iTimeBuffer( NULL, 0, 0 )
00055 "l00036">00036     {
00056 "l00037">00037     class="comment">// No implementation required
00057 "l00038">00038     }
00058 "l00039">00039 
00059 "l00040">00040 class="comment">// -----------------------------------------------------------------------------
00060 "l00041">00041 class="comment">// RTimeServerSession::Connect()
00061 "l00042">00042 class="comment">// Connects to the server and create a session.
00062 "l00043">00043 class="comment">// -----------------------------------------------------------------------------
00063 "l00044">00044 class="comment">//
00064 "l00045">class="code" href="class_r_time_server_session.html#0a20867f2777f1db7349df290a5e6112">00045 TInt class="code" href="class_r_time_server_session.html#0a20867f2777f1db7349df290a5e6112">RTimeServerSession::Connect()
00065 "l00046">00046     {
00066 "l00047">00047     TInt error = ::StartServer();
00067 "l00048">00048 
00068 "l00049">00049     class="keywordflow">if ( KErrNone == error )
00069 "l00050">00050         {
00070 "l00051">00051         error = CreateSession( KTimeServerName,
00071 "l00052">00052                                class="code" href="class_r_time_server_session.html#30dc24843f42888ea13e6093f6318f37">Version(),
00072 "l00053">00053                                KDefaultMessageSlots );
00073 "l00054">00054         }
00074 "l00055">00055     class="keywordflow">return error;
00075 "l00056">00056     }
00076 "l00057">00057 
00077 "l00058">00058 class="comment">// -----------------------------------------------------------------------------
00078 "l00059">00059 class="comment">// RTimeServerSession::Version()
00079 "l00060">00060 class="comment">// Gets the version number.
00080 "l00061">00061 class="comment">// -----------------------------------------------------------------------------
00081 "l00062">00062 class="comment">//
00082 "l00063">class="code" href="class_r_time_server_session.html#30dc24843f42888ea13e6093f6318f37">00063 TVersion class="code" href="class_r_time_server_session.html#30dc24843f42888ea13e6093f6318f37">RTimeServerSession::Version()class="keyword"> const
00083 "l00064">00064 class="keyword">    {
00084 "l00065">00065     class="keywordflow">return( TVersion( KTimeServMajorVersionNumber,
00085 "l00066">00066                       KTimeServMinorVersionNumber,
00086 "l00067">00067                       KTimeServBuildVersionNumber ) );
00087 "l00068">00068     }
00088 "l00069">00069 
00089 "l00070">00070 class="comment">// -----------------------------------------------------------------------------
00090 "l00071">00071 class="comment">// RTimeServerSession::RequestTime()
00091 "l00072">00072 class="comment">// Issues a request for the time to the server.
00092 "l00073">00073 class="comment">// -----------------------------------------------------------------------------
00093 "l00074">00074 class="comment">//
00094 "l00075">class="code" href="class_r_time_server_session.html#0e65b7c45b7af042183f1c5525cfcc1b">00075 class="keywordtype">void class="code" href="class_r_time_server_session.html#0e65b7c45b7af042183f1c5525cfcc1b">RTimeServerSession::RequestTime( TTime& aTime, TRequestStatus& aStatus )
00095 "l00076">00076     {
00096 "l00077">00077     class="code" href="class_r_time_server_session.html#828f90acd9ecd7a6283a9226001e3921">iTimeBuffer.Set( reinterpret_cast<TUint8*>( &aTime ), class="keyword">sizeof( aTime ),
00097 "l00078">00078                      class="keyword">sizeof( aTime ) );
00098 "l00079">00079     
00099 "l00080">00080     class="comment">// Package message arguments before sending to the server
00100 "l00081">00081     TIpcArgs args( &class="code" href="class_r_time_server_session.html#828f90acd9ecd7a6283a9226001e3921">iTimeBuffer );
00101 "l00082">00082     
00102 "l00083">00083     class="comment">// This call completes immediately, however the server will not
00103 "l00084">00084     class="comment">// complete the request until later, so don't pass any local
00104 "l00085">00085     class="comment">// descriptors as they will be out of scope by the time the server
00105 "l00086">00086     class="comment">// attempts to write to them
00106 "l00087">00087     SendReceive( ETimeServRequestTime, args, aStatus );
00107 "l00088">00088     }
00108 "l00089">00089 
00109 "l00090">00090 class="comment">// -----------------------------------------------------------------------------
00110 "l00091">00091 class="comment">// RTimeServerSession::CancelRequestTime()
00111 "l00092">00092 class="comment">// Cancels any outstanding request to the server.
00112 "l00093">00093 class="comment">// -----------------------------------------------------------------------------
00113 "l00094">class="code" href="class_r_time_server_session.html#52a5f2cddd36f215fea9c11e32ab88b8">00094 class="keywordtype">void class="code" href="class_r_time_server_session.html#52a5f2cddd36f215fea9c11e32ab88b8">RTimeServerSession::CancelRequestTime()class="keyword"> const
00114 "l00095">00095 class="keyword">    {
00115 "l00096">00096     SendReceive( ETimeServCancelRequestTime, TIpcArgs(NULL) );
00116 "l00097">00097     }
00117 "l00098">00098 
00118 "l00099">00099 class="comment">// ============================= OTHER FUNCTIONS ===============================
00119 "l00100">00100 
00120 "l00101">00101 class="comment">// -----------------------------------------------------------------------------
00121 "l00102">00102 class="comment">// StartServer()
00122 "l00103">00103 class="comment">// Starts the server if it is not already running
00123 "l00104">00104 class="comment">// -----------------------------------------------------------------------------
00124 "l00105">00105 class="comment">//
00125 "l00106">00106 class="keyword">static TInt StartServer()
00126 "l00107">00107     {
00127 "l00108">00108     TInt result;
00128 "l00109">00109 
00129 "l00110">00110     TFindServer findTimeServer( KTimeServerName );
00130 "l00111">00111     TFullName name;
00131 "l00112">00112 
00132 "l00113">00113     result = findTimeServer.Next( name );
00133 "l00114">00114     class="keywordflow">if ( result == KErrNone )
00134 "l00115">00115         {
00135 "l00116">00116         class="comment">// Server already running
00136 "l00117">00117         class="keywordflow">return KErrNone;
00137 "l00118">00118         }
00138 "l00119">00119 
00139 "l00120">00120     RSemaphore semaphore;
00140 "l00121">00121     result = semaphore.CreateGlobal( KTimeServerSemaphoreName, 0 );
00141 "l00122">00122     class="keywordflow">if ( result != KErrNone )
00142 "l00123">00123         {
00143 "l00124">00124         class="keywordflow">return  result;
00144 "l00125">00125         }
00145 "l00126">00126 
00146 "l00127">00127     result = CreateServerProcess();
00147 "l00128">00128     class="keywordflow">if ( result != KErrNone )
00148 "l00129">00129         {
00149 "l00130">00130         class="keywordflow">return  result;
00150 "l00131">00131         }
00151 "l00132">00132 
00152 "l00133">00133     semaphore.Wait();
00153 "l00134">00134     semaphore.Close();
00154 "l00135">00135 
00155 "l00136">00136     class="keywordflow">return KErrNone;
00156 "l00137">00137     }
00157 "l00138">00138 
00158 "l00139">00139 class="comment">// -----------------------------------------------------------------------------
00159 "l00140">00140 class="comment">// CreateServerProcess()
00160 "l00141">00141 class="comment">// Creates a server process
00161 "l00142">00142 class="comment">// -----------------------------------------------------------------------------
00162 "l00143">00143 class="comment">//
00163 "l00144">00144 class="keyword">static TInt CreateServerProcess()
00164 "l00145">00145     {
00165 "l00146">00146     TInt result;
00166 "l00147">00147 
00167 "l00148">00148     class="keyword">const TUidType serverUid( KNullUid, KNullUid, KServerUid3 );
00168 "l00149">00149 
00169 "l00150">00150     RProcess server;
00170 "l00151">00151 
00171 "l00152">00152     result = server.Create( KTimeServerFilename, KNullDesC, serverUid );
00172 "l00153">00153 
00173 "l00154">00154     class="keywordflow">if ( result != KErrNone )
00174 "l00155">00155         {
00175 "l00156">00156         class="keywordflow">return  result;
00176 "l00157">00157         }
00177 "l00158">00158 
00178 "l00159">00159     server.Resume();
00179 "l00160">00160     server.Close();
00180 "l00161">00161 
00181 "l00162">00162     class="keywordflow">return  KErrNone;
00182 "l00163">00163     }
00183 "l00164">00164 
00184 "l00165">00165 
00185 "l00166">00166 class="comment">// End of File
00186 

00187 00188 00189 style="x-cell-content-align: top;00190 width: 100%;00191 border-spacing: 0px;00192 border-spacing: 0px;"00193 cellspacing=0 00194 width=100%> 00195 "width: 50%;"> 00196 "width: 50%;"> 00197 00198 "x-cell-content-align: top;"00199 valign=top> 00200 00209 00231
"width: 50%; 00201 padding-right: 10px; 00202 padding-left: 10px; 00203 border-right-style: None; 00204 border-left-style: None; 00205 border-top-style: None; 00206 border-bottom-style: None;" 00207 width=50%> 00208

"font-family: Arial;">"font-size: smaller;"> Nokia 2009

"width: 50%; 00210 padding-right: 10px; 00211 padding-left: 10px; 00212 border-top-style: None; 00213 border-bottom-style: None; 00214 border-right-style: None;" 00215 width=50%> 00216

"text-align: right; margin-right: -4px;" 00217 align=right>"font-weight: bold;">"#Top" 00218 title="Back to top">00219 src="top.gif" 00220 x-maintain-ratio=TRUE 00221 alt="Back to top" 00222 style="border: none; 00223 width: 18px; 00224 height: 15px; 00225 float: none; 00226 border-style: none; 00227 border-style: none;" 00228 width=18 00229 height=15 00230 border=0>

00232 00233 00234

Generated by  doxygen 1.6.2