diff -r 000000000000 -r ff3b6d0fd310 satengine/SatServer/Engine/inc/CSatClientServiceReq.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/satengine/SatServer/Engine/inc/CSatClientServiceReq.h Tue Feb 02 01:11:09 2010 +0200 @@ -0,0 +1,159 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Handles client requests. +* +*/ + + + +#ifndef CSATCLIENTSERVICEREQ_H +#define CSATCLIENTSERVICEREQ_H + +// INCLUDES +#include +#include "MSatCommand.h" +#include "SatSOpcodes.h" + +// FORWARD DECLARATION +class MSatUtils; + +// CLASS DECLARATION + +/** +* Handles the buffering of command and client request. +* Buffering is needed because client can make request without command and +* viceversa. +* +* @lib SatEngine +* @since Series 60 3.0 +*/ +class CSatClientServiceReq : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aRequest Handled service request + * @param aResponse Handled response request. + * @param aCommand Command hander for request + * @param aUtils Reference to SAT Utilities + */ + static CSatClientServiceReq* NewL( + TSatServerRequest aRequest, + TSatServerRequest aResponse, + MSatCommand* aCommand, + MSatUtils& aUtils ); + + /** + * Destructor. + */ + virtual ~CSatClientServiceReq(); + + public: // New functions + + /** + * Handles the command from SIM. + * @param aCmdData Data to be sent to client. + * @param aCmdRsp Clients response is written to this descriptor. + * @param aRequest Request which the data is sent. + * @return ETrue if command was recognised to be handled in this class ie aRequest is the same that + * set in constructor. + */ + virtual TBool HandleCommand( + TDesC8* aCmdData, + TDes8* aCmdRsp, + TSatServerRequest aRequest ); + + /** + * Handles the request from client. + * @param aRequest Service request from client. + * @return ETrue if request was recognised to be handled in this class. + */ + virtual TBool HandleRequest( const RMessage2& aRequest ); + + /** + * Checks is this service request handling this request + * @param aRequest Checks own request to this request + * @return TBool indicating is param aRequest this service + * requests request + */ + virtual TBool IsMyRequest( const TSatServerRequest aRequest ); + + /** + * Sets command handler for this service request handler + * @param aCommand Command handler for this service request + */ + virtual void SetCommandHandler( MSatCommand* aCommand ); + + /** + * Resets containing data. + */ + virtual void Reset(); + + protected: // New functions + + /** + * Writes the data to client address space and + * completes the iRequest. + */ + virtual void SendDataToClient(); + + protected: + + /** + * C++ default constructor. + * @param aRequest Handled service request + * @param aResponse Handled response request. + * @param aCommand Command hander for request + * @param aUtils Reference to SAT Utilities + */ + CSatClientServiceReq( + TSatServerRequest aRequest, + TSatServerRequest aResponse, + MSatCommand* aCommand, + MSatUtils& aUtils ); + + private: // Data + + // Identifies the client request, which is handled in HandleRequest + const TSatServerRequest iHandledRequest; + + // Identifies the client response, which is handled in HandleRequest + const TSatServerRequest iHandledResponse; + + // Command from SIM + MSatCommand* iResponseObserver; + + // Indicates if the command from SIM is not yet sent to client + TBool iCmdPending; + + // Service request from client + RMessage2 iRequest; + + // Indicates that request is waiting command from SIM. + TBool iRequestPending; + + // Data from SIM. + TDesC8* iCmdData; + + // Response from client.. + TDes8* iCmdRsp; + + // Utilities class + MSatUtils& iUtils; + }; + +#endif // CSATCLIENTSERVICEREQ_H + +// End of File