📄 iapconnectdemosocketsreader.cpp
字号:
/*
* ============================================================================
* Name : CIAPConnectDemoSocketsReader from IAPConnectDemoSocketsReader.cpp
* Part of : Internet Access Points Example v2.0
* Created : 01.09.2006 by Forum Nokia
* Version : 2.0
* Copyright: Forum Nokia
* ============================================================================
*/
// INCLUDE FILES
#include "IAPConnectDemoSocketsReader.h"
#include "IAPConnectDemoSocketsObserver.h"
_LIT8(KStartReading, "*Start reading");
_LIT8(KReadingEof, "*Reading Eof");
const TInt KReadBufferSize = 20;
// ========================= MEMBER FUNCTIONS ================================
// Constructor
CIAPConnectDemoSocketsReader::CIAPConnectDemoSocketsReader(
MIAPConnectDemoSocketsObserver& aSocketsObserver,
RSocket& aSocket )
: CActive( EPriorityStandard ),
iSocket( aSocket ),
iSocketsObserver( aSocketsObserver )
{
}
// Destructor.
CIAPConnectDemoSocketsReader::~CIAPConnectDemoSocketsReader()
{
Cancel();
}
// ---------------------------------------------------------------------------
// CIAPConnectDemoSocketsReader::NewL()
// Two-phased constructor.
// ---------------------------------------------------------------------------
//
CIAPConnectDemoSocketsReader* CIAPConnectDemoSocketsReader::NewL(
MIAPConnectDemoSocketsObserver& aSocketsObserver,
RSocket& aSocket )
{
CIAPConnectDemoSocketsReader* self =
CIAPConnectDemoSocketsReader::NewLC( aSocketsObserver, aSocket );
CleanupStack::Pop( self );
return self;
}
// ---------------------------------------------------------------------------
// CIAPConnectDemoSocketsReader::NewLC()
// Two-phased constructor.
// ---------------------------------------------------------------------------
//
CIAPConnectDemoSocketsReader* CIAPConnectDemoSocketsReader::NewLC(
MIAPConnectDemoSocketsObserver& aSocketsObserver,
RSocket& aSocket )
{
CIAPConnectDemoSocketsReader* self =
new ( ELeave ) CIAPConnectDemoSocketsReader( aSocketsObserver,
aSocket );
CleanupStack::PushL( self );
self->ConstructL();
return self;
}
// ---------------------------------------------------------------------------
// CIAPConnectDemoSocketsReader::ConstructL()
// Symbian 2nd phase constructor can leave.
// ---------------------------------------------------------------------------
//
void CIAPConnectDemoSocketsReader::ConstructL()
{
CActiveScheduler::Add( this );
}
// ---------------------------------------------------------------------------
// CIAPConnectDemoSocketsReader::DoCancel()
// Cancels any outstanding operation.
// ---------------------------------------------------------------------------
//
void CIAPConnectDemoSocketsReader::DoCancel()
{
// Cancel asychronous read request
iSocket.CancelRead();
}
// ---------------------------------------------------------------------------
// CIAPConnectDemoSocketsReader::RunL()
// Called when operation completes.
// ---------------------------------------------------------------------------
//
void CIAPConnectDemoSocketsReader::RunL()
{
// Active object request complete handler
switch ( iStatus.Int() )
{
case KErrNone:
// Character has been read from socket
IssueRead(); // Immediately start another read
break;
case KErrDisconnected:
iSocketsObserver.ReportErrorL(
MIAPConnectDemoSocketsObserver::EDisconnected,
iStatus.Int() );
break;
case KErrEof:
iSocketsObserver.ResponseReceivedL( KReadingEof );
break;
default:
iSocketsObserver.ReportErrorL(
MIAPConnectDemoSocketsObserver::EGeneralReadError,
iStatus.Int() );
break;
}
}
// ---------------------------------------------------------------------------
// CIAPConnectDemoSocketsReader::IssueRead()
// Initiates a read from socket.
// ---------------------------------------------------------------------------
//
void CIAPConnectDemoSocketsReader::IssueRead()
{
iSocket.RecvOneOrMore( iBuffer, 0, iStatus, iDummyLength );
SetActive();
}
// ---------------------------------------------------------------------------
// CIAPConnectDemoSocketsReader::Start()
// Initiates a read from socket.
// ---------------------------------------------------------------------------
//
void CIAPConnectDemoSocketsReader::StartL()
{
// Initiate a new read from socket into iBuffer
if ( !IsActive() )
{
iSocketsObserver.ResponseReceivedL( KStartReading );
IssueRead();
}
}
// End of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -