?? sipexsocketwriter.cpp
字號:
/*
* ==============================================================================
* Name : SIPExSocketWriter.cpp
* Part of : SIPExSocketEngine
* Interface :
* Description :
* Version :
*
* Copyright (c) 2004-2006 Nokia Corporation.
* This material, including documentation and any related
* computer programs, is protected by copyright controlled by
* Nokia Corporation.
* ==============================================================================
*/
// INCLUDES
#include "SIPExSocketWriter.h"
#include "SIPExWriterNotifier.h"
#include <in_sock.h>
// -----------------------------------------------------------------------------
// CSIPExSocketWriter::NewL
// Static constructor
// -----------------------------------------------------------------------------
//
CSIPExSocketWriter* CSIPExSocketWriter::NewL(
RSocket& aSocket,
MSIPExWriterNotifier& aNotifier )
{
CSIPExSocketWriter* self = NewLC( aSocket, aNotifier );
CleanupStack::Pop(self);
return self;
}
// -----------------------------------------------------------------------------
// CSIPExSocketWriter::NewLC
// Static constructor
// -----------------------------------------------------------------------------
//
CSIPExSocketWriter* CSIPExSocketWriter::NewLC(
RSocket& aSocket,
MSIPExWriterNotifier& aNotifier )
{
CSIPExSocketWriter* self = new (ELeave) CSIPExSocketWriter( aSocket, aNotifier );
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
// -----------------------------------------------------------------------------
// CSIPExSocketWriter::CSIPExSocketWriter
// Constructor
// -----------------------------------------------------------------------------
//
CSIPExSocketWriter::CSIPExSocketWriter(
RSocket& aSocket,
MSIPExWriterNotifier& aNotifier )
: CActive(CActive::EPriorityStandard),
iNotifier( aNotifier ),
iSocket( aSocket )
{
CActiveScheduler::Add(this);
}
// -----------------------------------------------------------------------------
// CSIPExSocketWriter::~CSIPExSocketWriter
// Destructor
// -----------------------------------------------------------------------------
//
CSIPExSocketWriter::~CSIPExSocketWriter()
{
Cancel();
delete iBuffer;
}
// -----------------------------------------------------------------------------
// CSIPExSocketWriter::ConstructL
// 2nd phase constructor
// -----------------------------------------------------------------------------
//
void CSIPExSocketWriter::ConstructL()
{
}
// -----------------------------------------------------------------------------
// CSIPExSocketWriter::DoCancel
// From CActive
// -----------------------------------------------------------------------------
//
void CSIPExSocketWriter::DoCancel()
{
iSocket.CancelWrite();
}
// -----------------------------------------------------------------------------
// CSIPExSocketWriter::RunL
// From CActive
// -----------------------------------------------------------------------------
//
void CSIPExSocketWriter::RunL()
{
if( iBuffer )
{
delete iBuffer;
iBuffer = NULL;
}
if( iStatus.Int() == KErrNone )
{
iNotifier.WriteDone();
}
else
{
iNotifier.ErrorInWriting( iStatus.Int() );
}
}
// -----------------------------------------------------------------------------
// CSIPExSocketWriter::Write
// Asynchronous
// Copy the parameter to the member variable and start asynchronous writing.
// -----------------------------------------------------------------------------
//
void CSIPExSocketWriter::Write( const TDesC8& aBuffer )
{
if( iBuffer )
{
delete iBuffer;
iBuffer = NULL;
}
TRAPD( err, iBuffer = aBuffer.AllocL() );
if( !IsActive() && err == KErrNone )
{
iSocket.Write( *iBuffer, iStatus );
SetActive();
}
}
// End of file
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -