// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).// All rights reserved.// This component and the accompanying materials are made available// under the terms of "Eclipse Public License v1.0"// which accompanies this distribution, and is available// at the URL "http://www.eclipse.org/legal/epl-v10.html".//// Initial Contributors:// Nokia Corporation - initial contribution.//// Contributors://// Description://#ifndef EXCHANGE_H#define EXCHANGE_H#include <bt_sock.h>#include <btsdp.h>class CExchanger : public CBase/**Abstract base class for protocols that can locate compatible devices.@internalComponent*/{ public: /** @internalComponent Begins a search for compatible devices. Until successful completion, no other function should be called as the data may be invalid. @param aStatus A TRequestStatus object that is signalled when the search completes. It should be used from within an active object */ virtual void LookForPeersL(TRequestStatus& aStatus) = 0; /** @internalComponent @return The number of compatible peer devices found */ virtual TInt Count() = 0; /** @internalComponent Selects the first compatible device that was found */ virtual void First() = 0; /** @internalComponent Retrieves the selected device, and selects the next device that was found. @param aPtr A reference to a TNameEntry* pointer. On success, it is filled in with a pointer to a device that was found. @return KErrNotFound on failure, KErrNone on success. */ virtual TInt Next(TNameEntry*& aPtr) = 0; protected: RSocketServ iSockSession; private:};class CBluetoothSeeker;class CBluetoothExchanger : public CExchanger/**@internalComponentImplementation of CExchanger for bluetooth. Uses inquiry and the SDP protocol to retrieve a filtered list of all devices in range that supportthe service, as defined by UUID*/{ public: IMPORT_C static CBluetoothExchanger* NewL(const TUUID &aUUID); IMPORT_C static CBluetoothExchanger* NewLC(const TUUID &aUUID); ~CBluetoothExchanger(); //virtual implementations IMPORT_C virtual void LookForPeersL(TRequestStatus& aStatus); IMPORT_C virtual TInt Count(); IMPORT_C virtual void First(); IMPORT_C virtual TInt Next(TNameEntry*& aPtr); private: void ConstructL(const TUUID &aUUID); RSdp iSdpSession; RSdpDatabase iSdpDb; CBluetoothSeeker *iSeeker; TInt iDeviceIndex;};#endif //EXCHANGE_H