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