eapol/eapol_framework/eapol_symbian/eap_if/include/REapSession.h
author hgs
Mon, 24 May 2010 20:32:47 +0300
changeset 26 9abfd4f00d37
child 49 43351a4f2da3
permissions -rw-r--r--
201021
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2001-2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  EAP and WLAN authentication protocols.
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
* %version: 21 %
hgs
parents:
diff changeset
    20
*/
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#ifndef EAPSESSION_H_
hgs
parents:
diff changeset
    24
#define EAPSESSION_H_
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
#include <e32base.h>
hgs
parents:
diff changeset
    27
#include <e32std.h>
hgs
parents:
diff changeset
    28
#include <ecom.h>
hgs
parents:
diff changeset
    29
#include "EapServerClientDef.h"
hgs
parents:
diff changeset
    30
#include "EapServer.h"
hgs
parents:
diff changeset
    31
#include "EapScheduler.h"
hgs
parents:
diff changeset
    32
#include "eap_am_tools.h"
hgs
parents:
diff changeset
    33
#include "eap_am_types.h"
hgs
parents:
diff changeset
    34
#include "SendPacketHandler.h"
hgs
parents:
diff changeset
    35
#include "EapMessageQueue.h"
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
//----------------------------------------------------------------
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
class MEapolPacketHandler
hgs
parents:
diff changeset
    40
    {
hgs
parents:
diff changeset
    41
public:
hgs
parents:
diff changeset
    42
    virtual void EapolHandleL(const TDesC8& aData) = 0;
hgs
parents:
diff changeset
    43
    };
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
//----------------------------------------------------------------
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
class CSendHandler;
hgs
parents:
diff changeset
    48
class CEapCoreInterfaceImplementation;
hgs
parents:
diff changeset
    49
