00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CTIMESERVER_H__
00020 #define __CTIMESERVER_H__
00021
00022
00023 #include <e32base.h>
00024 #include "AsyncServer.pan"
00025
00026
00032 class CTimeServer : public CServer2, public MBeating
00033 {
00034 public :
00035
00041 static CTimeServer* NewL();
00042
00048 static CTimeServer* NewLC();
00049
00054 virtual ~CTimeServer();
00055
00056 public:
00057
00065 static TInt ThreadFunction( TAny* aStarted );
00066
00071 void IncrementSessions();
00072
00078 void DecrementSessions();
00079
00084 void WaitForTickL();
00085
00086 public:
00087
00092 void Beat();
00093
00098 void Synchronize();
00099
00100 protected:
00101
00108 TInt RunError( TInt aError );
00109
00110 private:
00111
00117 CTimeServer( TInt aPriority );
00118
00123 void ConstructL();
00124
00125 private:
00126
00133 static void PanicClient( const RMessage2& aMessage,
00134 TTimeServPanic aReason );
00135
00141 static void PanicServer( TTimeServPanic aPanic );
00142
00147 static void ThreadFunctionL();
00148
00153 void SendTimeToSessions();
00154
00155 private:
00156
00164 CSession2* NewSessionL( const TVersion& aVersion,
00165 const RMessage2& aMessage ) const;
00166
00167 private:
00168
00172 TInt iSessionCount;
00173
00178 CHeartbeat* iHeartbeat;
00179 };
00180
00181 #endif // __CTIMESERVER_H__
00182
00183