亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? messageclient.cpp

?? Symbian下的p2p工程
?? CPP
字號:
/* Copyright (c) 2004, Nokia. All rights reserved */


// INCLUDE FILES
#include <StringLoader.h>
#include <BTPointToPoint.rsg>
#include <coemain.h>

#include "MessageClient.h"
#include "MessageServiceSearcher.h"
#include "BTPointToPoint.pan"
#include "Log.h"

// ============================ MEMBER FUNCTIONS ==============================

// ----------------------------------------------------------------------------
// CMessageClient::NewL()
// Two-phased constructor.
// ----------------------------------------------------------------------------
//
CMessageClient* CMessageClient::NewL( MLog& aLog )
    {
    CMessageClient* self = NewLC( aLog );
    CleanupStack::Pop( self );
    return self;
    }

// ----------------------------------------------------------------------------
// CMessageClient::NewLC()
// Two-phased constructor.
// ----------------------------------------------------------------------------
//
CMessageClient* CMessageClient::NewLC( MLog& aLog )
    {
    CMessageClient* self = new ( ELeave ) CMessageClient( aLog );
    CleanupStack::PushL( self );
    self->ConstructL ();
    return self;

    }

// ----------------------------------------------------------------------------
// CMessageClient::CMessageClient()
// Constructor.
// ----------------------------------------------------------------------------
//
CMessageClient::CMessageClient( MLog& aLog )
: CActive( CActive::EPriorityStandard ),
  iState( EWaitingToGetDevice ),
  iLog( aLog )
    {
    CActiveScheduler::Add( this );
    }

// ----------------------------------------------------------------------------
// CMessageClient::~CMessageClient()
// Destructor.
// ----------------------------------------------------------------------------
//
CMessageClient::~CMessageClient()
    {

    // Close() will wait forever for Read to complete
    if ( iState == EConnected )
    {
        iSendingSocket.CancelRead();
    }
    Cancel();

    iSendingSocket.Close();
    iSocketServer.Close();

    delete iMessage;
    iMessage = NULL;

    delete iServiceSearcher;
    iServiceSearcher = NULL;
    }

// ----------------------------------------------------------------------------
// CMessageClient::ConstructL()
// Perform second phase construction of this object.
// ----------------------------------------------------------------------------
//
void CMessageClient::ConstructL()
    {
    // Create 16-bit localized string containing the data to send
    HBufC* tempString = CCoeEnv::Static()->
                                    AllocReadResourceLC( R_BTPO_HELLO_MESSAGE );
    // Create 8-bit member variable which will be used for
    // sending the data over the bluetooth socket
    iMessage = HBufC8::NewL(tempString->Length());
    // Convert 16 bit => 8 bit by copying the 16-bit localized string to the 
    // 8-bit member variable. This will simply slice off the higher order bytes,
    // which is ok in this example.
    iMessage->Des().Copy(*tempString);
    CleanupStack::PopAndDestroy(); // tempString

    iServiceSearcher = CMessageServiceSearcher::NewL( iLog );
    User::LeaveIfError( iSocketServer.Connect() );
    }

// ----------------------------------------------------------------------------
// CMessageClient::DoCancel()
// Cancel any outstanding requests.
// ----------------------------------------------------------------------------
//
void CMessageClient::DoCancel()
    {
    // no implementation required
    }

