⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 engsrv.h

📁 如题 就是 这东西 为什么非要我 说到 20个 字 呢 看看这回 够 不
💻 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 + -