// Copyright (c) 2005-2009 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:
//
#include "SqlSrvStartup.h"
/**
Starts the SQL server process.
@return KErrNone The server started successfully
@return KErrAlreadyExists The server already started
@return Other system-wide error code
@internalComponent
*/
TInt StartSqlServer()
{
const TUidType serverUid(KNullUid, KNullUid, KSqlSrvUid3);
RProcess server;
TInt err = server.Create(KSqlSrvImg, KNullDesC, serverUid);
if(err != KErrNone)
{
return err;
}
TRequestStatus stat;
server.Rendezvous(stat);
if(stat != KRequestPending)
{
server.Kill(0); // abort startup
}
else
{
server.Resume(); // logon OK - start the server
}
User::WaitForRequest(stat); // wait for start or death
// we can't use the 'exit reason' if the server panicked as this
// is the panic 'reason' and may be '0' which cannot be distinguished
// from KErrNone
err = (server.ExitType() == EExitPanic) ? KErrGeneral : stat.Int();
server.Close();
return err;
}