00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __PROCESSSERVERSESSION_H__
00017 #define __PROCESSSERVERSESSION_H__
00018
00019 #include <e32base.h>
00020 #include <e32std.h>
00021 #include "processserver.h"
00022
00023
00024 const TInt KMaxAsyncRequests = 4;
00025 class CProcessServer;
00029 class CProcessServerSession : public CSession2
00030 {
00031 public:
00032 static CProcessServerSession* NewL(CProcessServer& aServer);
00033 ~CProcessServerSession();
00034 void CreateL();
00035 void ServiceL(const RMessage2& aMessage);
00036
00037
00038 private:
00039 CProcessServerSession(CProcessServer& aServer);
00040 void ConstructL();
00041
00042
00043 class CAsyncHandler : public CActive
00044 {
00045 public:
00046 static CAsyncHandler* NewL(CProcessServer& aServer);
00047 ~CAsyncHandler();
00048
00049
00050 TInt ProcessRequest(const RMessage2& aMessage);
00051 private:
00052
00053 CAsyncHandler(CProcessServer& aServer);
00054 void ConstructL();
00055
00056
00057 void RunL();
00058 void DoCancel();
00059
00060 TInt ExecuteFirstRequestInArray();
00061
00065 class TMessage
00066 {
00067 public:
00068 const RMessage2& Message() const;
00069 RMessage2& Message();
00070 private:
00071 RMessage2 iMessage;
00072 };
00073
00074 void Complete(TInt aResult);
00075
00076 private:
00077 RArray<TMessage> iMessageArray;
00078 CProcessServer& iServer;
00079 };
00080
00081 private:
00082 CProcessServer& iServer;
00083 CAsyncHandler* iAsyncRequestHandler;
00084
00085 };
00086
00087 #endif