loadgen/engine/src/loadgen_httpreceiver.cpp
author hgs
Fri, 03 Sep 2010 17:11:21 +0300
changeset 51 b048e15729d6
permissions -rw-r--r--
201035
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
hgs
parents:
diff changeset
     1
hgs
parents:
diff changeset
     2
#include <commdb.h>
hgs
parents:
diff changeset
     3
#include <commdbconnpref.h>
hgs
parents:
diff changeset
     4
#include "loadgen_httpreceiver.h"
hgs
parents:
diff changeset
     5
hgs
parents:
diff changeset
     6
// CONSTANTS
hgs
parents:
diff changeset
     7
_LIT8( KHttpScheme, "http" );
hgs
parents:
diff changeset
     8
_LIT8( KSchemeAddon, "://" );
hgs
parents:
diff changeset
     9
// This client accepts all content types.
hgs
parents:
diff changeset
    10
_LIT8(KAccept, "*/*");
hgs
parents:
diff changeset
    11
hgs
parents:
diff changeset
    12
CHTTPReceiver* CHTTPReceiver::NewL( MHTTPRecvObserver& aObserver )
hgs
parents:
diff changeset
    13
	{
hgs
parents:
diff changeset
    14
	CHTTPReceiver* self = CHTTPReceiver::NewLC( aObserver );
hgs
parents:
diff changeset
    15
	CleanupStack::Pop( self );
hgs
parents:
diff changeset
    16
	return self;
hgs
parents:
diff changeset
    17
	}
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
CHTTPReceiver* CHTTPReceiver::NewLC( MHTTPRecvObserver& aObserver )
hgs
parents:
diff changeset
    20
	{
hgs
parents:
diff changeset
    21
	CHTTPReceiver* self = new (ELeave)CHTTPReceiver( aObserver );
hgs
parents:
diff changeset
    22
	CleanupStack::PushL( self );
hgs
parents:
diff changeset
    23
	self->ConstructL();
hgs
parents:
diff changeset
    24
	return self;
hgs
parents:
diff changeset
    25
	}
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
CHTTPReceiver::CHTTPReceiver( MHTTPRecvObserver& aObserver ) :
hgs
parents:
diff changeset
    28
	iObserver(aObserver), iRunning(EFalse), iConnectionSetupDone(EFalse)
hgs
parents:
diff changeset
    29
	{
hgs
parents:
diff changeset
    30
	}
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
void CHTTPReceiver::ConstructL()
hgs
parents:
diff changeset
    33
	{
hgs
parents:
diff changeset
    34
#ifdef _DEBUG
hgs
parents:
diff changeset
    35
    User::LeaveIfError( iFs.Connect() );
hgs
parents:
diff changeset
    36
#endif
hgs
parents:
diff changeset
    37
	}
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
CHTTPReceiver::~CHTTPReceiver()
hgs
parents:
diff changeset
    40
	{
hgs
parents:
diff changeset
    41
	TRACE( "Entry: CHTTPReceiver::~CHTTPReceiver" );
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
	CancelTransaction();
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
	TRAP_IGNORE( iSession.DisconnectL() );
hgs
parents:
diff changeset
    46
	iSession.Close();
hgs
parents:
diff changeset
    47
	iConnection.Stop();
hgs
parents:
diff changeset
    48
	iConnection.Close();
hgs
parents:
diff changeset
    49
	iSocketServ.Close();
hgs
parents:
diff changeset
    50
    
hgs
parents:
diff changeset
    51
	TRACE( "Entry: CHTTPReceiver::~CHTTPReceiver - delete iUrl" );
hgs
parents:
diff changeset
    52
	delete iUrl;
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
#ifdef _DEBUG
hgs
parents:
diff changeset
    55
	iFs.Close();
hgs
parents:
diff changeset
    56
#endif
hgs
parents:
diff changeset
    57
	TRACE( "Exit: CHTTPReceiver::~CHTTPReceiver" );
hgs
parents:
diff changeset
    58
	}
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
void CHTTPReceiver::CancelTransaction()
hgs
parents:
diff changeset
    61
	{
hgs
parents:
diff changeset
    62
	if ( !iRunning)
hgs
parents:
diff changeset
    63
		return;
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
	TRACE( "Entry: CHTTPReceiver::CancelTransaction" );
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
	if ( iRunning)
hgs
parents:
diff changeset
    68
		{
hgs
parents:
diff changeset
    69
		iTransaction.Close();
hgs
parents:
diff changeset
    70
		iRunning = EFalse;
hgs
parents:
diff changeset
    71
		}
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
	TRACE( "Exit: CHTTPReceiver::CancelTransaction" );
hgs
parents:
diff changeset
    74
	}
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    77
// CHTTPReceiver::SendHTTPGetL()
hgs
parents:
diff changeset
    78
