sl@0: // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #ifndef SRVSUBSESS_H sl@0: #define SRVSUBSESS_H sl@0: sl@0: #include sl@0: #include "shrepos.h" sl@0: #include "srvrepos_noc.h" sl@0: #include "clientrequest.h" sl@0: #include "sessnotf.h" sl@0: sl@0: class CServerSession; sl@0: class CSessionManager; sl@0: sl@0: class CServerSubSession : public CObject sl@0: { sl@0: friend class CServerSession; sl@0: public: sl@0: CServerSubSession(CServerSession* aSession); sl@0: ~CServerSubSession(); sl@0: void ServiceError(TInt aError); sl@0: TInt ServiceL(const RMessage2& aMessage); sl@0: public: sl@0: enum { KDontCompleteMessage = 1 }; sl@0: sl@0: private: sl@0: typedef TInt (CServerSubSession::*TServerFunc)(const TClientRequest&); sl@0: sl@0: TInt GeneralOperationsL(const TClientRequest& aMessage, TServerFunc aFunc); sl@0: TInt ReadOperationsL(const TClientRequest& aMessage, TServerFunc aFunc); sl@0: TInt WriteOperationsL(const TClientRequest& aMessage, TServerFunc aFunc); sl@0: TInt ResetOperationsL(const TClientRequest& aMessage, TServerFunc aFunc); sl@0: sl@0: TInt InitialiseL(const TClientRequest& aMessage); sl@0: TInt CreateIntL(const TClientRequest& aMessage); sl@0: TInt CreateRealL(const TClientRequest& aMessage); sl@0: TInt CreateStringL(const TClientRequest& aMessage); sl@0: TInt DeleteL(const TClientRequest& aMessage); sl@0: TInt DeleteRangeL(const TClientRequest& aMessage); sl@0: TInt GetIntL(const TClientRequest& aMessage); sl@0: TInt SetIntL(const TClientRequest& aMessage); sl@0: TInt GetRealL(const TClientRequest& aMessage); sl@0: TInt SetRealL(const TClientRequest& aMessage); sl@0: TInt GetStringL(const TClientRequest& aMessage); sl@0: TInt SetStringL(const TClientRequest& aMessage); sl@0: TInt FindL(const TClientRequest& aMessage); sl@0: TInt FindEqIntL(const TClientRequest& aMessage); sl@0: TInt FindEqRealL(const TClientRequest& aMessage); sl@0: TInt FindEqStringL(const TClientRequest& aMessage); sl@0: TInt FindNeqIntL(const TClientRequest& aMessage); sl@0: TInt FindNeqRealL(const TClientRequest& aMessage); sl@0: TInt FindNeqStringL(const TClientRequest& aMessage); sl@0: TInt GetFindResultL(const TClientRequest& aMessage); sl@0: TInt NotifyRequestCheck(const TClientRequest& aMessage); sl@0: TInt NotifyRequest(const TClientRequest& aMessage); sl@0: TInt NotifyCancel(const TClientRequest& aMessage); sl@0: TInt NotifyCancelAll(const TClientRequest& aMessage); sl@0: TInt GroupNotifyRequest(const TClientRequest& aMessage); sl@0: TInt GroupNotifyCancel(const TClientRequest& aMessage); sl@0: TInt ResetL(const TClientRequest& aMessage); sl@0: TInt ResetAllL(const TClientRequest& aMessage); sl@0: TInt TransactionStart(const TClientRequest& aMessage); sl@0: TInt TransactionCancel(const TClientRequest& aMessage); sl@0: TInt TransactionCommitL(const TClientRequest& aMessage); sl@0: TInt MoveL(const TClientRequest& aMessage) ; sl@0: TInt TransactionStateL(const TClientRequest& aMessage); sl@0: TInt TransactionFail(const TClientRequest& aMessage); sl@0: TInt GetMeta(const TClientRequest& aMessage); sl@0: sl@0: template TInt FindValueL(const TClientRequest& aMessage, const T& aVal, TComparison aComparison=EEqual); sl@0: inline CSessionManager* Server(); sl@0: TInt CheckPolicy(const TClientRequest& msg,const TSecurityPolicy& aPolicy, sl@0: const char *aDiagnostic); sl@0: sl@0: private: sl@0: CServerSession* iSession; sl@0: CServerRepository iRepository; sl@0: CSessionNotifier iNotifier; sl@0: RArray iFindResult; sl@0: TBool iInitialised; sl@0: #if defined (__CENTREP_SERVER_PERFTEST__) || defined(SRVSUBSESS_TRACE) || defined(CENTREP_TRACE) sl@0: sl@0: TUid iRepositoryUid; sl@0: #endif sl@0: sl@0: sl@0: #if defined (__CENTREP_SERVER_PERFTEST__) || defined(SRVSUBSESS_TRACE) || defined(CENTREP_TRACE) sl@0: // For testing purposes only sl@0: public: sl@0: inline TUid RepositoryUid() sl@0: { sl@0: return iRepositoryUid; sl@0: } sl@0: #endif sl@0: }; sl@0: sl@0: sl@0: #endif // SRVSUBSESS_H