eapol/eapol_framework/eapol_symbian/eap_if/src/REapSession.cpp
branchRCL_3
changeset 46 c74b3d9f6b9e
parent 45 bad0cc58d154
child 55 9c2aa05919d9
--- a/eapol/eapol_framework/eapol_symbian/eap_if/src/REapSession.cpp	Tue Aug 31 15:16:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,732 +0,0 @@
-/*
-* Copyright (c) 2001-2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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:  EAP and WLAN authentication protocols.
-*
-*/
-
-/*
-* %version: 34 %
-*/
-
-#include "REapSession.h"
-#include <e32base.h>
-#include "EapTraceSymbian.h"
-#include "EapCoreInterfaceImplementation.h"
-#include "EapServerStrings.h"
-#include "eap_automatic_variable.h"
-
-//----------------------------------------------------------------
-
-void Panic(TInt aPanic)
-    {
-    _LIT(KPanicCategory,"Eapol Client");
-    User::Panic(KPanicCategory, aPanic);
-    }
-
-//----------------------------------------------------------------
-
-TVersion REapSession::Version() const
-    {
-    return( TVersion(
-            KEapMajorVersionNumber,
-            KEapMinorVersionNumber,
-            KEapBuildVersionNumber ) );
-    }
-
-//----------------------------------------------------------------
-
-EAP_FUNC_EXPORT REapSession::~REapSession()
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::~REapSession()\n")));
-
-	EAP_TRACE_RETURN_STRING(iTools, "returns: REapSession::~REapSession()");
-
-	delete iEapMessageQueue;
-	iEapMessageQueue = 0;
-}
-
-//----------------------------------------------------------------
-
-EAP_FUNC_EXPORT void REapSession::ConnectL(
-	abs_eap_am_tools_c * const tools,
-	MSendPacketHandler * Client,
-	TBuf<KMaxServerExe> ServerName,
-	TBuf<KMaxServerExe> ServerExe,
-	const void * const aConfigurationData,
-	const TInt aConfigurationDataLength,
-	const TEapRequests aIfRequest)
-{
-	EAP_TRACE_DEBUG(
-		tools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::ConnectL()\n")));
-
-	EAP_TRACE_RETURN_STRING(tools, "returns: REapSession::ConnectL()");
-
-	iClient = Client;
-	iTools = tools;
-	iEapMessageQueue = new(ELeave) EapMessageQueue(iTools);
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::ConnectL(): iEapMessageQueue=0x%08x\n"),
-		iEapMessageQueue));
-
-
-	// connect to iServer
-	TInt error=KErrNone;
-
-
-	TFindServer findServer(ServerName);
-	TFullName name;
-
-	error = findServer.Next( name );
-
-	if ( error == KErrNone )
-	{
-		// Server already running
-	}
-	else
-	{
-		error = iServer.Create(ServerExe,KNullDesC);
-
-		if (error != KErrNone)
-		{
-			EAP_TRACE_DEBUG(
-				iTools,
-				TRACE_FLAGS_DEFAULT,
-				(EAPL("REapSession::ConnectL(): create iServer error=%d\n"),
-				error));
-			User::Leave(error);
-		}
-
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("REapSession::ConnectL(): iServer successfully created\n")));
-
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("REapSession::ConnectL(): iServer.SetPriority(EPriorityHigh)\n")));
-
-		iServer.SetPriority(EPriorityHigh);
-
-		TRequestStatus stat;
-
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("REapSession::ConnectL(): iServer.Rendezvous\n")));
-
-		iServer.Rendezvous( stat );
-
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("REapSession::ConnectL(): iServer.Rendezvous stat = %d\n"),
-			stat.Int()));
-
-		if ( stat!=KRequestPending )
-		{
-			iServer.Kill(0);     // abort startup
-
-			EAP_TRACE_DEBUG(
-				iTools,
-				TRACE_FLAGS_DEFAULT,
-				(EAPL("ERROR: REapSession::ConnectL(): iServer killed\n")));
-		}
-		else
-		{
-			iServer.Resume();    // logon OK - start the iServer
-
-			EAP_TRACE_DEBUG(
-				iTools,
-				TRACE_FLAGS_DEFAULT,
-				(EAPL("REapSession::ConnectL(): iServer started OK\n")));
-		}
-
-
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("REapSession::ConnectL(): WaitForRequest\n")));
-
-		User::WaitForRequest(stat);
-
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("REapSession::ConnectL(): WaitForRequest got, stat.Int()=%d\n"),
-			stat.Int()));
-
-		error = ( iServer.ExitType()==EExitPanic ) ? KErrGeneral : stat.Int();
-		iServer.Close();
-
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("REapSession::ConnectL(): Server closed, error=%d\n"),
-			error));
-	}
-
-
-	// create active object receive handler and add it to scheduler
-	CleanupClosePushL(*this);  // Close if next operations leave
-
-	User::LeaveIfError(error);
-
-	iSendHandler = new (ELeave) CSendHandler(iTools, *this); //*aHandler,
-	CActiveScheduler::Add(iSendHandler);
-
-	iProcessHandler = new (ELeave) CEapClientProcessHandler(iTools, *this); //*aHandler,
-	CleanupStack::Pop(this);
-	CActiveScheduler::Add(iProcessHandler);
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::ConnectL(): calls CreateSession()\n")));
-
-	error = CreateSession(ServerName,Version(), KMaxEapMessageSlots);
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::ConnectL(): CreateSession(), error=%d\n"),
-		error));
-
-	if (error != KErrNone)
-	{
-		User::Leave(error);
-	}
-
-	EAP_TRACE_DEBUG_SYMBIAN((_L("REapSession::ConnectL(): calls process_data(%d)"),
-		aIfRequest));
-
-	eap_status_e status = process_data(aIfRequest, aConfigurationData, aConfigurationDataLength);
-
-	EAP_TRACE_DEBUG_SYMBIAN((_L("REapSession::ConnectL(): process_data(%d) returns status=%d, iStatus.Int()=%d"),
-		aIfRequest,
-		status,
-		iStatus.Int()));
-
-	EAP_TRACE_DEBUG_SYMBIAN((_L("REapSession::ConnectL(): calls iSendHandler->Receive()")));
-
-	iSendHandler->Receive();
-}
-
-//----------------------------------------------------------------
-
-EAP_FUNC_EXPORT void REapSession::Close()
-	{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::Close()\n")));
-
-	EAP_TRACE_RETURN_STRING(iTools, "returns: REapSession::Close()");
-
-	// destroy receiver-handler
-	delete iSendHandler;
-	iSendHandler = 0;
-
-	delete iProcessHandler;
-	iProcessHandler = 0;
-
-	// destroy iServer session
-	iServer.Close();
-	RSessionBase::Close();
-	}
-
-//----------------------------------------------------------------
-
-/**
- * From eap_am_message_if_c 
- * Initialize interface to EAPOL or WAPI.
- * @since S60 v9.2
- */
-
-EAP_FUNC_EXPORT bool REapSession::get_is_valid()
-    {
-    EAP_TRACE_DEBUG_SYMBIAN((_L("REapSession::get_is_valid")));           
-	EAP_TRACE_RETURN_STRING(iTools, "returns: REapSession::get_is_valid()");
-
-    return ETrue;    
-    }
-
-//----------------------------------------------------------------
-
-/// Function receives the data message from lower layer.
-/// Data is formatted to Attribute-Value Pairs.
-/// Look at eap_tlv_header_c and eap_tlv_message_data_c.
-EAP_FUNC_EXPORT eap_status_e REapSession::process_data(const TEapRequests aMessageType, const void * const data, const u32_t length)
-    {
-	EAP_TRACE_DATA_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::process_data()"),
-		data,
-		length));
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::process_data(): calls iEapMessageQueue->AddMessage(): iEapMessageQueue=0x%08x\n"),
-		iEapMessageQueue));
-
-	EAP_TRACE_RETURN_STRING(iTools, "returns: REapSession::process_data()");
-
-	TInt error = iEapMessageQueue->AddMessage(aMessageType, data, length);
-
-	if (error != KErrNone)
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("ERROR: REapSession::process_data(): failed = %d\n"),
-			error));
-		return EAP_STATUS_RETURN(iTools, iTools->convert_am_error_to_eapol_error(error));
-	}
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::process_data(): calls iProcessHandler->Activate(): iProcessHandler=0x%08x\n"),
-		iProcessHandler));
-
-	iProcessHandler->Activate();
-
-    return EAP_STATUS_RETURN(iTools, iTools->convert_am_error_to_eapol_error(error));
-    }
-
-//----------------------------------------------------------------
-
-void REapSession::Receive(TDes8& aBuffer, TRequestStatus& aStatus)
-    {
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::Receive()\n")));
-
-	EAP_TRACE_RETURN_STRING(iTools, "returns: REapSession::Receive()");
-
-    TIpcArgs args( &aBuffer );
-
-    SendReceive( EEapIfReqReceive, args, aStatus );
-    }
-
-//----------------------------------------------------------------
-
-void REapSession::CancelReceive()
-    {
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::CancelReceive()\n")));
-
-	EAP_TRACE_RETURN_STRING(iTools, "returns: REapSession::CancelReceive()");
-
-    SendReceive(EEapIfCancelReceive, iStatus);
-    }
-
-//----------------------------------------------------------------
-
-const EapMessageBuffer * REapSession::GetFirstMessage()
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::GetFirstMessage()\n")));
-
-	EAP_TRACE_RETURN_STRING(iTools, "returns: REapSession::GetFirstMessage()");
-
-	return iEapMessageQueue->GetFirstMessage();
-}
-
-//----------------------------------------------------------------
-
-TInt REapSession::DeleteFirstMessage()
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::DeleteFirstMessage()\n")));
-
-	EAP_TRACE_RETURN_STRING(iTools, "returns: REapSession::DeleteFirstMessage()");
-
-	return iEapMessageQueue->DeleteFirstMessage();
-}
-
-//----------------------------------------------------------------
-
-void REapSession::Process(const EapMessageBuffer * const buffer, TRequestStatus &aStatus) const
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::Process(): calls SendReceive(), aRequestType=%d=%s\n"),
-		buffer->GetRequestType(),
-		EapServerStrings::GetEapRequestsString(buffer->GetRequestType())));
-
-	EAP_TRACE_RETURN_STRING(iTools, "returns: REapSession::Process()");
-
-	TIpcArgs args( buffer->GetData() );
-
-	SendReceive(buffer->GetRequestType(), args, aStatus);
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("REapSession::Process(): end iStatus=%d\n"),
-		iStatus.Int()));
-}
-
-//----------------------------------------------------------------
-//----------------------------------------------------------------
-//----------------------------------------------------------------
-
-/*
-    CSendHandler
-*/
-
-// construct/destruct
-
-CSendHandler::CSendHandler(
-	abs_eap_am_tools_c * const tools,
-	REapSession& aSession)
-    : CActive(0)
-	, iTools(tools)
-	, iSession(aSession)
-    {
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CSendHandler::CSendHandler()\n")));
-	EAP_TRACE_RETURN_STRING(iTools, "returns: CSendHandler::CSendHandler()");
-
-    }
-
-//----------------------------------------------------------------
-
-CSendHandler::~CSendHandler()
-    {
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CSendHandler::~CSendHandler()\n")));
-	EAP_TRACE_RETURN_STRING(iTools, "returns: CSendHandler::~CSendHandler()");
-
-    Cancel();
-    }
-
-//----------------------------------------------------------------
-
-// operation
-
-void CSendHandler::Receive()
-    {
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CSendHandler::Receive()\n")));
-	EAP_TRACE_RETURN_STRING(iTools, "returns: CSendHandler::Receive()");
-
-    iSession.Receive(iBuffer, iStatus);
-
-	if(!IsActive())
-		{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("CSendHandler::Receive(): calls SetActive()\n")));
-
-	    SetActive();
-		}
-    }
-
-//----------------------------------------------------------------
-
-// from CActive
-
-void CSendHandler::RunL()
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CSendHandler::RunL(): iStatus=%d\n"),
-		iStatus.Int()));
-	EAP_TRACE_RETURN_STRING(iTools, "returns: CSendHandler::RunL()");
-
-	if (iStatus.Int() == KErrNone)
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("CSendHandler::RunL(): iStatus = KErrNone, calls send_data()\n")));
-
-		iSession.iClient->send_data(iBuffer);
-
-		// initiate next receive
-		Receive();
-	}
-	else if (iStatus.Int() == KErrCancel)
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("CSendHandler::RunL(): iStatus = KErrCancel, calls Close()\n")));
-
-		iSession.Close();
-	}
-	else
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("CSendHandler::RunL(): does nothing\n")));
-
-	}
-}
-
-//----------------------------------------------------------------
-
-void CSendHandler::DoCancel()
-    {
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CSendHandler::DoCancel()\n")));
-	EAP_TRACE_RETURN_STRING(iTools, "returns: CSendHandler::DoCancel()");
-
-    iSession.CancelReceive();
-    }
-
-//----------------------------------------------------------------------------
-
-TInt CSendHandler::RunError(TInt aError)
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CSendHandler::RunError(): aError=%d, this=0x%08x\n"),
-		aError,
-		this));
-	EAP_TRACE_RETURN_STRING(iTools, "returns: CSendHandler::RunError()");
-
-	Cancel();
-
-	return aError;
-}
-
-//----------------------------------------------------------------
-//----------------------------------------------------------------
-//----------------------------------------------------------------
-
-void CEapolPacketHandler::EapolHandleL(const TDesC8& /* data */)
-    {
-    EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapolPacketHandler::EapolHandleL(): (do nothing now)")));           
-    }
-
-//----------------------------------------------------------------
-//----------------------------------------------------------------
-//----------------------------------------------------------------
-
-CEapClientProcessHandler::CEapClientProcessHandler(
-	abs_eap_am_tools_c * const tools,
-	REapSession& aSession)
-	: CActive(0)
-	, iTools(tools)
-	, iSession(aSession)
-	, iProcessPending(false)
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CEapClientProcessHandler::CEapClientProcessHandler()\n")));
-
-	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapClientProcessHandler::CEapClientProcessHandler()");
-
-}
-
-//----------------------------------------------------------------
-
-CEapClientProcessHandler::~CEapClientProcessHandler()
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CEapClientProcessHandler::~CEapClientProcessHandler()\n")));
-
-	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapClientProcessHandler::~CEapClientProcessHandler()");
-
-	Cancel();
-}
-
-//----------------------------------------------------------------
-
-// from CActive
-void CEapClientProcessHandler::RunL()
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("=start=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=\n")));
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CEapClientProcessHandler::RunL()\n")));
-
-	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapClientProcessHandler::RunL()");
-
-	TInt error(KErrNone);
-
-	if (iProcessPending == true)
-	{
-		error = iSession.DeleteFirstMessage();
-		if (error != KErrNone)
-		{
-			EAP_TRACE_DEBUG(
-				iTools,
-				TRACE_FLAGS_DEFAULT,
-				(EAPL("ERROR: CEapClientProcessHandler::RunL(): iSession.DeleteFirstMessage() failed = %d\n"),
-				error));
-
-			User::Leave(error);
-		}
-	}
-
-	const EapMessageBuffer * buffer = iSession.GetFirstMessage();
-
-	if (buffer != 0)
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("CEapClientProcessHandler::RunL(): calls SendReceive(), buffer->GetRequestType()=%d=%s\n"),
-			buffer->GetRequestType(),
-			EapServerStrings::GetEapRequestsString(buffer->GetRequestType())));
-
-		TIpcArgs args( buffer->GetData() );
-
-		iSession.Process( buffer, iStatus );
-
-		SetActive();
-
-		iProcessPending = true;
-	}
-	else
-	{
-		iProcessPending = false;
-	}
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CEapClientProcessHandler::RunL(): end error=%d, iStatus=%d\n"),
-		error,
-		iStatus.Int()));
-
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("=end=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=\n")));
-}
-
-//----------------------------------------------------------------
-
-void CEapClientProcessHandler::Activate()
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CEapClientProcessHandler::Activate()\n")));
-	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapClientProcessHandler::Activate()");
-
-	if(!IsActive())
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("CEapClientProcessHandler::Activate(): calls User::RequestComplete()\n")));
-
-		TRequestStatus* status = &iStatus;
-		User::RequestComplete(status, KErrNone);
-
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("CEapClientProcessHandler::Activate(): calls SetActive()\n")));
-
-		SetActive();
-	}
-	else
-	{
-		EAP_TRACE_DEBUG(
-			iTools,
-			TRACE_FLAGS_DEFAULT,
-			(EAPL("CEapClientProcessHandler::Activate(): Already active.\n")));
-	}
-}
-
-//----------------------------------------------------------------
-
-void CEapClientProcessHandler::DoCancel()
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CEapClientProcessHandler::DoCancel()\n")));
-	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapClientProcessHandler::DoCancel()");
-}
-
-//----------------------------------------------------------------------------
-
-TInt CEapClientProcessHandler::RunError(TInt aError)
-{
-	EAP_TRACE_DEBUG(
-		iTools,
-		TRACE_FLAGS_DEFAULT,
-		(EAPL("CEapClientProcessHandler::RunError(): aError=%d, this=0x%08x\n"),
-		aError,
-		this));
-	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapClientProcessHandler::RunError()");
-
-	Cancel();
-
-	return aError;
-}
-
-//----------------------------------------------------------------
-//----------------------------------------------------------------
-//----------------------------------------------------------------
-
-/*
-    DLL harness
-*/
-#ifndef EKA2
-EAP_FUNC_EXPORT TInt E32Dll(TDllReason)
-    {
-    return KErrNone;
-    }
-#endif
-
-//----------------------------------------------------------------
-// end
-