//
hgs
parents:
diff changeset
    79
// Start a new HTTP GET transaction.
hgs
parents:
diff changeset
    80
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    81
void CHTTPReceiver::SendHTTPGetL( const TDesC8& aURL )
hgs
parents:
diff changeset
    82
	{
hgs
parents:
diff changeset
    83
	TRACE( "Entry: CHTTPReceiver::SendHTTPGetL" );
hgs
parents:
diff changeset
    84
	
hgs
parents:
diff changeset
    85
	iResponseStatus = KErrGeneral;
hgs
parents:
diff changeset
    86
	
hgs
parents:
diff changeset
    87
#ifdef _DEBUG
hgs
parents:
diff changeset
    88
    iResponseFile.Replace( iFs, _L("C:\\Data\\loadgen.htm"), EFileWrite );
hgs
parents:
diff changeset
    89
#endif
hgs
parents:
diff changeset
    90
    
hgs
parents:
diff changeset
    91
	SetupConnectionL();	
hgs
parents:
diff changeset
    92
	
hgs
parents:
diff changeset
    93
	// Parse string to URI (as defined in RFC2396)
hgs
parents:
diff changeset
    94
	TUriParser8 uri;
hgs
parents:
diff changeset
    95
	
hgs
parents:
diff changeset
    96
	CheckForHTTPSchemeL(uri, aURL);
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
	RStringF method = iSession.StringPool().StringF(HTTP::EGET, RHTTPSession::GetTable());
hgs
parents:
diff changeset
    99
	CleanupClosePushL( method );
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
	iTransaction = iSession.OpenTransactionL(uri, *this, method);
hgs
parents:
diff changeset
   102
hgs
parents:
diff changeset
   103
	// Set headers for request: accepted content type
hgs
parents:
diff changeset
   104
	RHTTPHeaders hdr = iTransaction.Request().GetHeaderCollection();
hgs
parents:
diff changeset
   105
	SetHeaderL(hdr, HTTP::EAccept, KAccept);
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
	iTransaction.SubmitL();
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
	iRunning = ETrue;
hgs
parents:
diff changeset
   110
	CleanupStack::PopAndDestroy();
hgs
parents:
diff changeset
   111
	TRACE( "Exit: CHTTPReceiver::SendHTTPGetL" );
hgs
parents:
diff changeset
   112
	return;
hgs
parents:
diff changeset
   113
	}
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
void CHTTPReceiver::CheckForHTTPSchemeL(TUriParser8& aUri, const TDesC8& aURL)
hgs
parents:
diff changeset
   116
	{
hgs
parents:
diff changeset
   117
	if( iUrl )
hgs
parents:
diff changeset
   118
	    {
hgs
parents:
diff changeset
   119
	    delete iUrl;
hgs
parents:
diff changeset
   120
	    iUrl = NULL;
hgs
parents:
diff changeset
   121
	    }
hgs
parents:
diff changeset
   122
	
hgs
parents:
diff changeset
   123
	iUrl = aURL.AllocL();
hgs
parents:
diff changeset
   124
	aUri.Parse( *iUrl );
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
	TPtrC8 scheme( aUri.Extract (EUriScheme) );
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
	// unsupported or no scheme in url.
hgs
parents:
diff changeset
   129
	// Insert 'http://' to the beginning of it.
hgs
parents:
diff changeset
   130
	if ( scheme != KHttpScheme )
hgs
parents:
diff changeset
   131
		{
hgs
parents:
diff changeset
   132
		HBufC8* tempBuf = HBufC8::NewL( KHttpScheme().Length() + KSchemeAddon().Length() + aURL.Length() );
hgs
parents:
diff changeset
   133
		CleanupStack::PushL( tempBuf );
hgs
parents:
diff changeset
   134
		tempBuf->Des().Append( KHttpScheme );
hgs
parents:
diff changeset
   135
		tempBuf->Des().Append( KSchemeAddon );
hgs
parents:
diff changeset
   136
		tempBuf->Des().Append( aURL );
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
		if( iUrl )
hgs
parents:
diff changeset
   139
		    {
hgs
parents:
diff changeset
   140
            delete iUrl;
hgs
parents:
diff changeset
   141
            iUrl = NULL;
hgs
parents:
diff changeset
   142
		    }
hgs
parents:
diff changeset
   143
		iUrl = tempBuf;
hgs
parents:
diff changeset
   144
		aUri.Parse( *iUrl );
hgs
parents:
diff changeset
   145
		CleanupStack::PopAndDestroy( tempBuf );
hgs
parents:
diff changeset
   146
		}
hgs
parents:
diff changeset
   147
	}
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
// Used to set header value to HTTP request
hgs
parents:
diff changeset
   150
