00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "ComplexClientAndServer.h"
00017 #include "ComplexServer.h"
00018 #include <e32svr.h>
00019 #include <e32uid.h>
00020
00021
00022
00023
00024
00025
00026
00030 TInt CCountServer::ThreadFunction(TAny* )
00031 {
00032
00033 TInt err;
00034
00035
00036 CTrapCleanup* cleanup = CTrapCleanup::New();
00037 if (cleanup == NULL)
00038 {
00039 PanicServer(ECreateTrapCleanup);
00040 }
00041
00042
00043 CActiveScheduler* pScheduler=new CActiveScheduler;
00044 __ASSERT_ALWAYS(pScheduler,PanicServer(EMainSchedulerError));
00045
00046 CActiveScheduler::Install(pScheduler);
00047
00048
00049 CCountServer* pServer = NULL;
00050 TRAP(err,pServer = CCountServer::NewL(EPriorityStandard));
00051 __ASSERT_ALWAYS(!err,CCountServer::PanicServer(ESvrCreateServer));
00052
00053
00054 err = pServer->Start(KCountServerName);
00055 if (err != KErrNone)
00056 {
00057 CCountServer::PanicServer(ESvrStartServer);
00058 }
00059
00060
00061
00062 RThread::Rendezvous(KErrNone);
00063
00064
00065 CActiveScheduler::Start();
00066
00067
00068 delete pServer;
00069 delete pScheduler;
00070 delete cleanup;
00071
00072
00073 return KErrNone;
00074 }
00075
00076
00084 EXPORT_C TInt StartThread(RThread& aServerThread)
00085 {
00086 TInt res=KErrNone;
00087
00088
00089
00090 TFindServer findCountServer(KCountServerName);
00091 TFullName name;
00092
00093
00094 if (findCountServer.Next(name)!=KErrNone)
00095 {
00096
00097 res=aServerThread.Create(KCountServerName,
00098 CCountServer::ThreadFunction,
00099 KDefaultStackSize,
00100 KDefaultHeapSize,
00101 KDefaultHeapSize,
00102 NULL
00103 );
00104
00105
00106 if (res==KErrNone)
00107 {
00108 TRequestStatus rendezvousStatus;
00109
00110 aServerThread.SetPriority(EPriorityNormal);
00111 aServerThread.Rendezvous(rendezvousStatus);
00112 aServerThread.Resume();
00113 User::WaitForRequest(rendezvousStatus);
00114 }
00115
00116
00117 else
00118 {
00119 aServerThread.Close();
00120 }
00121 }
00122 return res;
00123 }