// ----------------------------------------------------------------------------
// CMessageClient::RunL()
// Respond to an event.
// ----------------------------------------------------------------------------
//
void CMessageClient::RunL()
    {
	HBufC* textResource = NULL;
    if ( iStatus != KErrNone )
        {
        switch ( iState )
            {
            case EGettingDevice:
                if ( iStatus == KErrCancel )
                    {
                    textResource = StringLoader
                        ::LoadLC( R_BTPO_ERR_NO_DEVICE_SELECTED );
                    iLog.LogL( *textResource );
                    CleanupStack::PopAndDestroy( textResource );
                    }
                iState = EWaitingToGetDevice;
                break;
            case EGettingService:
            case EGettingConnection:
                textResource = StringLoader
                    ::LoadLC( R_BTPO_ERR_CONNECTION_ERROR );
                iLog.LogL( *textResource, iStatus.Int() );
                CleanupStack::PopAndDestroy( textResource );
                iState = EWaitingToGetDevice;
                break;
            case EConnected:
                textResource = StringLoader
                    ::LoadLC( R_BTPO_ERR_LOST_CONNECTION );
                iLog.LogL( *textResource, iStatus.Int() );
                DisconnectFromServerL();
                CleanupStack::PopAndDestroy( textResource );
                iState = EDisconnecting;
                break;
            case ESendingMessage:
                textResource = StringLoader
                    ::LoadLC( R_BTPO_ERR_MESSAGE_FAILED );
                iLog.LogL( *textResource, iStatus.Int() );
                CleanupStack::PopAndDestroy( textResource );
                DisconnectFromServerL();
                iState = EDisconnecting;
                break;
            case EDisconnecting:
                if ( iStatus == KErrDisconnected )
                {
                    textResource = StringLoader
                        ::LoadLC( R_BTPO_DISCONNECT_COMPLETE );
                    iLog.LogL( *textResource, iStatus.Int() );
                    CleanupStack::PopAndDestroy( textResource );

                    iSendingSocket.Close();
                    iState = EWaitingToGetDevice;
                }
                else
                {
                    textResource = StringLoader
                        ::LoadLC( R_BTPO_ERR_FAILED_TO_DISCONNECT );
                    iLog.LogL( *textResource, iStatus.Int() );
                    CleanupStack::PopAndDestroy( textResource );

                    Panic( EBTPointToPointUnableToDisconnect );
                }
                break;
            default:
                Panic( EBTPointToPointInvalidLogicState );
                break;
            }
        }
    else 
        {
        switch ( iState )
            {
            case EGettingDevice:
                // found a device now search for a suitable service
                iLog.LogL( iServiceSearcher->ResponseParams().DeviceName() );
                iState = EGettingService;
                iStatus = KRequestPending;  // this means that the RunL 
                                            // can not be called until
                                            // this program does something 
                                            // to iStatus
                iServiceSearcher->FindServiceL( iStatus );
                SetActive();
                break;
            case EGettingService:
                textResource = StringLoader
                    ::LoadLC( R_BTPO_FOUND_SERVICE );
                iLog.LogL( *textResource );
                CleanupStack::PopAndDestroy( textResource );
                iState = EGettingConnection;
                ConnectToServerL();
                break;
            case EGettingConnection:
                textResource = StringLoader
                    ::LoadLC( R_BTPO_CONNECTED );
                iLog.LogL( *textResource );
                CleanupStack::PopAndDestroy( textResource );

                iState = EConnected;
                // Catch disconnection event 
                // By waiting to read socket
                WaitOnConnectionL();
                break;
            case EConnected:
                textResource = StringLoader
                    ::LoadLC( R_BTPO_DATA_RECEIVED );
                iLog.LogL( *textResource );
                CleanupStack::PopAndDestroy( textResource );

                // Just dump data
                iDummyBuffer.Zero();
                // Catch disconnection event 
                // By waiting to read socket
                WaitOnConnectionL();
                break;
            case ESendingMessage:
                textResource = StringLoader
                    ::LoadLC( R_BTPO_SENT_MESSAGE );
                iLog.LogL( *textResource );
                CleanupStack::PopAndDestroy( textResource );

                iState = EConnected;
                // Catch disconnection event 
                // By waiting to read socket
                WaitOnConnectionL();
                break;
            case EDisconnecting:
                textResource = StringLoader
                    ::LoadLC( R_BTPO_DISCONNECT_COMPLETE );
                iLog.LogL( *textResource );
                CleanupStack::PopAndDestroy ( textResource );

                iSendingSocket.Close();
                iState = EWaitingToGetDevice;
                break;
            default:
                Panic( EBTPointToPointInvalidLogicState );
                break;
            };
        }
    }

