S60 5th Edition SDK Example Applications Guide |
#include <timesession.h>
Inheritance diagram for CTimeServerSession:
Definition at line 31 of file timesession.h.
Public Member Functions | |
virtual | ~CTimeServerSession () |
void | SendTimeToClient () |
void | ServiceL (const RMessage2 &aMessage) |
Static Public Member Functions | |
static CTimeServerSession * | NewL (CTimeServer &aServer) |
static CTimeServerSession * | NewLC (CTimeServer &aServer) |
Private Member Functions | |
CTimeServerSession (CTimeServer &aServer) | |
void | ConstructL () |
void | PanicClient (const RMessagePtr2 &aMessage, TInt aPanic) const |
void | RequestTimeL (const RMessage2 &aMessage) |
Private Attributes | |
TBool | iWaitingForTick |
RMessage2 | iMessage |
CTimeServer & | iServer |
|
~CTimeServerSession. Destructor. Definition at line 77 of file timesession.cpp. References CTimeServer::DecrementSessions(), and iServer. 00078 { 00079 iServer.DecrementSessions(); 00080 }
|
|
CTimeServerSession. C++ default constructor.
Definition at line 66 of file timesession.cpp. Referenced by NewLC(). 00067 : iServer( aServer ) 00068 { 00069 // Implementation not required 00070 }
|
|
NewL. Two-phased constructor.
Definition at line 31 of file timesession.cpp. References NewLC(). Referenced by CTimeServer::NewSessionL(). 00032 { 00033 CTimeServerSession* self = CTimeServerSession::NewLC( aServer ); 00034 CleanupStack::Pop( self ); 00035 return self; 00036 }
|
|
NewLC. Two-phased constructor.
Definition at line 43 of file timesession.cpp. References CTimeServerSession(). Referenced by NewL(). 00044 { 00045 CTimeServerSession* self = new ( ELeave ) CTimeServerSession( aServer ); 00046 CleanupStack::PushL( self ); 00047 self->ConstructL(); 00048 return self; 00049 }
|
|
SendTimeToClient. Call from Beat() and Synchronize(). Sends current time back to requesting client. Definition at line 138 of file timesession.cpp. References iMessage, iWaitingForTick, and PanicClient(). Referenced by CTimeServer::SendTimeToSessions(). 00139 { 00140 if ( iWaitingForTick ) 00141 { 00142 iWaitingForTick = EFalse; 00143 00144 // Get current time to return to client 00145 TTime time; 00146 time.HomeTime(); 00147 00148 // Create a descriptor which points to the 'time' structure 00149 TPtr8 ptr( reinterpret_cast<TUint8*>( &time ), sizeof( time ), 00150 sizeof( time ) ); 00151 00152 // Write the 'time' data back to the client 00153 TRAPD( res, iMessage.WriteL( 0, ptr, 0 ) ); 00154 00155 if ( res != KErrNone ) 00156 { 00157 PanicClient( iMessage, EBadDescriptor ); 00158 } 00159 00160 iMessage.Complete( ETimeServRequestTimeComplete ); 00161 } 00162 }
|
|
From CSession, ServiceL. Service request from client.
Definition at line 87 of file timesession.cpp. References iMessage, iWaitingForTick, PanicClient(), and RequestTimeL(). 00088 { 00089 switch ( aMessage.Function() ) 00090 { 00091 case ETimeServRequestTime: 00092 RequestTimeL( aMessage ); 00093 break; 00094 00095 case ETimeServCancelRequestTime: 00096 if ( iWaitingForTick ) 00097 { 00098 iMessage.Complete( KErrCancel ); 00099 iWaitingForTick = EFalse; 00100 } 00101 aMessage.Complete( KErrNone ); 00102 break; 00103 00104 default: 00105 PanicClient( aMessage, EBadRequest ); 00106 } 00107 }
|
|
ConstructL. 2nd phase constructor. Definition at line 56 of file timesession.cpp. References CTimeServer::IncrementSessions(), and iServer. 00057 { 00058 iServer.IncrementSessions(); 00059 }
|
|
PanicClient. Causes the client thread to panic.
Definition at line 169 of file timesession.cpp. Referenced by RequestTimeL(), SendTimeToClient(), and ServiceL(). 00171 { 00172 aMessage.Panic( KCSAsyncServer, aPanic ); // Note: this panics the client thread, 00173 // not server 00174 }
|
|
RequestTimeL. Called as a result of the client requesting the time. Starts the 'get time' operation.
Definition at line 114 of file timesession.cpp. References iMessage, iServer, iWaitingForTick, PanicClient(), and CTimeServer::WaitForTickL(). Referenced by ServiceL(). 00115 { 00116 if ( iWaitingForTick ) 00117 { 00118 // We're already busy 00119 PanicClient( aMessage, EReqAlreadyPending ); 00120 } 00121 else 00122 { 00123 // Keep a copy of message - for later use 00124 iMessage = aMessage ; 00125 00126 // Start the work performed by the server 00127 // (just a wait for new second in this case) 00128 iServer.WaitForTickL(); 00129 iWaitingForTick = ETrue; 00130 } 00131 }
|
|
iWaitingForTick, state of tick. Definition at line 115 of file timesession.h. Referenced by RequestTimeL(), SendTimeToClient(), and ServiceL(). |
|
iMessage, the message exchange data with the server. Definition at line 120 of file timesession.h. Referenced by RequestTimeL(), SendTimeToClient(), and ServiceL(). |
|
iServer, reference to the server. Definition at line 125 of file timesession.h. Referenced by ConstructL(), RequestTimeL(), and ~CTimeServerSession(). |
© Nokia 2009 |