williamr@4: /* williamr@4: * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of the License "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: williamr@4: * Defines the client-side classes which other client-side handles williamr@4: * derive from to use the SCS functionality. williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: /** williamr@4: @file williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: williamr@4: #ifndef SCSCLIENT_H williamr@4: #define SCSCLIENT_H williamr@4: williamr@4: #include williamr@4: williamr@4: williamr@4: class RScsClientBase : public RSessionBase williamr@4: /** williamr@4: Provides functionality to connect to the server, starting williamr@4: the server process if necessary. This class cannot be used williamr@4: directly - the SCS implementor must define a subclass. williamr@4: */ williamr@4: { williamr@4: public: williamr@4: IMPORT_C void Close(); williamr@4: IMPORT_C TInt SetServerHeapFail(TInt aRate); williamr@4: IMPORT_C TInt ResetServerHeapFail(); williamr@4: williamr@4: IMPORT_C TInt ShutdownServer(); williamr@4: williamr@4: protected: williamr@4: IMPORT_C RScsClientBase(); williamr@4: IMPORT_C TInt Connect( williamr@4: const TDesC& aSvrName, const TVersion& aReqVer, const TDesC& aExeName, const TUidType& aFullExeUid); williamr@4: williamr@4: IMPORT_C TInt CallSessionFunction(TInt aFunction) const; williamr@4: IMPORT_C TInt CallSessionFunction(TInt aFunction, const TIpcArgs& aArgs) const; williamr@4: IMPORT_C void CallSessionFunction(TInt aFunction, const TIpcArgs& aArgs, TRequestStatus& aStatus) const; williamr@4: IMPORT_C void CancelSessionFunction(TInt aFunction) const; williamr@4: williamr@4: private: williamr@4: TInt StartServerProcess(const TDesC& aExeName, const TUidType& aFullExeUid); williamr@4: }; williamr@4: williamr@4: class RScsClientSubsessionBase : public RSubSessionBase williamr@4: /** williamr@4: This class is used to send messages to server-side SCS subsessions. williamr@4: This class cannot be used directly - the implementor must define a williamr@4: subclass. williamr@4: */ williamr@4: { williamr@4: public: williamr@4: IMPORT_C void Close(); williamr@4: williamr@4: protected: williamr@4: IMPORT_C RScsClientSubsessionBase(); williamr@4: IMPORT_C TInt CreateSubsession(const RScsClientBase& aSession, TInt aFunction, const TIpcArgs& aArgs); williamr@4: williamr@4: IMPORT_C TInt CallSubsessionFunction(TInt aFunction) const; williamr@4: IMPORT_C TInt CallSubsessionFunction(TInt aFunction, const TIpcArgs& aArgs) const; williamr@4: IMPORT_C void CallSubsessionFunction(TInt aFunction, const TIpcArgs& aArgs, TRequestStatus& aStatus) const; williamr@4: IMPORT_C void CancelSubsessionFunction(TInt aFunction) const; williamr@4: }; williamr@4: williamr@4: #endif // #ifndef SCSCLIENT_H williamr@4: