libraries/iosrv/inc/memoryaccesscmd.h
author Joe Branton <joe.branton@accenture.com>
Thu, 29 Jul 2010 12:02:58 +1000
changeset 14 4ab8c027df23
parent 0 7f656887cf89
permissions -rw-r--r--
Fixed a defect in iosrv.exe that caused a panic if a foreground read object was attached to a different end point. This was due to the read object being notified of a change in foreground before its iEndPoint member was updated. This member is now updated before attempting the attach, and is set to NULL in the event of a leave (resulting in the read object being left in an unattached state). Also tweaked ymodem.cif to make it more readable.

// memoryaccesscmd.h
// 
// Copyright (c) 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 MEMORYACCESSCMD_H
#define MEMORYACCESSCMD_H

#include <fshell/ioutils.h>
#include <fshell/common.mmh>

#ifdef FSHELL_MEMORY_ACCESS_SUPPORT
#include <fshell/memoryaccess.h>
#endif

namespace IoUtils
	{

/* CMemoryAccessCommandBase
 * This class is intended to be used by commands that can make use of memory access but don't
 * necessarily require it. By deriving from CMemoryAccessCommandBase instead of CCommandBase,
 * you reduce the number of times "#ifdef FSHELL_MEMORY_ACCESS_SUPPORT" needs sprinkling through
 * your code. The only bits you need to guard are the bits that use iMemAccess and that call 
 * LoadMemoryAccessL (although you could trap that instead if you really wanted). No need to 
 * include memoryaccess.h or close iMemAccess, and you can include this header and derive from
 * this class unconditionally.
 */

class CMemoryAccessCommandBase : public CCommandBase
	{
public:
	IMPORT_C CMemoryAccessCommandBase();
	IMPORT_C CMemoryAccessCommandBase(TUint aFlags);

	IMPORT_C void LoadMemoryAccessL();
	IMPORT_C ~CMemoryAccessCommandBase();

#ifdef FSHELL_MEMORY_ACCESS_SUPPORT
protected:
	RMemoryAccess iMemAccess;
#else
private:
	// So that we're the same size regardless
	TUint32 iPadding[3];
#endif
	};

	}

#endif // MEMORYACCESSCMD_H