void CHTTPReceiver::SetHeaderL (RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue)
hgs
parents:
diff changeset
   151
	{
hgs
parents:
diff changeset
   152
	RStringF valStr = iSession.StringPool().OpenFStringL (aHdrValue);
hgs
parents:
diff changeset
   153
	CleanupClosePushL (valStr);
hgs
parents:
diff changeset
   154
	THTTPHdrVal val(valStr);
hgs
parents:
diff changeset
   155
	aHeaders.SetFieldL (iSession.StringPool().StringF (aHdrField, RHTTPSession::GetTable ()), val);
hgs
parents:
diff changeset
   156
	CleanupStack::PopAndDestroy (); // valStr
hgs
parents:
diff changeset
   157
	}
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
// Inherited from MHTTPTransactionCallback
hgs
parents:
diff changeset
   160
// Called by framework to pass transaction events.
hgs
parents:
diff changeset
   161
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   162
void CHTTPReceiver::MHFRunL( RHTTPTransaction aTransaction,	const THTTPEvent& aEvent )
hgs
parents:
diff changeset
   163
	{
hgs
parents:
diff changeset
   164
	TRACE( "Entry: CHTTPReceiver::MHFRunL" );
hgs
parents:
diff changeset
   165
	TRACE2( "Entry: CHTTPReceiver::MHFRunL <%d>", aEvent.iStatus );
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
	// state check
hgs
parents:
diff changeset
   168
	if ( !iRunning )
hgs
parents:
diff changeset
   169
		{
hgs
parents:
diff changeset
   170
		TRACE( "Exit1: CHTTPReceiver::MHFRunL: recv in wrong state" );
hgs
parents:
diff changeset
   171
		return;
hgs
parents:
diff changeset
   172
		}
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
	switch ( aEvent.iStatus )
hgs
parents:
diff changeset
   175
		{
hgs
parents:
diff changeset
   176
	case THTTPEvent::EGotResponseHeaders:
hgs
parents:
diff changeset
   177
		{
hgs
parents:
diff changeset
   178
		TRACE( "Entry: CHTTPReceiver::MHFRunL EGotResponseHeaders" );
hgs
parents:
diff changeset
   179
		// Get HTTP status code from header (e.g. 200)
hgs
parents:
diff changeset
   180
		RHTTPResponse resp = aTransaction.Response();
hgs
parents:
diff changeset
   181
		iResponseStatus = resp.StatusCode();
hgs
parents:
diff changeset
   182
		}
hgs
parents:
diff changeset
   183
		break;
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
	case THTTPEvent::EGotResponseBodyData:
hgs
parents:
diff changeset
   186
		{
hgs
parents:
diff changeset
   187
		// Get the body data supplier
hgs
parents:
diff changeset
   188
		TRACE( "Entry: CHTTPReceiver::MHFRunL EGotResponseBodyData" );
hgs
parents:
diff changeset
   189
		MHTTPDataSupplier* body = aTransaction.Response().Body ();
hgs
parents:
diff changeset
   190
		TPtrC8 dataChunk;
hgs
parents:
diff changeset
   191
		body->GetNextDataPart ( dataChunk );
hgs
parents:
diff changeset
   192
#ifdef _DEBUG
hgs
parents:
diff changeset
   193
		if ( dataChunk.Length() )
hgs
parents:
diff changeset
   194
		    {
hgs
parents:
diff changeset
   195
			iResponseFile.Write( dataChunk );
hgs
parents:
diff changeset
   196
		    }
hgs
parents:
diff changeset
   197
#endif
hgs
parents:
diff changeset
   198
		body->ReleaseData ();
hgs
parents:
diff changeset
   199
		}
hgs
parents:
diff changeset
   200
		break;
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
	case THTTPEvent::EResponseComplete:
hgs
parents:
diff changeset
   203
		{
hgs
parents:
diff changeset
   204
		// Indicates that header & body of response is completely received.
hgs
parents:
diff changeset
   205
		// Notify Observer
hgs
parents:
diff changeset
   206
		TRACE( "Entry: CHTTPReceiver::MHFRunL EResponseComplete" );
hgs
parents:
diff changeset
   207
		}
hgs
parents:
diff changeset
   208
		break;
hgs
parents:
diff changeset
   209
hgs
parents:
diff changeset
   210
	case THTTPEvent::ESucceeded:
hgs
parents:
diff changeset
   211
		{
hgs
parents:
diff changeset
   212
		// Transaction can be closed now. It's not needed anymore.
hgs
parents:
diff changeset
   213
		TRACE( "Entry: CHTTPReceiver::MHFRunL ESucceeded" );
hgs
parents:
diff changeset
   214
		Finalize();
hgs
parents:
diff changeset
   215
		}
hgs
parents:
diff changeset
   216
		break;
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
	case THTTPEvent::EFailed:
hgs
parents:
diff changeset
   219
		{
hgs
parents:
diff changeset
   220
		TRACE( "Entry: CHTTPReceiver::MHFRunL EFailed" );
hgs
parents:
diff changeset
   221
		iResponseStatus = KErrGeneral;
hgs
parents:
diff changeset
   222
		Finalize();
hgs
parents:
diff changeset
   223
		}
hgs
parents:
diff changeset
   224
		break;
hgs
parents:
diff changeset
   225
hgs
parents:
diff changeset
   226
	default:
hgs
parents:
diff changeset
   227
		TRACE( "Entry: CHTTPReceiver::MHFRunL EDefault" );
hgs
parents:
diff changeset
   228
		break;
hgs
parents:
diff changeset
   229
		}
hgs
parents:
diff changeset
   230
	}