// ----------------------------------------------------------------------------
// CMessageClient::ConnectL()
// Connect to a service.
// ----------------------------------------------------------------------------
//
void CMessageClient::ConnectL()
    {
    if ( iState == EWaitingToGetDevice && !IsActive() )
        {
        iState = EGettingDevice;
        iServiceSearcher->SelectDeviceByDiscoveryL( iStatus );
        SetActive();
        }
    else
        {
        HBufC* errClientBusy = StringLoader::LoadLC ( R_BTPO_CLIENT_BUSY );
        iLog.LogL( *errClientBusy );
        CleanupStack::PopAndDestroy( errClientBusy );

        User::Leave( KErrInUse );
        }
    }

// ----------------------------------------------------------------------------
// CMessageClient::DisconnectL()
// Disconnects from the remote machine.
// ----------------------------------------------------------------------------
//
void CMessageClient::DisconnectL()
    {
    if ( ( iState == EConnected )||( iState == ESendingMessage ) )
        {
            DisconnectFromServerL();
            iState = EDisconnecting;
        }
    else
        {
            HBufC* errNoConn = StringLoader::LoadLC ( R_BTPO_ERR_NO_CONN );
            iLog.LogL( *errNoConn );
            CleanupStack::PopAndDestroy( errNoConn );
            User::Leave( KErrDisconnected );
        }
    }

// ----------------------------------------------------------------------------
// CMessageClient::DisconnectFromServerL()
// Disconnects from the service
// ----------------------------------------------------------------------------
//
void CMessageClient::DisconnectFromServerL()
    {
    // Terminate all operations
    iSendingSocket.CancelAll();
    Cancel();

    HBufC* strReleasingConn = StringLoader
        ::LoadLC ( R_BTPO_STR_RELEASING_CONN );
    iLog.LogL( *strReleasingConn );
    CleanupStack::PopAndDestroy( strReleasingConn );
    iSendingSocket.Shutdown( RSocket::ENormal,iStatus );
    SetActive();
    }

// ----------------------------------------------------------------------------
// CMessageClient::ConnectToServerL()
// Connect to the server.
// ----------------------------------------------------------------------------
//
void CMessageClient::ConnectToServerL()
    {
    HBufC* strConnecting = StringLoader
        ::LoadLC ( R_BTPO_STR_CONNECTING );
    iLog.LogL( *strConnecting );
    CleanupStack::PopAndDestroy( strConnecting );

    User::LeaveIfError( iSendingSocket.Open( iSocketServer, KStrRFCOMM ) );

    TBTSockAddr address;
    address.SetBTAddr( iServiceSearcher->BTDevAddr() );
    address.SetPort( iServiceSearcher->Port() );

    iSendingSocket.Connect( address, iStatus );

#ifdef __WINS__
    User::After( 1 );     // Fix to allow emulator client to connect to server
#endif

    SetActive();
    }

// ----------------------------------------------------------------------------
// CMessageClient::WaitOnConnectionL()
// Wait for data or disconnection.
// ----------------------------------------------------------------------------
//
void CMessageClient::WaitOnConnectionL()
    {
    if ( iState != EConnected )
        {
        User::Leave( KErrDisconnected );
        }
        iSendingSocket.Read( iDummyBuffer, iStatus );
        SetActive();
    }

// ----------------------------------------------------------------------------
// CMessageClient::SendMessageL()
// Send a message to a service on a remote machine.
// ----------------------------------------------------------------------------
//
void CMessageClient::SendMessageL()
    {
    if ( iState != EConnected )
        {
        User::Leave( KErrDisconnected );
        }

    // Stop reading socket
    iSendingSocket.CancelRead();
    if ( IsActive() )
    {
        Cancel();
    }
    iState = ESendingMessage;
    iSendingSocket.Write( *iMessage, iStatus );
    SetActive();
    }

