diff -r 17af172ffa5f -r f1e62dc8c3f9 wapstack/wapmessageapi/sws/WapMsgUtils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wapstack/wapmessageapi/sws/WapMsgUtils.cpp Mon Aug 23 13:09:49 2010 +0100 @@ -0,0 +1,129 @@ +// Copyright (c) 2003-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: +// + +#include "WapMsgUtils.h" +#include +#include +#include +#include + +TInt CSWSWapMsgUtils::GetLocalAddress(HBufC8*& aLocalHost) +/** +Not supported +@internalComponent +@released +@since v8.0 +*/ + { + // Panic client if the buffer isn't null + __ASSERT_ALWAYS(aLocalHost==NULL, User::Panic(Wap::KWapMsgPanicDescriptor, KErrArgument)); + + RArray myArray; + + TInt ret(0); + TRAPD(err, ret=CWapMessageUtils::GetLocalAddressesL(myArray)) + if (err) + { + return err; + } + // GetLocalAddressesL can return KErrNotFound if there is no network interface up + if (ret) + { + return ret; + } + + TBuf16<256>tempBuf16; + TBuf8<256>tempBuf8; + TInetAddr* info = &myArray[0].iAddress; + // Output the address to a descriptor + info->Output(tempBuf16); + // Need to convert the buffer to 8 bit; + tempBuf8.Copy(tempBuf16); + // Note: Ownership of the allocated buffer is passed to the client + aLocalHost = HBufC8::New( tempBuf16.Length() ); + if (!aLocalHost) + { + return KErrNoMemory; + } + // Now copy the 8 bit version of the address + *aLocalHost = tempBuf8; + + return KErrNone; + } + +void CSWSWapMsgUtils::BuildAddrL(TSockAddr& aAddr, Wap::TBearer aBearer, const TDesC8& aHost, Wap::TPort aPort) +/** +Build a socket address according to the given parameters. +@internalComponent +@released +@since v8.0 +@param aAddr the socket address which is built from given parameters +@param aBearer the underlie bearer type +@param aHost the host name +@param aHost the port number +*/ + { + if (aBearer==Wap::EIP) + { + TInetAddr addr(aPort); + HBufC16* addr16=HBufC16::NewL(aHost.Length()); + TPtr16 addr16Des=addr16->Des(); + addr16Des.Copy(aHost); + // coverity[check_return] + addr.Input(addr16Des); + aAddr=addr; + delete addr16; + } + else + { + TWapAddr addr; + addr.SetWapPort(TWapPortNumber(aPort)); + addr.SetWapAddress(aHost); + aAddr=addr; + } + } +void CSWSWapMsgUtils::AnalyseAddrL(TSockAddr& aAddr, Wap::TBearer aBearer, TDes8& aHost, Wap::TPort& aPort) +/** +Analyse a socket address, and generate host name and port +@internalComponent +@released +@since v8.0 +@param aAddr the socket address to be analysed +@param aBearer the underlie bearer type +@param aHost the host name +@param aHost the port number +*/ + { + aPort=static_cast(aAddr.Port()); + if (aBearer==Wap::EIP) + { + TInetAddr addr(aAddr); + // If the family is KAfInet6, the output buffer must be at least + // 39 characters. + // If less, the buffer is filled with '*' characters. + HBufC16* addr16=HBufC16::NewL(40); + TPtr16 addr16Des=addr16->Des(); + addr.Output(addr16Des); + aHost.Copy(addr16Des); + delete addr16; + } + else + { + TWapAddr& wapAddr = *(reinterpret_cast(&aAddr)); + TPtrC8 addr=wapAddr.WapAddress(); + aHost.Copy(addr); + } + } +