📄 engsrv.h
字号:
// engsrv.h
//
// Copyright (c) 1999-2007 Symbian Software Ltd. All rights reserved.
//
// $Change: 937687 $
#ifndef ENGSRV_H
#define ENGSRV_H
// SYSTEM HEADERS
#include <e32std.h>
#include <e32base.h>
#include <es_sock.h>
#include <in_sock.h>
#define MAX_MSG_LEN (256) //in bytes
#define MAX_MSG_LEN_UNICODE (128) //in words
#define MAX_HOST_NAME (256)
#define KTestPort (666)
#define KTestClientPort (665)
#define KTestServerPort (667)
// Socket event observer
class MSocketObserver
{
public:
virtual void HandleSocketEvent(TInt aSource, TInt aReason) = 0;
};
// Receiver AO
class CRx : public CActive
{
public:
enum TEvent
{
ERxReceiveOK, ERxReceiveFailed
};
static CRx* NewL(RSocket* aSocket);
~CRx();
void RxL(TInt aSocketType);
void SetObserver(MSocketObserver* aObserver);
void GetMessageData(TDesC& aMsg);
TDesC* GetDataIn(void);
private:
CRx(RSocket* aSocket);
void ConstructL(void);
void NotifyEvent(TInt aEvent);
// pure virtuals from CActive implemented in this derived class
void RunL(void);
void DoCancel(void);
private:
MSocketObserver* iObserver;
TSockXfrLength iRecvLen;
RSocket* iSocket;
TBuf8<MAX_MSG_LEN> iDataBuffer;
TBuf16<MAX_MSG_LEN_UNICODE> iDataBuffer16;
TSockAddr iRecvAddr;
};
// Transmitter AO
class CTx : public CActive
{
public:
enum TEvent
{
ETxTransmitOK, ETxTransmitFailed
};
static CTx* NewL(RSocket* aSocket);
~CTx();
void TxL(TDesC16& aData, TInt aSocketType);
void SetObserver(MSocketObserver* aObserver);
private:
CTx(RSocket* aSocket);
void ConstructL(void);
void NotifyEvent(TInt aEvent);
// pure virtuals from CActive implemented in this derived class
void RunL(void);
void DoCancel(void);
private:
MSocketObserver* iObserver;
RSocket* iSocket;
TBuf8<MAX_MSG_LEN> iDataBuffer;
TInetAddr iSendAddr;
};
// Application model/engine class
class CModel : public CActive
{
public:
enum TSource
{
ESourceModel, ESourceRx, ESourceTx
};
enum TEvent
{
EEventConnected, EEventConnectFailed, EEventShutdown
};
enum TSockType
{
EStream, EDatagram
};
static CModel* NewL(void);
~CModel();
void PreStartEngineL(void);
void StartEngineL(void);
void SetObserver(MSocketObserver* aObserver);
void SendMessageL(TDesC& aMsg);
void RequestMessage(void);
TDesC* GetDataIn(void);
void SetSocketType(TInt aSockType);
TInt SocketType(void);
void SetAutoReply(TBool aAutoReply);
TBool AutoReply(void);
private:
CModel();
void ConstructL(void);
// pure virtuals from CActive implemented in this derived class
void RunL(void);
void DoCancel(void);
private:
RSocketServ iSession;
MSocketObserver* iObserver;
RSocket iSocket;
TInt iSocketType; // EStream if using Streams, EDatagram if using Datagrams
TBool iAutoReply;
CRx* iRxAO;
CTx* iTxAO;
};
#endif // ENGSRV_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -