examples/Base/IPC/ClientServer/Simple/SimpleServer.h

00001 /*
00002 Copyright (c) 2000-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 #include <e32base.h>
00032 
00033 // needed for creating server thread.
00034 const TUint KDefaultHeapSize=0x10000;
00035 
00036 // reasons for server panic
00037 enum TCountServPanic
00038         {
00039         EBadRequest = 1,
00040         EBadDescriptor,
00041         EMainSchedulerError,
00042         ESvrCreateServer,
00043         ESvrStartServer,
00044         ECreateTrapCleanup,
00045         ENotImplementedYet,
00046         };
00047 
00048 
00049 //**********************************
00050 //CCountServServer
00051 //**********************************
00058 class CCountServServer : public CServer2
00059         {
00060 public:
00061           // Creates a new session with the server; the function
00062           // implements the pure virtutal function 
00063           // defined in class CServer2
00064         CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const;
00065 public :
00066       // The thread function executed by the server
00067     static TInt ThreadFunction(TAny* aStarted);
00068       // Function to panic the server
00069     static void PanicServer(TCountServPanic aPanic);
00070 
00071 protected:
00072         CCountServServer(CActive::TPriority aActiveObjectPriority);
00073         };
00074 
00075 
00076 //**********************************
00077 //CCountServSession
00078 //**********************************
00083 class CCountServSession : public CSession2
00084         {
00085 public:
00086         CCountServSession();
00087 
00088           //service request
00089         void ServiceL(const RMessage2& aMessage);
00090         void DispatchMessageL(const RMessage2& aMessage);
00091 
00092          //services available to initialize/increase/decrease/reset and return the counter value.
00093         void SetFromStringL(const RMessage2& aMessage);
00094         void Increase();
00095         void Decrease();
00096         void IncreaseBy(const RMessage2& aMessage);
00097         void DecreaseBy(const RMessage2& aMessage);
00098         void CounterValueL(const RMessage2& aMessage);
00099         void Reset();
00100 
00101 protected:
00102           // panic the client
00103         void PanicClient(const RMessage2& aMessage,TInt aPanic) const;
00104                 
00105 private:
00106         TInt iCount;
00107         };
00108 
00109 

Generated by  doxygen 1.6.2