Hi
My function RUNL is never called with the following code. I anyone has an idea, i don't undertasnd why ?
Regards
ERIC
#include "HttpEventHandler.h"
CHttpEventHandler::~CHttpEventHandler()
{
Cancel();
}
CHttpEventHandler* CHttpEventHandler::NewL(CXcv1Engine& pengine)
{
CHttpEventHandler* me = new (ELeave) CHttpEventHandler(pengine);
CActiveScheduler::Add(me);
//me->ConstructL();
return me;
}
void CHttpEventHandler::SetEngine(CXcv1Engine* pengine)
{
//engine=pengine;
}
CHttpEventHandler::CHttpEventHandler(CXcv1Engine& pengine):
CActive(CActive::EPriorityStandard),engine(pengine)
{
}
void CHttpEventHandler:oCancel()
{
iSocket.CancelAll();
}
void CHttpEventHandler::GetData(const TDesC& aServ,const TDesC& aDoc)
{
if (IsActive()) return;
TInt res=iSocketSrv.Connect();
if (res!=KErrNone)
{
Cleanup(res);
return;
}
res=iSocket.Open(iSocketSrv,KAfInet,KSockStream,KProtocolInetTcp);
if (res!=KErrNone)
{
Cleanup(res);
return;
}
/* res=iResolver.Open(iSocketSrv,KAfInet,KProtocolInetTcp);
if (res!=KErrNone)
{
Cleanup(res);
return;
}*/
ipAddr.Copy(aServ);
iUrlDoc.Copy(aDoc);
iState=EConnecting;
TInetAddr destAddr;
//destAddr.Copy(ipAddr);
destAddr.SetAddress(INET_ADDR(10,22,98,56));
destAddr.SetPort(8090);
iState=EConnecting;
iSocket.Connect(destAddr,iStatus);
SetActive();
}
void CHttpEventHandler::RunL()
{
TBuf<50> msg;
xcU32 j;
if (iStatus!=KErrNone)
{
Cleanup(iStatus.Int());
}
else
{
switch (iState)
{
case EResolvingName:
{
TInetAddr destAddr;
//destAddr=iNameEntry().iAddr;
destAddr.Copy(ipAddr);
destAddr.SetPort(8080);
iState=EConnecting;
iSocket.Connect(destAddr,iStatus);
SetActive();
break;
}
case EConnecting:
{
_LIT(KCRLF,"\xD,\xA");
_LIT(KGetCommand,"Get ");
TBuf8<300> getBuff;
getBuff.Copy(KGetCommand);
getBuff.Append(iUrlDoc);
getBuff.Append(KCRLF);
iState=ESending;
iSocket.Send(getBuff,0,iStatus);
SetActive();
break;
}
case ESending:
{
iState=EReceiving;
iSocket.RecvOneOrMore(iWebBuff,0,iStatus,iLen);
SetActive();
break;
}
case EReceiving:
{
if (iStatus!=KErrEof)
{
if (engine.GetWaitnb()==1)
{
engine.nb=iWebBuff[0]+iWebBuff[1]*256+iWebBuff[2]*65536+iWebBuff[3]*16777216;
}
else if (engine.GetWaitfile()==1)
{
}
else
{
/*TPtr8 ptr = buf->Des();
char * pchr = (char *)ptr.Ptr();
int t=dataChunk.Length();*/
// engine->dec.FillBuffer((unsigned char*)iWebBuff,iLen);
}
SetActive();
}
else
{
iSocket.Close();
iResolver.Close();
iSocketSrv.Close();
}
break;
}
default:
ASSERT(EFalse);
}
}
}
void CHttpEventHandler::HandleError(TDesC& aErrMsg)
{
iSocket.Close();
iResolver.Close();
iSocketSrv.Close();
}
void CHttpEventHandler::ConstructL()
{
}
void CHttpEventHandler::Cleanup(TInt aError)
{
iSocket.Close();
iSocketSrv.Close();
iResolver.Close();
TBuf<50> errStr;
if (aError!=KErrNone)
{
switch(iState)
{
case EResolvingName:
{
_LIT(KErrStr,"Error resolving name");
errStr.Copy(KErrStr);
break;
}
case EConnecting:
{
_LIT(KErrStr,"Error connecting to server");
errStr.Copy(KErrStr);
break;
}
case ESending:
{
_LIT(KErrStr,"Error sending request");
errStr.Copy(KErrStr);
break;
}
case EReceiving:
{
_LIT(KErrStr,"Error receiving data");
errStr.Copy(KErrStr);
break;
}
default:
{
_LIT(KErrStr,"Error unknow");
errStr.Copy(KErrStr);
break;
}
}
//engine->
}
}

oCancel()


