📄 socketlistener.cpp
字号:
// SocketListener.cpp
//
#include "SocketListener.h"
#include "sserv.h"
#include "http.h"
CSocketListener::CSocketListener(CSmallServServer& aServer)
: CActive(CActive::EPriorityStandard)
, iServerT(aServer)
{
CActiveScheduler::Add(this);
}
void CSocketListener::ConstructL()
{
User::LeaveIfError(iServer.Connect());
}
CSocketListener::~CSocketListener()
{
Cancel();
delete iClient;
iListener.Close();
iServer.Close();
}
CSocketListener* CSocketListener::NewLC(CSmallServServer& aServer)
{
CSocketListener* object = new (ELeave) CSocketListener(aServer);
CleanupStack::PushL(object);
object->ConstructL();
return object;
}
void CSocketListener::RunL()
{
iServerT.AddRequest(*iClient);
iClient->ProcessRequest();
if (iStatus.Int() == KErrNone)
{
AcceptNextConnectionL();
}
}
void CSocketListener::DoCancel()
{
iListener.CancelAccept();
}
void CSocketListener::StartListeningL(const TDesC& aProtocol, const TSockAddr& aAddr, TInt aQLength)
{
TProtocolDesc desc;
User::LeaveIfError(iServer.FindProtocol(aProtocol, desc));
User::LeaveIfError(iListener.Open( iServer
, desc.iAddrFamily
, desc.iSockType
, desc.iProtocol
));
iListenAddr = aAddr;
User::LeaveIfError(iListener.Bind(iListenAddr));
User::LeaveIfError(iListener.Listen(aQLength));
AcceptNextConnectionL();
}
void CSocketListener::AcceptNextConnectionL()
{
iClient = CHTTPProtocol::NewL();
RSocket& client = iClient->Socket(iServer);
iListener.Accept(client, iStatus);
SetActive();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -