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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? btservicesearcher.cpp

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


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

#include "BTServiceSearcher.h"
#include "BTServiceSearcher.pan"

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

// ----------------------------------------------------------------------------
// CBTServiceSearcher::CBTServiceSearcher()
// Constructor.
// ----------------------------------------------------------------------------
//
CBTServiceSearcher::CBTServiceSearcher( MLog& aLog )
:  iIsDeviceSelectorConnected( EFalse ),
   iLog( aLog )
    {
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::~CBTServiceSearcher()
// Destructor.
// ----------------------------------------------------------------------------
//
CBTServiceSearcher::~CBTServiceSearcher()
    {
    if ( iIsDeviceSelectorConnected )
        {
        iDeviceSelector.CancelNotifier( KDeviceSelectionNotifierUid );
        iDeviceSelector.Close();
        }
    delete iSdpSearchPattern;
    iSdpSearchPattern = NULL;

    delete iAgent;
    iAgent = NULL;
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::SelectDeviceByDiscoveryL()
// Select a device.
// ----------------------------------------------------------------------------
//
void CBTServiceSearcher
::SelectDeviceByDiscoveryL( TRequestStatus& aObserverRequestStatus )
    {
    if ( ! iIsDeviceSelectorConnected )
        {
        User::LeaveIfError( iDeviceSelector.Connect() );
        iIsDeviceSelectorConnected = ETrue;
        }


    iSelectionFilter().SetUUID( ServiceClass() );

    iDeviceSelector.StartNotifierAndGetResponse( 
        aObserverRequestStatus, 
        KDeviceSelectionNotifierUid, 
        iSelectionFilter, 
        iResponse );
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::FindServiceL()
// Find a service on the specified device.
// ----------------------------------------------------------------------------
//
void CBTServiceSearcher::FindServiceL( TRequestStatus& aObserverRequestStatus )
    {
    if ( !iResponse().IsValidBDAddr() )
        {
        User::Leave( KErrNotFound );
        }
    iHasFoundService = EFalse;

    // delete any existing agent and search pattern
    delete iSdpSearchPattern;
    iSdpSearchPattern = NULL;

    delete iAgent;
    iAgent = NULL;

    iAgent = CSdpAgent::NewL( *this, BTDevAddr() );

    iSdpSearchPattern = CSdpSearchPattern::NewL();
   
    iSdpSearchPattern->AddL( ServiceClass() );
    // return code is the position in the list that the UUID is inserted at 
    // and is intentionally ignored
  
    iAgent->SetRecordFilterL( *iSdpSearchPattern );

    iStatusObserver = &aObserverRequestStatus;

    iAgent->NextRecordRequestL();
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::NextRecordRequestComplete()
// Process the result of the next record request.
// ----------------------------------------------------------------------------
//
void CBTServiceSearcher::NextRecordRequestComplete( 
    TInt aError, 
    TSdpServRecordHandle aHandle, 
    TInt aTotalRecordsCount )
    {
    TRAPD( error,
           NextRecordRequestCompleteL( aError, aHandle, aTotalRecordsCount );
    );

    if ( error != KErrNone ) 
        {
        Panic( EBTServiceSearcherNextRecordRequestComplete );
        }
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::NextRecordRequestCompleteL()
// Process the result of the next record request.
// ----------------------------------------------------------------------------
//
void CBTServiceSearcher::NextRecordRequestCompleteL( 
    TInt aError, 
    TSdpServRecordHandle aHandle, 
    TInt aTotalRecordsCount )
    {
    if ( aError == KErrEof )
        {
        Finished();
        return;
        }

    if ( aError != KErrNone )
        {
        iLog.LogL( KErrNRRCErr, aError );
        Finished( aError );
        return;
        }

    if ( aTotalRecordsCount == 0 )
        {
        HBufC* errNRRCNoRecords = StringLoader
            ::LoadLC ( R_BTPO_ERR_NRRC_NO_RECORDS );
        iLog.LogL( *errNRRCNoRecords );
        CleanupStack::PopAndDestroy ( errNRRCNoRecords );
        Finished( KErrNotFound );
        return;
        }

    //  Request its attributes
    iAgent->AttributeRequestL( aHandle, KSdpAttrIdProtocolDescriptorList );
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::AttributeRequestResult()
// Process the next attribute requested.
// ----------------------------------------------------------------------------
//
void CBTServiceSearcher::AttributeRequestResult( 
    TSdpServRecordHandle aHandle, 
    TSdpAttributeID aAttrID, 
    CSdpAttrValue* aAttrValue )
    {
    TRAPD( error,
         AttributeRequestResultL( aHandle, aAttrID, aAttrValue );
         );
    if ( error != KErrNone )
        {
        Panic( EBTServiceSearcherAttributeRequestResult );
        }

    // Delete obsolete local atribute pointer. 
    delete aAttrValue;
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::AttributeRequestResultL()
// Process the next attribute requested.
// ----------------------------------------------------------------------------
//
void CBTServiceSearcher::AttributeRequestResultL( 
    TSdpServRecordHandle /*aHandle*/, 
    TSdpAttributeID aAttrID, 
    CSdpAttrValue* aAttrValue )
    {
    __ASSERT_ALWAYS( aAttrID == KSdpAttrIdProtocolDescriptorList, 
                     User::Leave( KErrNotFound ) );

    TSdpAttributeParser parser( ProtocolList(), *this );

    // Validate the attribute value, and extract the RFCOMM channel
    aAttrValue->AcceptVisitorL( parser );

    if ( parser.HasFinished() )
        {
        // Found a suitable record so change state
        iHasFoundService = ETrue;
        }
    }

// -----------------------------------------------------------------------------
// CBTServiceSearcher::AttributeRequestComplete()
// Process the attribute request completion.
// -----------------------------------------------------------------------------
//
void CBTServiceSearcher::AttributeRequestComplete( TSdpServRecordHandle aHandle,
                                                   TInt aError )
    {
    TRAPD( error,
        AttributeRequestCompleteL( aHandle, aError );
    );
    if ( error != KErrNone )
        {
        Panic( EBTServiceSearcherAttributeRequestComplete );
        }
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::AttributeRequestCompleteL()
// Process the attribute request completion.
// ----------------------------------------------------------------------------
//
void CBTServiceSearcher::AttributeRequestCompleteL( TSdpServRecordHandle 
                                                    /*aHandle*/, 
                                                    TInt aError )
    {
    if ( aError != KErrNone )
        {
        HBufC* errCantGetAttribute = StringLoader
            ::LoadLC ( R_BTPO_ERR_CANT_GET_ATTRIBUTE );
        iLog.LogL( *errCantGetAttribute, aError );
        CleanupStack::PopAndDestroy ( errCantGetAttribute );
        }
    else if ( !HasFinishedSearching() )
        {
        // have not found a suitable record so request another
        iAgent->NextRecordRequestL();
        }
    else
        {
        HBufC* errAttrReqCom = StringLoader
            ::LoadLC ( R_BTPO_ERR_ATTR_REQ_COM );
        iLog.LogL( *errAttrReqCom );
        CleanupStack::PopAndDestroy ( errAttrReqCom );
        Finished();
        }
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::Finished()
// The search has finished and notify the observer 
// that the process is complete.
// ----------------------------------------------------------------------------
//
void CBTServiceSearcher::Finished( TInt aError /* default = KErrNone */ )
    {
    if ( aError == KErrNone && !HasFoundService() )
        {
        aError = KErrNotFound;
        }
    User::RequestComplete( iStatusObserver, aError );
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::HasFinishedSearching()
// Is the instance still wanting to search.
// ----------------------------------------------------------------------------
//
TBool CBTServiceSearcher::HasFinishedSearching() const
    {
    return EFalse;
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::BTDevAddr()
// Returns the bluetooth device address.
// ----------------------------------------------------------------------------
//
const TBTDevAddr& CBTServiceSearcher::BTDevAddr()
    {
    return iResponse().BDAddr();
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::ResponseParams()
// Returns information about the device selected by the user.
// ----------------------------------------------------------------------------
//
const TBTDeviceResponseParams& CBTServiceSearcher::ResponseParams()
    {
    return iResponse();
    }

// ----------------------------------------------------------------------------
// CBTServiceSearcher::HasFoundService()
// True if a service has been found.
// ----------------------------------------------------------------------------
//
TBool CBTServiceSearcher::HasFoundService() const
    {
    return iHasFoundService;
    }

// End of File

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看日产精品| 国产精品综合一区二区三区| 欧美亚洲一区三区| 一区二区三区在线观看欧美| 欧美色精品在线视频| 性欧美疯狂xxxxbbbb| 在线不卡欧美精品一区二区三区| 日韩女优毛片在线| 国产精品白丝jk黑袜喷水| 国产精品区一区二区三区| 91久久一区二区| 午夜伦欧美伦电影理论片| 欧美哺乳videos| 91片黄在线观看| 午夜精品久久久久久| 久久影视一区二区| 99精品视频在线观看免费| 天天影视色香欲综合网老头| 久久众筹精品私拍模特| 色综合久久久久| 男人的天堂亚洲一区| 国产精品日产欧美久久久久| 欧美日高清视频| 国产精品99久久久久久宅男| 亚洲精品中文在线影院| 日韩天堂在线观看| 不卡欧美aaaaa| 日韩精品一二区| 国产精品理论在线观看| 欧美丰满少妇xxxxx高潮对白| 精品无人区卡一卡二卡三乱码免费卡 | 国产综合色在线| 亚洲品质自拍视频| 26uuu亚洲婷婷狠狠天堂| 色综合夜色一区| 在线视频你懂得一区| 日本午夜精品视频在线观看| 国产精品久久久久久久久免费丝袜| 欧美三片在线视频观看| 盗摄精品av一区二区三区| 日本中文在线一区| 樱桃视频在线观看一区| 久久蜜桃av一区二区天堂| 欧美色图片你懂的| 波多野结衣中文字幕一区 | 夜夜爽夜夜爽精品视频| 久久亚洲影视婷婷| 制服.丝袜.亚洲.中文.综合| 色婷婷综合激情| 国产成人av在线影院| 免费不卡在线观看| 亚洲综合小说图片| 亚洲欧美激情小说另类| 国产亚洲精品资源在线26u| 欧美一区二区三区喷汁尤物| 日本韩国一区二区三区视频| 成人午夜视频福利| 国产一区二区0| 美女视频一区二区| 日日欢夜夜爽一区| 亚洲成人一区二区| 亚洲国产成人av网| 亚洲国产欧美另类丝袜| 一区二区三区在线视频播放| 国产精品久久久久久久久免费桃花 | 婷婷开心激情综合| 亚洲精选视频免费看| 中文字幕一区视频| 国产精品女同一区二区三区| 久久久亚洲午夜电影| 精品国产乱码久久久久久浪潮| 欧美男同性恋视频网站| 欧美日韩国产另类不卡| 欧美日韩国产小视频| 在线影视一区二区三区| 色一区在线观看| 91丨porny丨蝌蚪视频| eeuss国产一区二区三区| 国产精品 欧美精品| 麻豆精品久久久| 国产一区二区三区最好精华液| 九一久久久久久| 国内外成人在线视频| 国产精品中文有码| 国产99久久久国产精品| 豆国产96在线|亚洲| 99国产精品久久久久久久久久久| 97久久精品人人澡人人爽| 成人av在线网| 日本道精品一区二区三区 | 91免费看`日韩一区二区| av电影天堂一区二区在线观看| 99精品欧美一区二区三区综合在线| 91在线观看美女| 日本高清成人免费播放| 欧美疯狂做受xxxx富婆| 亚洲国产一区二区三区青草影视| 亚洲 欧美综合在线网络| 日韩vs国产vs欧美| 国产成人自拍网| 色综合久久99| 7799精品视频| 国产欧美日韩精品a在线观看| 国产精品福利影院| 亚洲大片免费看| 国产在线看一区| 99vv1com这只有精品| 欧美日韩高清一区二区| 久久九九久久九九| 亚洲在线观看免费| 极品少妇一区二区| 日本韩国精品在线| 欧美电影免费观看完整版| 中文一区一区三区高中清不卡| 亚洲欧美日韩一区二区 | 久久蜜桃av一区二区天堂 | 毛片av一区二区| 国产91精品一区二区| 欧美日本高清视频在线观看| 久久伊99综合婷婷久久伊| 亚洲综合一区在线| 成人在线综合网| 91精品国产一区二区三区| 国产欧美精品国产国产专区| 日韩高清不卡一区二区三区| 成人看片黄a免费看在线| 欧美久久久久久蜜桃| 国产精品无码永久免费888| 日本午夜精品一区二区三区电影 | 日本丰满少妇一区二区三区| 欧美一区二区免费| 亚洲婷婷综合久久一本伊一区| 美女网站色91| 色婷婷av一区二区三区软件| 久久久久久久电影| 人人精品人人爱| 91精品福利视频| 欧美激情一区二区三区全黄| 另类成人小视频在线| 欧美猛男超大videosgay| 亚洲欧洲韩国日本视频| 国产精品中文欧美| 欧美成人aa大片| 麻豆精品在线视频| 欧美老肥妇做.爰bbww| 亚洲日本一区二区| 成人av电影免费观看| 国产日韩欧美综合在线| 精品一区二区免费| 欧美一二三区在线| 日本中文在线一区| 在线观看91精品国产麻豆| 一级做a爱片久久| 91美女在线观看| 中文字幕一区在线观看| 成人av免费网站| 国产精品毛片无遮挡高清| 岛国av在线一区| 欧美国产精品中文字幕| 粉嫩av一区二区三区粉嫩 | 91网站在线观看视频| 中文字幕第一区综合| 成人综合日日夜夜| 国产精品久久久久国产精品日日 | 91麻豆国产福利在线观看| 国产精品三级久久久久三级| 国产精品一区在线观看乱码 | 久久精品久久99精品久久| 91精品综合久久久久久| 亚洲mv在线观看| 在线电影院国产精品| 免费高清在线一区| wwww国产精品欧美| 国产成人日日夜夜| 国产三级欧美三级| 大桥未久av一区二区三区中文| 国产三级精品视频| 99久久精品国产导航| 亚洲一区二区三区四区中文字幕| 欧美午夜免费电影| 日产国产欧美视频一区精品 | 久久精品欧美日韩精品| 国产成人小视频| 亚洲欧洲性图库| 欧美在线三级电影| 日韩中文字幕区一区有砖一区 | 日韩女优视频免费观看| 国产精品123区| 亚洲日本电影在线| 欧美一区二区三区男人的天堂| 蜜桃精品视频在线| 中文字幕免费不卡| 欧美日韩综合色| 国产一二三精品| 亚洲精品欧美激情| 日韩一区二区中文字幕| 国产91精品一区二区麻豆亚洲| 亚洲综合999| 久久久欧美精品sm网站| 在线观看成人免费视频|