// ----------------------------------------------------------------------------
// CMessageClient::IsReadyToSendMessage()
// True if the client can send a message.
// ----------------------------------------------------------------------------
//
TBool CMessageClient::IsReadyToSendMessage()
    {
    return ( iState == EConnected );
    }

// ----------------------------------------------------------------------------
// CMessageClient::IsConnected()
// True if the client can send a message.
// ----------------------------------------------------------------------------
//
TBool CMessageClient::IsConnected()
    {
    return ( ( iState == EConnected )||( iState == ESendingMessage ) );
    }

// ----------------------------------------------------------------------------
// CMessageClient::IsConnecting()
// True if the client is establishing a connection to the server.
// ----------------------------------------------------------------------------
//
TBool CMessageClient::IsConnecting()
    {
    return ( ( iState == EGettingDevice )
            ||
            ( iState == EGettingService )
            ||
            ( iState == EGettingConnection ) );
    }

// ----------------------------------------------------------------------------
// CMessageClient::IsSendingMessage()
// True if the client is connected.
// ----------------------------------------------------------------------------
//
TBool CMessageClient::IsSendingMessage()
    {
    return ( iState == ESendingMessage );
    }

// End of File

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
3d动漫精品啪啪| 国产一区福利在线| 欧美日韩综合不卡| 午夜亚洲福利老司机| 6080午夜不卡| 激情av综合网| 国产精品福利一区| 一本大道久久a久久精品综合| 亚洲免费观看在线视频| 欧美视频完全免费看| 免费日韩伦理电影| 国产农村妇女毛片精品久久麻豆 | 偷窥国产亚洲免费视频| 91精品国产色综合久久不卡电影| 久久国产人妖系列| 国产精品成人网| 在线观看免费成人| 精品亚洲国产成人av制服丝袜| 久久久精品国产99久久精品芒果| 99久久久精品| 日韩成人一区二区| 欧美国产精品劲爆| 欧美色图天堂网| 精品一区二区三区在线观看国产| 国产农村妇女精品| 欧美日韩一区二区在线观看| 久久99久久精品| 亚洲男同性恋视频| 日韩欧美国产高清| 91在线国内视频| 男人的j进女人的j一区| 自拍偷在线精品自拍偷无码专区 | 成人免费视频在线观看| 欧美剧情片在线观看| 国产精品自拍网站| 亚洲成人在线网站| 国产精品久久久久国产精品日日 | 色综合久久综合| 久久国产视频网| 亚洲宅男天堂在线观看无病毒| www成人在线观看| 在线观看国产一区二区| 国产福利精品一区二区| 亚州成人在线电影| 国产精品国产自产拍高清av王其| 91麻豆精品国产91久久久久| 成人av在线电影| 韩国欧美一区二区| 日日夜夜免费精品视频| 亚洲美女视频一区| 欧美精彩视频一区二区三区| 日韩一区和二区| 亚洲欧美综合另类在线卡通| 国产精品66部| 久久久www成人免费毛片麻豆| av色综合久久天堂av综合| 国产欧美日韩在线| 欧美日韩综合在线| 99国产精品久久久久| 国产一区二区不卡在线| 免费观看91视频大全| 亚洲一区二区免费视频| 综合在线观看色| 国产日本欧美一区二区| 亚洲精品一区二区三区在线观看| 欧美日韩一区二区三区不卡| 欧洲国产伦久久久久久久| 日韩手机在线导航| 欧美色手机在线观看| 97精品超碰一区二区三区| 国产高清亚洲一区| 国产成人免费在线观看不卡| 韩国精品一区二区| 黄色日韩网站视频| 激情综合亚洲精品| 激情六月婷婷综合| 国产美女精品人人做人人爽| 久久99久久精品| 国产一区二区不卡在线| 国产盗摄视频一区二区三区| 国产精品综合二区| 久久亚洲免费视频| 欧美日韩免费观看一区二区三区 | 国产高清不卡二三区| 国产精品影视在线| 国产成人精品一区二区三区四区 | 国产精品色噜噜| 国产精品国产三级国产aⅴ入口 | 26uuu色噜噜精品一区二区| 日韩欧美国产一区在线观看| 精品精品国产高清一毛片一天堂| 精品国产凹凸成av人网站| 国产色91在线| 亚洲欧美怡红院| 亚洲高清中文字幕| 免费观看成人鲁鲁鲁鲁鲁视频| 极品少妇一区二区三区精品视频| 粉嫩久久99精品久久久久久夜| 成人教育av在线| 欧美色图在线观看| 精品国产欧美一区二区| 中文字幕不卡三区| 亚洲精品中文在线影院| 日韩不卡一区二区| 国产一二三精品| 日本久久精品电影| 欧美一级片在线| 日本一区二区三区国色天香| 亚洲影院久久精品| 国内精品在线播放| 色综合天天视频在线观看| 欧美高清你懂得| 欧美高清在线精品一区| 亚洲精品久久7777| 麻豆精品国产91久久久久久| 国产剧情av麻豆香蕉精品| 91黄视频在线| 欧美大片拔萝卜| 一区二区三区四区亚洲| 免费一级片91| 色综合激情久久| 精品国产欧美一区二区| 亚洲老司机在线| 国产揄拍国内精品对白| 欧美性色欧美a在线播放| 欧美mv和日韩mv国产网站| 亚洲欧美国产77777| 精品一区二区三区免费视频| 91麻豆国产福利精品| 精品日韩在线观看| 亚洲精品免费在线播放| 国产一区二区剧情av在线| 欧美色大人视频| 国产免费久久精品| 美女一区二区在线观看| 91免费观看在线| 2019国产精品| 色8久久人人97超碰香蕉987| jvid福利写真一区二区三区| 在线成人小视频| 中文字幕精品一区| 三级欧美在线一区| 色94色欧美sute亚洲线路二| 精品国产sm最大网站| 午夜精品久久久| 99国产精品99久久久久久| 久久久国产综合精品女国产盗摄| 热久久久久久久| 精品视频在线免费观看| 亚洲人亚洲人成电影网站色| 国产一区二区三区四区在线观看| 欧美日韩国产另类不卡| 亚洲人成伊人成综合网小说| 国产精品资源网| 亚洲精品在线电影| 麻豆成人av在线| 91麻豆精品国产综合久久久久久| 国产米奇在线777精品观看| 91精品国产91久久综合桃花| 一区二区三区波多野结衣在线观看| 国产99精品视频| 久久精品在这里| 国产精品99久久久久| 久久亚洲春色中文字幕久久久| 久久国产精品露脸对白| 日韩网站在线看片你懂的| 日本在线不卡一区| 欧美一卡二卡在线观看| 首页国产丝袜综合| 欧美精品亚洲一区二区在线播放| 一区二区三区精品视频| 欧美午夜精品一区| 亚洲国产cao| 欧美二区三区的天堂| 男女性色大片免费观看一区二区 | 91视频在线看| 亚洲日本在线观看| 91麻豆swag| 亚洲福利电影网| 日韩亚洲欧美综合| 久久99深爱久久99精品| 2024国产精品视频| 成人看片黄a免费看在线| 国产精品成人免费 | 91精品国产综合久久婷婷香蕉| 亚洲1区2区3区视频| 日韩视频免费直播| 国产美女久久久久| 亚洲色大成网站www久久九九| 色8久久人人97超碰香蕉987| 亚洲va国产天堂va久久en| 91精品久久久久久久久99蜜臂| 狠狠色丁香久久婷婷综| 亚洲欧美自拍偷拍| 欧美三级韩国三级日本一级| 秋霞午夜av一区二区三区| 国产亚洲精品久| 色狠狠色噜噜噜综合网| 九一久久久久久| 亚洲三级理论片|