examples/Base/IPC/AdvancedClientServerExample/ProcessServer/inc/processserversession.h

00001 /*
00002 Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
00003 
00004 Redistribution and use in source and binary forms, with or without
00005 modification, are permitted provided that the following conditions are met:
00006 
00007 * Redistributions of source code must retain the above copyright notice, this
00008   list of conditions and the following disclaimer.
00009 * Redistributions in binary form must reproduce the above copyright notice,
00010   this list of conditions and the following disclaimer in the documentation
00011   and/or other materials provided with the distribution.
00012 * Neither the name of Nokia Corporation nor the names of its contributors
00013   may be used to endorse or promote products derived from this software
00014   without specific prior written permission.
00015 
00016 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00017 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00018 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00019 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00020 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00021 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00022 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00023 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00024 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00025 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00026 
00027 Description:  
00028 */
00029 
00030 
00031 #ifndef __PROCESSSERVERSESSION_H__
00032 #define __PROCESSSERVERSESSION_H__
00033 
00034 #include <e32base.h>
00035 #include <e32std.h>
00036 #include "processserver.h"
00037 
00038 
00039 const TInt KMaxAsyncRequests = 4;
00040 class CProcessServer;
00044 class CProcessServerSession : public CSession2
00045         {
00046 public:
00047         static CProcessServerSession* NewL(CProcessServer& aServer);
00048         ~CProcessServerSession();
00049         void CreateL();// Create a server-side client session
00050         void ServiceL(const RMessage2& aMessage);// Handles the client request
00051         
00052         
00053 private:
00054         CProcessServerSession(CProcessServer& aServer);
00055         void ConstructL();
00056         
00057         // Active object class for asynchronous requests
00058         class CAsyncHandler : public CActive 
00059                 {
00060         public:
00061                 static CAsyncHandler* NewL(CProcessServer& aServer);
00062                 ~CAsyncHandler();
00063                 
00064                  //Store async request in message array
00065                 TInt ProcessRequest(const RMessage2& aMessage);
00066         private:
00067 
00068                 CAsyncHandler(CProcessServer& aServer);
00069                 void ConstructL();
00070                 
00071                 // CActive implementation
00072                 void RunL();
00073                 void DoCancel();
00074                         
00075                 TInt ExecuteFirstRequestInArray();// Execute messages in array
00076                 
00080                 class TMessage
00081                         {
00082                 public:
00083                         const RMessage2& Message() const;       // getter
00084                         RMessage2& Message();                           // setter
00085                 private:
00086                         RMessage2 iMessage;
00087                         };
00088                 
00089                 void Complete(TInt aResult);
00090                 
00091         private:
00092                 RArray<TMessage>                iMessageArray;
00093                 CProcessServer&                 iServer;
00094                 };
00095         
00096 private:
00097         CProcessServer& iServer;
00098         CAsyncHandler*  iAsyncRequestHandler;
00099         
00100         };
00101 
00102 #endif

Generated by  doxygen 1.6.2