class CEapClientProcessHandler;
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
//----------------------------------------------------------------
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
class CEapolPacketHandler : public CBase, public MEapolPacketHandler
hgs
parents:
diff changeset
    54
    {
hgs
parents:
diff changeset
    55
    void EapolHandleL(const TDesC8& aData);
hgs
parents:
diff changeset
    56
private:
hgs
parents:
diff changeset
    57
    CEapCoreInterfaceImplementation* iClient;
hgs
parents:
diff changeset
    58
    };
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
//----------------------------------------------------------------
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
class EAP_EXPORT REapSession :  public RSessionBase
hgs
parents:
diff changeset
    63
    {
hgs
parents:
diff changeset
    64
public:
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
    // construct
hgs
parents:
diff changeset
    67
    inline REapSession()
hgs
parents:
diff changeset
    68
		: iSendHandler(0)
hgs
parents:
diff changeset
    69
		, iProcessHandler(0)
hgs
parents:
diff changeset
    70
		, iStatus(KErrNone)
hgs
parents:
diff changeset
    71
		, iTools(0)
hgs
parents:
diff changeset
    72
		, iClient(0)
hgs
parents:
diff changeset
    73
		, iEapMessageQueue(0)
hgs
parents:
diff changeset
    74
	{
hgs
parents:
diff changeset
    75
	};
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
	EAP_FUNC_IMPORT virtual ~REapSession();
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
	EAP_FUNC_IMPORT void ConnectL(
hgs
parents:
diff changeset
    81
		abs_eap_am_tools_c * const tools,
hgs
parents:
diff changeset
    82
		MSendPacketHandler * Client,
hgs
parents:
diff changeset
    83
		const TBuf<KMaxServerExe> ServerName,
hgs
parents:
diff changeset
    84
		const TBuf<KMaxServerExe> ServerExe,
hgs
parents:
diff changeset
    85
		const void * const aConfigurationData,
hgs
parents:
diff changeset
    86
		const TInt aConfigurationDataLength,
hgs
parents:
diff changeset
    87
		const TEapRequests aIfRequest);
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
    EAP_FUNC_IMPORT void Close();
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
    EAP_FUNC_IMPORT bool get_is_valid();
hgs
parents:
diff changeset
    92
 
hgs
parents:
diff changeset
    93
    /// Function receives the data message from lower layer.
hgs
parents:
diff changeset
    94
    /// Data is formatted to Attribute-Value Pairs.
hgs
parents:
diff changeset
    95
    /// Look at eap_tlv_header_c and eap_tlv_message_data_c.
hgs
parents:
diff changeset
    96
    EAP_FUNC_IMPORT eap_status_e process_data(const TEapRequests aMessageType, const void * const data, const u32_t length);
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
	const EapMessageBuffer * GetFirstMessage();
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
	TInt DeleteFirstMessage();
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
	void Process(const EapMessageBuffer * const buffer, TRequestStatus &aStatus) const;
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
private:
hgs
parents:
diff changeset
   105
    /**
hgs
parents:
diff changeset
   106
    * Version information.
hgs
parents:
diff changeset
   107
    * @return Version information.
hgs
parents:
diff changeset
   108
    */
hgs
parents:
diff changeset
   109
    TVersion Version() const;
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
    friend class CSendHandler;
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
    void Receive(TDes8& aBuffer, TRequestStatus& aStatus);
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
    void CancelReceive();
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
    CSendHandler* iSendHandler;
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
	CEapClientProcessHandler* iProcessHandler;
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
    TRequestStatus iStatus;
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
    abs_eap_am_tools_c * iTools;
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
    MSendPacketHandler* iClient;
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
    RProcess iServer;
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
	EapMessageQueue* iEapMessageQueue;
hgs
parents:
diff changeset
   130
    };
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
//----------------------------------------------------------------
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
class CSendHandler : public CActive
hgs
parents:
diff changeset
   135
    {
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
public:
hgs
parents:
diff changeset
   138
    // construct/destruct
hgs
parents:
diff changeset
   139
    CSendHandler(
hgs
parents:
diff changeset
   140
		abs_eap_am_tools_c * const tools,
hgs
parents:
diff changeset
   141
		REapSession& aSession); //MEapolPacketHandler& aHandler, 
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
    virtual ~CSendHandler();
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
    // operation
hgs
parents:
diff changeset
   146
    void Receive();
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
private:
hgs
parents:
diff changeset
   149
    // from CActive
hgs
parents:
diff changeset
   150
    void RunL();
hgs
parents:
diff changeset
   151
    void DoCancel();
hgs
parents:
diff changeset
   152
	TInt RunError(TInt aError);
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
private:
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
    abs_eap_am_tools_c * iTools;
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
    REapSession& iSession;
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
    TBuf8<KMaxEapData> iBuffer;
hgs
parents:
diff changeset
   162
   
hgs
parents:
diff changeset
   163
    };
hgs
parents:
diff changeset
   164
hgs
parents:
diff changeset
   165
//----------------------------------------------------------------
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
class CEapClientProcessHandler
hgs
parents:
diff changeset
   168
: public CActive
hgs
parents:
diff changeset
   169
    {
hgs
parents:
diff changeset
   170
hgs
parents:
diff changeset
   171
public:
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
    CEapClientProcessHandler(
hgs
parents:
diff changeset
   174
		abs_eap_am_tools_c * const tools,
hgs
parents:
diff changeset
   175
		REapSession& aSession);
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
    virtual ~CEapClientProcessHandler();
hgs
parents:
diff changeset
   178
hgs
parents:
diff changeset
   179
	void Activate();
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
private:
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
    // from CActive
hgs
parents:
diff changeset
   184
    void RunL();
hgs
parents:
diff changeset
   185
    void DoCancel();
hgs
parents:
diff changeset
   186
	TInt RunError(TInt aError);
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
private:
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
    abs_eap_am_tools_c * iTools;
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
    REapSession& iSession;
hgs
parents:
diff changeset
   194
hgs
parents:
diff changeset
   195
	bool iProcessPending;
hgs
parents:
diff changeset
   196
    };
hgs
parents:
diff changeset
   197
hgs
parents:
diff changeset
   198
//----------------------------------------------------------------
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
#endif /* EAPSESSION_H_ */