hgs
parents:
diff changeset
   231
hgs
parents:
diff changeset
   232
// Called by framework when *leave* occurs in handling of transaction event.
hgs
parents:
diff changeset
   233
// These errors must be handled, or otherwise HTTP-CORE 6 panic is thrown.
hgs
parents:
diff changeset
   234
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   235
TInt CHTTPReceiver::MHFRunError ( TInt aError, RHTTPTransaction /*aTransaction*/, const THTTPEvent& /*aEvent*/ )
hgs
parents:
diff changeset
   236
	{
hgs
parents:
diff changeset
   237
	TRACE( "Entry: CHTTPReceiver::MHFRunError" );
hgs
parents:
diff changeset
   238
	iResponseStatus = aError;
hgs
parents:
diff changeset
   239
	Finalize();
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241
	TRACE( "Exit: CHTTPReceiver::MHFRunError" );
hgs
parents:
diff changeset
   242
	return KErrNone;
hgs
parents:
diff changeset
   243
	}
hgs
parents:
diff changeset
   244
hgs
parents:
diff changeset
   245
void CHTTPReceiver::SetupConnectionL ()
hgs
parents:
diff changeset
   246
	{
hgs
parents:
diff changeset
   247
	TRACE( "Entry: CHTTPReceiver::StartConnectionL" );
hgs
parents:
diff changeset
   248
hgs
parents:
diff changeset
   249
	// check if conncetion is already open
hgs
parents:
diff changeset
   250
	if ( iRunning )
hgs
parents:
diff changeset
   251
		{
hgs
parents:
diff changeset
   252
		return;
hgs
parents:
diff changeset
   253
		}
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
	if ( iConnectionSetupDone )
hgs
parents:
diff changeset
   256
	    {
hgs
parents:
diff changeset
   257
		return;
hgs
parents:
diff changeset
   258
	    }
hgs
parents:
diff changeset
   259
hgs
parents:
diff changeset
   260
	iConnectionSetupDone = ETrue;
hgs
parents:
diff changeset
   261
	
hgs
parents:
diff changeset
   262
	// open HTTP session
hgs
parents:
diff changeset
   263
	iSession.OpenL();
hgs
parents:
diff changeset
   264
hgs
parents:
diff changeset
   265
	// open socket server
hgs
parents:
diff changeset
   266
	TInt result = iSocketServ.Connect();
hgs
parents:
diff changeset
   267
	if ( result == KErrNone)
hgs
parents:
diff changeset
   268
		{
hgs
parents:
diff changeset
   269
		// open connection
hgs
parents:
diff changeset
   270
		result = iConnection.Open(iSocketServ);
hgs
parents:
diff changeset
   271
		if ( result == KErrNone)
hgs
parents:
diff changeset
   272
			{
hgs
parents:
diff changeset
   273
			// set overrides
hgs
parents:
diff changeset
   274
			TCommDbConnPref pref;
hgs
parents:
diff changeset
   275
			pref.SetDialogPreference (ECommDbDialogPrefPrompt);
hgs
parents:
diff changeset
   276
			//pref.SetDirection (ECommDbConnectionDirectionOutgoing);
hgs
parents:
diff changeset
   277
			//pref.SetIapId (accessPoint);
hgs
parents:
diff changeset
   278
hgs
parents:
diff changeset
   279
			// start with overrides
hgs
parents:
diff changeset
   280
			result = iConnection.Start(pref);
hgs
parents:
diff changeset
   281
hgs
parents:
diff changeset
   282
			if ( result == KErrNone)
hgs
parents:
diff changeset
   283
				{
hgs
parents:
diff changeset
   284
				// get connection info from iSession
hgs
parents:
diff changeset
   285
				RHTTPConnectionInfo connInfo = iSession.ConnectionInfo ();
hgs
parents:
diff changeset
   286
				RStringPool pool = iSession.StringPool ();
hgs
parents:
diff changeset
   287
hgs
parents:
diff changeset
   288
				// set socket server
hgs
parents:
diff changeset
   289
				connInfo.SetPropertyL (pool.StringF (HTTP::EHttpSocketServ,
hgs
parents:
diff changeset
   290
						RHTTPSession::GetTable () ),
hgs
parents:
diff changeset
   291
						THTTPHdrVal( iSocketServ.Handle () ) );
hgs
parents:
diff changeset
   292
hgs
parents:
diff changeset
   293
				// attach to connection
hgs
parents:
diff changeset
   294
				TInt connectionPtr= REINTERPRET_CAST( TInt,
hgs
parents:
diff changeset
   295
						&iConnection );
hgs
parents:
diff changeset
   296
hgs
parents:
diff changeset
   297
				connInfo.SetPropertyL (pool.StringF (
hgs
parents:
diff changeset
   298
						HTTP::EHttpSocketConnection,
hgs
parents:
diff changeset
   299
						RHTTPSession::GetTable () ),
hgs
parents:
diff changeset
   300
						THTTPHdrVal (connectionPtr) );
hgs
parents:
diff changeset
   301
hgs
parents:
diff changeset
   302
#if defined(__WINSCW__) || defined(__WINS__) // if Emulator
hgs
parents:
diff changeset
   303
				_LIT8(KProxyAddr, "192.168.0.252:4040");
hgs
parents:
diff changeset
   304
				TBufC8<30> proxyAddr(KProxyAddr);
hgs
parents:
diff changeset
   305
hgs
parents:
diff changeset
   306
				RStringF prxAddr = iSession.StringPool().OpenFStringL (proxyAddr);
hgs
parents:
diff changeset
   307
				CleanupClosePushL (prxAddr);
hgs
parents:
diff changeset
   308
				THTTPHdrVal prxUsage(iSession.StringPool().StringF (HTTP::EUseProxy,
hgs
parents:
diff changeset
   309
						RHTTPSession::GetTable ()));
hgs
parents:
diff changeset
   310
				iSession.ConnectionInfo().SetPropertyL (iSession.StringPool().StringF (HTTP::EProxyUsage,
hgs
parents:
diff changeset
   311
						RHTTPSession::GetTable ()), prxUsage);
hgs
parents:
diff changeset
   312
				iSession.ConnectionInfo().SetPropertyL (iSession.StringPool().StringF (HTTP::EProxyAddress,
hgs
parents:
diff changeset
   313
						RHTTPSession::GetTable ()), prxAddr);
hgs
parents:
diff changeset
   314
				CleanupStack::PopAndDestroy (); // prxAddr	
hgs
parents:
diff changeset
   315
#endif 
hgs
parents:
diff changeset
   316
hgs
parents:
diff changeset
   317
				}
hgs
parents:
diff changeset
   318
			else
hgs
parents:
diff changeset
   319
				{
hgs
parents:
diff changeset
   320
				TRACE2( "CHTTPReceiver:: connection start: <%d>", result );
hgs
parents:
diff changeset
   321
				}
hgs
parents:
diff changeset
   322
			}
hgs
parents:
diff changeset
   323
		else
hgs
parents:
diff changeset
   324
			{
hgs
parents:
diff changeset
   325
			TRACE2( "CHTTPReceiver:: connection open: <%d>", result );
hgs
parents:
diff changeset
   326
			}
hgs
parents:
diff changeset
   327
		}
hgs
parents:
diff changeset
   328
	else
hgs
parents:
diff changeset
   329
		{
hgs
parents:
diff changeset
   330
		TRACE2( "CHTTPReceiver:: connection to socket server: <%d>", result );		
hgs
parents:
diff changeset
   331
		}
hgs
parents:
diff changeset
   332
hgs
parents:
diff changeset
   333
	User::LeaveIfError( result );
hgs
parents:
diff changeset
   334
	
hgs
parents:
diff changeset
   335
	TRACE( "Exit: CHTTPReceiver::StartConnectionL" );
hgs
parents:
diff changeset
   336
	}
hgs
parents:
diff changeset
   337
hgs
parents:
diff changeset
   338
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   339
// CHTTPReceiver::Finalize
hgs
parents:
diff changeset
   340
// 
hgs
parents:
diff changeset
   341
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   342
//
hgs
parents:
diff changeset
   343
void CHTTPReceiver::Finalize()
hgs
parents:
diff changeset
   344
    {
hgs
parents:
diff changeset
   345
    TRACE( "Exit: CHTTPReceiver::Finalize" );
hgs
parents:
diff changeset
   346
#ifdef _DEBUG
hgs
parents:
diff changeset
   347
    iResponseFile.Close();
hgs
parents:
diff changeset
   348
#endif
hgs
parents:
diff changeset
   349
    iTransaction.Close();
hgs
parents:
diff changeset
   350
    iRunning = EFalse;
hgs
parents:
diff changeset
   351
    iObserver.HTTPFileReceived( iResponseStatus );
hgs
parents:
diff changeset
   352
    TRACE( "Exit: CHTTPReceiver::Finalize" );
hgs
parents:
diff changeset
   353
    }