tracesrv/tracecore/btrace_handler/test/TEF/te_tracecore/src/te_processcreator.cpp
author hgs
Fri, 08 Oct 2010 14:56:39 +0300
changeset 56 aa2539c91954
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
hgs
parents:
diff changeset
     1
// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     2
// All rights reserved.
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     7
//
hgs
parents:
diff changeset
     8
// Initial Contributors:
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    10
//
hgs
parents:
diff changeset
    11
// Contributors:
hgs
parents:
diff changeset
    12
//
hgs
parents:
diff changeset
    13
// Description:
hgs
parents:
diff changeset
    14
//
hgs
parents:
diff changeset
    15
hgs
parents:
diff changeset
    16
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
/**
hgs
parents:
diff changeset
    19
 @file
hgs
parents:
diff changeset
    20
 @internalTechnology
hgs
parents:
diff changeset
    21
*/
hgs
parents:
diff changeset
    22
#include "te_processcreator.h"
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
TProcessCreatorResults CProcessCreator::StartProgram(const TDesC& aProgramName, 
hgs
parents:
diff changeset
    26
													 const TDesC& aCommandLineArgs, 
hgs
parents:
diff changeset
    27
													 TBool aWaitForCompletion)
hgs
parents:
diff changeset
    28
    {
hgs
parents:
diff changeset
    29
    RProcess process;
hgs
parents:
diff changeset
    30
	TProcessCreatorResults res;
hgs
parents:
diff changeset
    31
	res.iExitType = EExitPending;
hgs
parents:
diff changeset
    32
	res.iCode = process.Create(aProgramName, aCommandLineArgs);
hgs
parents:
diff changeset
    33
	if(res.iCode == KErrNone)
hgs
parents:
diff changeset
    34
		{
hgs
parents:
diff changeset
    35
		if(aWaitForCompletion)
hgs
parents:
diff changeset
    36
		    {
hgs
parents:
diff changeset
    37
            TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
    38
			process.Logon(status);
hgs
parents:
diff changeset
    39
			process.Resume();
hgs
parents:
diff changeset
    40
			User::WaitForRequest(status);
hgs
parents:
diff changeset
    41
            if(status.Int() == KErrNone)
hgs
parents:
diff changeset
    42
                {
hgs
parents:
diff changeset
    43
                res.iCode = process.ExitReason();
hgs
parents:
diff changeset
    44
                res.iExitType = process.ExitType();
hgs
parents:
diff changeset
    45
                res.iDesc.Copy(process.ExitCategory());
hgs
parents:
diff changeset
    46
                }
hgs
parents:
diff changeset
    47
            else
hgs
parents:
diff changeset
    48
                {
hgs
parents:
diff changeset
    49
                res.iCode = status.Int();
hgs
parents:
diff changeset
    50
                }
hgs
parents:
diff changeset
    51
            }
hgs
parents:
diff changeset
    52
		else
hgs
parents:
diff changeset
    53
		    {
hgs
parents:
diff changeset
    54
            process.Resume();
hgs
parents:
diff changeset
    55
		    }
hgs
parents:
diff changeset
    56
		}
hgs
parents:
diff changeset
    57
	process.Close();
hgs
parents:
diff changeset
    58
	
hgs
parents:
diff changeset
    59
	return res;
hgs
parents:
diff changeset
    60
    }
hgs
parents:
diff changeset
    61