diff -r 000000000000 -r 7f656887cf89 libraries/iosrv/inc/iocli.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libraries/iosrv/inc/iocli.h Wed Jun 23 15:52:26 2010 +0100 @@ -0,0 +1,314 @@ +// iocli.h +// +// Copyright (c) 2006 - 2010 Accenture. All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the "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: +// Accenture - Initial contribution +// + +#ifndef __IOCLI_H__ +#define __IOCLI_H__ + +#include +#include +#include + +class RIoSession; +class RIoConsole; + +class RIoHandle : public RSubSessionBase + { +public: + enum TType + { + EReadWriteObject, + EReadObject, + EWriteObject, + EEndPoint, + EConsole, + EFile, + ENull, + EPipe, + EPersistentConsole, + }; +public: + IMPORT_C TInt OpenFoundHandle(RIoSession& aSession, TInt aFoundHandle); + IMPORT_C void OpenFoundHandleL(RIoSession& aSession, TInt aFoundHandle); + IMPORT_C void Close(); + IMPORT_C TInt IsType(TType aType) const; + IMPORT_C TBool IsTypeL(TType aType) const; + IMPORT_C TInt ObjectName(TDes& aName) const; + IMPORT_C void ObjectNameL(TDes& aName) const; + IMPORT_C TInt Equals(const RIoHandle& aNother) const; + IMPORT_C TBool EqualsL(const RIoHandle& aNother) const; + IMPORT_C RIoSession Session() const; + }; + +class RIoSession : public RSessionBase + { +public: + IMPORT_C TInt Connect(); + IMPORT_C void ConnectL(); + IMPORT_C TInt SetObjectName(TInt aHandle, const TDesC& aName); + IMPORT_C void SetObjectNameL(TInt aHandle, const TDesC& aName); + IMPORT_C TInt FindFirstHandle(RIoHandle::TType aType, const TDesC& aMatchString, TInt& aFoundHandle, TName& aName); + IMPORT_C TInt FindNextHandle(TInt& aFoundHandle, TName& aName); + }; + +class RIoReadWriteHandle : public RIoHandle + { +public: + enum TMode + { + EText, + EBinary + }; +public: + IMPORT_C TInt SetMode(TMode aMode); + IMPORT_C void SetModeL(TMode aMode); + IMPORT_C TInt SetOwner(TThreadId aOwningThread); + IMPORT_C void SetOwnerL(TThreadId aOwningThread); + IMPORT_C TInt SetUnderlyingConsole(RIoConsole& aConsole); + IMPORT_C void SetUnderlyingConsoleL(RIoConsole& aConsole); + IMPORT_C TInt AttachedToConsole() const; + IMPORT_C TBool AttachedToConsoleL() const; + }; + +class RIoReadHandle : public RIoReadWriteHandle + { +public: + enum TReadMode + { + EFull, + ELine, + EOneOrMore + }; + enum TChangeType + { + EGainedForeground = 0x01, + EConsoleSizeChanged = 0x02, + }; +public: + IMPORT_C TInt Create(RIoSession& aSession); + IMPORT_C void CreateL(RIoSession& aSession); + IMPORT_C TInt Open(RIoSession& aSession); + IMPORT_C void OpenL(RIoSession& aSession); + IMPORT_C TInt Open(RIoSession& aSession, TThreadId aThreadId); + IMPORT_C void OpenL(RIoSession& aSession, TThreadId aThreadId); + IMPORT_C TInt Duplicate(RIoReadHandle& aReadHandle); + IMPORT_C void DuplicateL(RIoReadHandle& aReadHandle); + IMPORT_C TInt DuplicateHandleFromThread(TThreadId aThreadId); + + IMPORT_C TInt SetReadMode(TReadMode aMode); + IMPORT_C void SetReadModeL(TReadMode aMode); + IMPORT_C TInt SetToForeground(); + IMPORT_C void SetToForegroundL(); + IMPORT_C TInt Read(TDes& aDes); + IMPORT_C void ReadL(TDes& aDes); + IMPORT_C void Read(TDes& aDes, TRequestStatus& aStatus); + IMPORT_C TInt SetLineSeparator(const TDesC& aSeparator); + IMPORT_C void SetLineSeparatorL(const TDesC& aSeparator); + IMPORT_C void ReadCancel(); + IMPORT_C TInt IsForeground() const; + IMPORT_C TBool IsForegroundL() const; + IMPORT_C void NotifyChange(TPckgBuf& aChangeType, TRequestStatus& aStatus); + IMPORT_C void CancelNotifyChange(); + }; + +class RIoConsoleReadHandle : public RIoReadHandle + { +public: + IMPORT_C RIoConsoleReadHandle(); + IMPORT_C RIoConsoleReadHandle(RIoReadHandle& aHandle); + IMPORT_C RIoConsoleReadHandle operator=(RIoReadHandle& aHandle); + IMPORT_C TUint ReadKey(); + IMPORT_C void WaitForKey(TRequestStatus& aStatus); + IMPORT_C void WaitForKeyCancel(); + IMPORT_C TUint KeyCode() const; + IMPORT_C TUint KeyModifiers() const; + IMPORT_C TInt CaptureKey(TUint aKeyCode, TUint aModifierMask, TUint aModifiers); + IMPORT_C void CaptureKeyL(TUint aKeyCode, TUint aModifierMask, TUint aModifiers); + IMPORT_C TInt CancelCaptureKey(TUint aKeyCode, TUint aModifierMask, TUint aModifiers); + IMPORT_C TInt CaptureAllKeys(); + IMPORT_C void CaptureAllKeysL(); + IMPORT_C TInt CancelCaptureAllKeys(); +public: + class TConsoleKey + { + public: + TUint iKeyCode; + TUint iModifiers; + }; +private: + TPckgBuf iKeyBuf; + }; + +class RIoWriteHandle : public RIoReadWriteHandle + { +public: + IMPORT_C TInt Create(RIoSession& aSession); + IMPORT_C void CreateL(RIoSession& aSession); + IMPORT_C TInt Open(RIoSession& aSession); + IMPORT_C void OpenL(RIoSession& aSession); + IMPORT_C TInt Open(RIoSession& aSession, TThreadId aThreadId); + IMPORT_C void OpenL(RIoSession& aSession, TThreadId aThreadId); + IMPORT_C TInt Duplicate(RIoWriteHandle& aWriteHandle); + IMPORT_C void DuplicateL(RIoWriteHandle& aWriteHandle); + IMPORT_C TInt DuplicateHandleFromThread(TThreadId aThreadId); + IMPORT_C TInt Write(const TDesC& aDes); + IMPORT_C void WriteL(const TDesC& aDes); + IMPORT_C void Write(const TDesC& aDes, TRequestStatus& aStatus); + IMPORT_C void WriteCancel(); + }; + +class RIoConsoleWriteHandle : public RIoWriteHandle + { +public: + IMPORT_C RIoConsoleWriteHandle(); + IMPORT_C RIoConsoleWriteHandle(RIoWriteHandle& aHandle); + IMPORT_C RIoConsoleWriteHandle operator=(RIoWriteHandle& aHandle); + IMPORT_C TInt GetCursorPos(TPoint& aPos) const; + IMPORT_C TPoint GetCursorPosL() const; + IMPORT_C TInt SetCursorPosAbs(const TPoint& aPos); + IMPORT_C void SetCursorPosAbsL(const TPoint& aPos); + IMPORT_C TInt SetCursorPosRel(const TPoint& aPos); + IMPORT_C void SetCursorPosRelL(const TPoint& aPos); + IMPORT_C TInt SetCursorHeight(TInt aPercentage); + IMPORT_C void SetCursorHeightL(TInt aPercentage); + IMPORT_C TInt SetTitle(const TDesC& aTitle); + IMPORT_C void SetTitleL(const TDesC& aTitle); + IMPORT_C TInt ClearScreen(); + IMPORT_C void ClearScreenL(); + IMPORT_C TInt ClearToEndOfLine(); + IMPORT_C void ClearToEndOfLineL(); + IMPORT_C TInt GetScreenSize(TSize& aSize) const; + IMPORT_C TSize GetScreenSizeL() const; + IMPORT_C TInt SetAttributes(TUint aAttributes, ConsoleAttributes::TColor aForegroundColor = ConsoleAttributes::EUnchanged, ConsoleAttributes::TColor aBackgroundColor = ConsoleAttributes::EUnchanged); + IMPORT_C void SetAttributesL(TUint aAttributes, ConsoleAttributes::TColor aForegroundColor = ConsoleAttributes::EUnchanged, ConsoleAttributes::TColor aBackgroundColor = ConsoleAttributes::EUnchanged); + IMPORT_C TInt SetAttributes(const ConsoleAttributes::TAttributes& aAttributes); + IMPORT_C TInt SetIsStdErr(TBool aFlag); + }; + +class RIoEndPoint : public RIoHandle + { +public: + enum TReadMode + { + EForeground, + EBackground + }; +public: + IMPORT_C TInt Attach(RIoReadHandle& aReader, TReadMode aMode); + IMPORT_C void AttachL(RIoReadHandle& aReader, TReadMode aMode); + IMPORT_C TInt Attach(RIoWriteHandle& aWriter); + IMPORT_C void AttachL(RIoWriteHandle& aWriter); + IMPORT_C TInt SetForegroundReadHandle(RIoReadHandle& aReader); + IMPORT_C void SetForegroundReadHandleL(RIoReadHandle& aReader); + IMPORT_C RIoEndPoint(); + }; + +class RIoPipe : public RIoEndPoint + { +public: + IMPORT_C TInt Create(RIoSession& aSession); + IMPORT_C void CreateL(RIoSession& aSession); + }; + +class RIoConsole : public RIoEndPoint + { +public: + enum TOptions + { + ENormal = 0, + ELazyCreate = 0x01, + }; +public: + IMPORT_C TInt Create(RIoSession& aSession, const TDesC& aTitle, const TSize& aSize, TUint aConsoleOptions = ENormal); + IMPORT_C void CreateL(RIoSession& aSession, const TDesC& aTitle, const TSize& aSize, TUint aConsoleOptions = ENormal); + IMPORT_C TInt Create(RIoSession& aSession, const TDesC& aImplementation, const TDesC& aTitle, const TSize& aSize, TUint aConsoleOptions = ENormal); + IMPORT_C TInt Create(RIoSession& aSession, const TDesC& aImplementation, RIoConsole& aUnderlyingConsole, const TDesC& aTitle, const TSize& aSize, TUint aConsoleOptions = ENormal); + IMPORT_C void CreateL(RIoSession& aSession, const TDesC& aImplementation, const TDesC& aTitle, const TSize& aSize, TUint aConsoleOptions = ENormal); + IMPORT_C void CreateL(RIoSession& aSession, const TDesC& aImplementation, RIoConsole& aUnderlyingConsole, const TDesC& aTitle, const TSize& aSize, TUint aConsoleOptions = ENormal); + IMPORT_C TInt Open(RIoSession& aSession, RIoHandle& aHandle); + IMPORT_C void OpenL(RIoSession& aSession, RIoHandle& aHandle); + IMPORT_C TInt Implementation(TDes& aDes) const; + IMPORT_C void ImplementationL(TDes& aDes) const; + }; + +class RIoPersistentConsole : public RIoConsole + { +public: + enum TCloseBehaviour + { + EDetachOnHandleClose, + EKeepAttachedOnHandleClose, + }; +public: + IMPORT_C TInt Create(RIoSession& aSession, const TDesC& aName, const TDesC& aTitle); + IMPORT_C void CreateL(RIoSession& aSession, const TDesC& aName, const TDesC& aTitle); + + IMPORT_C TInt OpenByName(RIoSession& aSession, const TDesC& aName); + IMPORT_C void OpenByNameL(RIoSession& aSession, const TDesC& aName); + + IMPORT_C TInt AttachReader(RIoEndPoint& aEndPoint, TCloseBehaviour aDetachOnClose); + IMPORT_C void AttachReaderL(RIoEndPoint& aEndPoint, TCloseBehaviour aDetachOnClose); + IMPORT_C void DetachReader(); + IMPORT_C void NotifyReaderDetach(TRequestStatus& aStatus); + IMPORT_C void CancelNotifyReaderDetach(TRequestStatus& aStatus); + + IMPORT_C TInt AttachWriter(RIoEndPoint& aEndPoint, TCloseBehaviour aDetachOnClose); + IMPORT_C void AttachWriterL(RIoEndPoint& aEndPoint, TCloseBehaviour aDetachOnClose); + IMPORT_C void DetachWriter(); + IMPORT_C void NotifyWriterDetach(TRequestStatus& aStatus); + IMPORT_C void CancelNotifyWriterDetach(TRequestStatus& aStatus); + + IMPORT_C TInt GetAttachedReaderAndWriterNames(TName& aReaderName, TName& aWriterName); + IMPORT_C void GetAttachedReaderAndWriterNamesL(TName& aReaderName, TName& aWriterName); + + IMPORT_C TInt GetCreator(TThreadId& aThreadId); + IMPORT_C TThreadId GetCreatorL(); + }; + +class RIoFile : public RIoEndPoint + { +public: + enum TMode + { + ERead, + EOverwrite, + EAppend + }; +public: + IMPORT_C TInt Create(RIoSession& aSession, const TDesC& aFileName, TMode aMode); + IMPORT_C void CreateL(RIoSession& aSession, const TDesC& aFileName, TMode aMode); + }; + +class RIoNull : public RIoEndPoint + { +public: + IMPORT_C TInt Create(RIoSession& aSession); + IMPORT_C void CreateL(RIoSession& aSession); + }; + +// Convenience class to wrap up a set of stdin, stdout, stderr handles +class TIoHandleSet + { +public: + IMPORT_C TIoHandleSet(RIoSession& aIoSession, RIoReadHandle& aStdin, RIoWriteHandle& aStdout, RIoWriteHandle& aStderr); + IMPORT_C RIoSession& IoSession() const; + IMPORT_C RIoReadHandle& Stdin() const; + IMPORT_C RIoWriteHandle& Stdout() const; + IMPORT_C RIoWriteHandle& Stderr() const; +private: + RIoSession& iIoSession; + RIoReadHandle& iStdin; + RIoWriteHandle& iStdout; + RIoWriteHandle& iStderr; + TUint32 iSpare; + }; + +#endif