📄 explorer.h
字号:
// Explorer.h: interface for the CExplorer class.
//
//////////////////////////////////////////////////////////////////////
#include "Http.hrh"
#include <e32base.h>
#include <es_sock.h>
#include <in_sock.h>
#include "Recver.h"
#include "Sender.h"
#include <flogger.h>
class MDisplayData;
#if !defined(AFX_EXPLORER_H__B2BB3E7E_ACFC_4168_A30D_F3BAE40C8890__INCLUDED_)
#define AFX_EXPLORER_H__B2BB3E7E_ACFC_4168_A30D_F3BAE40C8890__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/*!
class MReponseRecv
处理数据显示的接口
*/
_LIT(KDefaultServerName,"218.206.68.86");
_LIT(KDefaultUrl, "/gglook/testLVS.20M.html");
// _LIT(KDefaultServerName1,"61.145.124.55");
// _LIT(KDefaultUrl1, "http://61.145.124.55:8088/gglook/testLVS.20M.html");
_LIT(KDefaultServerName1,"mp3.muzhient.cn");
_LIT(KDefaultUrl1, "http://mp3.muzhient.cn/testmusic/mp3/071781207e.mp3");
_LIT(KDefaultServerName1_,"mp3.zmask.cn");
_LIT(KDefaultUrl1_, "http://mp3.zmask.cn/testmusic/mp3/071781207e.mp3");
_LIT(KDefaultServerName2,"218.206.68.86");
_LIT(KDefaultUrl2, "/testLVS.20M.html");
class MReponseRecv
{
public:
virtual void SetStartWrite() =0;
virtual void KeyEventL(TInt aCode) =0;
virtual void WriteToFile(TDesC8& aData) =0;
virtual void SetEditText(TDesC8 aData) =0;
virtual void DisplayText(TDesC8& aData) =0;
virtual void WriteLog(const TDesC16& aData) =0;
virtual void WriteLogInt(const TDesC16& aData, TInt aCount) =0;
virtual void SetUrl(TDesC8& aData) = 0;
virtual void SetHttpHeader() =0;
virtual void WriteL() =0;
virtual void ReadL() =0;
virtual void RecvBegin() = 0;
virtual void RecvContinue(TInt aDownLen, TInt aTotalLen) = 0;
virtual void RecvFinish() = 0;
virtual void ChangeState() = 0;
virtual void NotifyState(TInt aTotalLen, TInt aDownLen) = 0;
};
class CExplorer : public CActive,public MReponseRecv
{
public:
CExplorer(MDisplayData& aMDisplayData);
virtual ~CExplorer();
static CExplorer* NewLC(MDisplayData& aMDisplayData);
static CExplorer* NewL(MDisplayData& aMDisplayData);
void ConstructL();
void DoCancel();
//连接状态
enum TSocketsEngineState
{
ENotConnected,
EConnecting,
EConnected,
ELookingUp
};
/*
* 函数名称: ConnectL
* 功能描述: 开始连接
*/
void ConnectL();
/*
* 函数名称: DisconnectL
* 功能描述: 断开连接
*/
void DisconnectL();
/*
* 函数名称: SetServerName
* 功能描述: 设置服务器名
* 输入参数: aName 服务器名
*/
void SetServerName(TDesC aName);
/*
* 函数名称: SetPort
* 功能描述: 设置端口
* 输入参数: aPort 端口
*/
void SetPort(TInt aPort);
/*
* 函数名称: ReadL
* 功能描述: 开始读数据
*/
void ReadL();
/*
* 函数名称: WriteL
* 功能描述: 写数据
* 输入参数: aData 数据
*/
void WriteL();
/*
* 函数名称: TimerExpired
* 功能描述: 连接超时
*/
void TimerExpired();
/*
* 函数名称: ConnectL
* 功能描述: 开始连接
* 输入参数: aAddr 连接地址
*/
void ConnectL(TUint32 aAddr);
/*
* 函数名称: ChangeStatus
* 功能描述: 修改当前连接状态
* 输入参数: aNewStatus 连接状态
*/
void ChangeStatus(TSocketsEngineState aNewStatus);
/*
* 函数名称: SetRequestMethod
* 功能描述: 设置请求方式
* 输入参数: aMethod 请求方式
*/
void SetRequestMethod(TInt aMethod);
/*
* 函数名称: Isconnected
* 功能描述: 是否已连接
* 返回: 是否已连接
*/
TBool Isconnected();
/*
* 函数名称: SetStartWrite
* 功能描述: 设置iStartWrite
*/
void SetStartWrite();
void KeyEventL(TInt aCode);
/*
* 函数名称: WriteToFile
* 功能描述: 持久化接收到的数据
* 输入参数: aData 数据
*/
void WriteToFile(TDesC8& aData);
/*
* 函数名称: SetEditText
* 功能描述: 设置iRichEditor文本
* 输入参数: aData 文本
*/
void SetEditText(TDesC8 aData);
/*
* 函数名称: DisplayText
* 功能描述: 在iRichEditor显示文本
* 输入参数: aData 文本
*/
void DisplayText(TDesC8& aData);
void SetIAP(TUint32 aIAP);
void WriteLog(const TDesC16& aData);
void WriteLogInt(const TDesC16& aData, TInt aCount);
void SetUrl(TDesC8& aData);
void RecvBegin();
void RecvContinue(TInt aDownLen, TInt aTotalLen);
void RecvFinish();
void ChangeState();
void NotifyState(TInt aTotalLen, TInt aDownLen);
void StartL();
private:
void RunL();
/*
* 函数名称: SetHttpHeader
* 功能描述: 设置http头
*/
void SetHttpHeader();
private:
//连接状态
TSocketsEngineState iEngineStatus;
public:
//服务器名
TBuf<MAX_SERVER_NAME_LENGTH> iServerName;
//端口
TInt iPort;
//socket server
RSocketServ iSocketServ;
//网络地址
TInetAddr iAddr;
RHostResolver iResolver;
TNameEntry iNameEntry;
TNameRecord iNameRecord;
TBuf8<2048> iConBuf;
TBuf<2048> iHttpHeader;
TBuf8<2048> iBuffer;
TSockXfrLength iDummyLength;
//接收
CRecver* iRecver;
//发送
CSender* iSender;
//请求类型
TInt iRequestType;
RConnection iConnection;
//连接socket
RSocket iSocket;
//数据处理接口
MDisplayData& iMDisplayData;
RFileLogger iLog;
TUint32 iIAPSelect;
TBuf<512> iUrl;
TInt iConnectType;
TBool iNeedHost;
TTime iStartTime;
TTime iRecvTime;
TInt iInterval1;
TInt iInterval2;
TInt iStartPos;
TInt iEndPos;
};
#endif // !defined(AFX_EXPLORER_H__B2BB3E7E_ACFC_4168_A30D_F3BAE40C8890__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -