sl@0: /* 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: * Name : readrequesthandler.h sl@0: * Part of : stdio server sl@0: * To handle request for read sl@0: * sl@0: * sl@0: */ sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: #ifndef _READREQUEST_H_ sl@0: #define _READREQUEST_H_ sl@0: sl@0: #include//CActive sl@0: sl@0: //Enumarations for Polling sl@0: //duplicate of fdesc.h sl@0: enum TPollMode sl@0: { sl@0: EReadyForReading = 1, sl@0: EReadyForWriting = 2, sl@0: EAnyException = 4 sl@0: }; sl@0: sl@0: class CStreamBase; sl@0: sl@0: //----------------------------------------------------------------------- sl@0: //Class name: TReadRequest sl@0: //Description: Request object created for every read request from a sl@0: // client. These are queued as a singly linked list. sl@0: //----------------------------------------------------------------------- sl@0: sl@0: class TReadRequest sl@0: { sl@0: public: sl@0: inline TReadRequest(const RMessage2&); sl@0: const RMessage2 iMessage2; sl@0: sl@0: TSglQueLink iLink; sl@0: }; sl@0: sl@0: sl@0: sl@0: //----------------------------------------------------------------------- sl@0: //Class name: CReadRequestHandler sl@0: //Description: Request Handler class created for Read media. This sl@0: // Class is an active object and will handle all read sl@0: // requests in the form of RReadRequest objects. sl@0: //----------------------------------------------------------------------- sl@0: sl@0: class CReadRequestHandler : public CActive sl@0: { sl@0: public: sl@0: static CReadRequestHandler* NewL(CStreamBase* aConsoleRead); sl@0: ~CReadRequestHandler(); sl@0: void RunL(); sl@0: void ServiceL(const RMessage2& aMessage2); sl@0: void NotifyActivityL(const RMessage2& aMessage2); sl@0: void CancelNotify(); sl@0: void DoCancel(); sl@0: sl@0: private: sl@0: CReadRequestHandler(); sl@0: CReadRequestHandler(CStreamBase* aConsoleRead); sl@0: void Complete(const RMessage2 &aMessage); sl@0: TSglQue iQueue; sl@0: CStreamBase* iReadStream; sl@0: TInt iNotifyHandle; sl@0: TPtr8 iPtr; sl@0: }; sl@0: sl@0: #endif //_READREQUEST_H_ sl@0: sl@0: sl@0: