--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/csock/CS_NET.CPP Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,231 @@
+// Copyright (c) 1997-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 "CS_STD.H"
+
+//
+// Byte Order
+// Might make this lot inline...
+//
+
+#pragma warning( disable : 4244 ) // possible loss of data warning
+
+
+EXPORT_C TUint32 ByteOrder::Swap32(TUint32 aVal)
+/** Reverses the order of the bytes in a 32-bit value.
+
+@param aVal The value to reverse.
+@return The reversed value. */
+ {
+ return ((aVal>>24)&0xff) | ((aVal>>8)&0xff00) | ((aVal<<8)&0xff0000) | ((aVal<<24)&0xff000000);
+ }
+
+EXPORT_C TUint16 ByteOrder::Swap16(TUint16 aVal)
+/** Reverses the order of the bytes in a 16-bit value.
+
+@param aVal The value to reverse.
+@return The reversed value. */
+ {
+ return ((aVal>>8) & 0xff) | ((aVal<<8) & 0xff00);
+ }
+
+EXPORT_C TUint32 BigEndian::Get32(const TUint8 *aPtr)
+/** Gets a 32-bit integer value which is in big-endian format from a byte stream.
+
+@param aPtr A pointer to a byte stream.
+@return A 32-bit long integer value in native machine format. */
+ {
+ return (aPtr[0]<<24) | (aPtr[1]<<16) | (aPtr[2]<<8) | aPtr[3];
+ }
+
+EXPORT_C void BigEndian::Put32(TUint8 *aPtr, TUint32 aVal)
+/** Inserts a 32-bit value into a byte stream in big-endian format.
+
+@param aPtr A pointer to a byte stream.
+@param aVal A 32-bit long integer value in native machine format. */
+ {
+ aPtr[0] = aVal >> 24;
+ aPtr[1] = (aVal >> 16) & 0xff;
+ aPtr[2] = (aVal >> 8) & 0xff;
+ aPtr[3] = aVal & 0xff;
+ }
+
+EXPORT_C TUint16 BigEndian::Get16(const TUint8 *aPtr)
+/** Gets a 16-bit value integer which is in big-endian format from a byte stream.
+
+@param aPtr A pointer to a byte stream.
+@return A 16-bit long integer value in native machine format. */
+ {
+ return (aPtr[0]<<8) | aPtr[1];
+ }
+
+EXPORT_C void BigEndian::Put16(TUint8 *aPtr, TUint16 aVal)
+/** Inserts a 16-bit value into a byte stream in big-endian format.
+
+@param aPtr A pointer to a byte stream.
+@param aVal A 16-bit long integer value in native machine format. */
+ {
+ aPtr[0] = aVal >> 8;
+ aPtr[1] = aVal & 0xff;
+ }
+
+EXPORT_C TUint32 LittleEndian::Get32(const TUint8 *aPtr)
+/** Gets a 32-bit integer value which is in little-endian format from a byte stream.
+
+@param aPtr A pointer to a byte stream.
+@return A 32-bit long integer value in native machine format. */
+ {
+ return (aPtr[3]<<24) | (aPtr[2]<<16) | (aPtr[1]<<8) | aPtr[0];
+ }
+
+EXPORT_C void LittleEndian::Put32(TUint8 *aPtr, TUint32 aVal)
+/** Inserts a 32-bit value into a byte stream in little-endian format.
+
+@param aPtr A pointer to a byte stream
+@param aVal A 32-bit long integer value in native machine format. */
+ {
+ aPtr[3] = aVal >> 24;
+ aPtr[2] = (aVal >> 16) & 0xff;
+ aPtr[1] = (aVal >> 8) & 0xff;
+ aPtr[0] = aVal & 0xff;
+ }
+
+EXPORT_C TUint16 LittleEndian::Get16(const TUint8 *aPtr)
+/** Gets a 16-bit value integer which is in little-endian format from a byte stream.
+
+@param aPtr A pointer to a byte stream.
+@return A 16-bit long in native machine format. */
+ {
+ return (aPtr[1]<<8) | aPtr[0];
+ }
+
+EXPORT_C void LittleEndian::Put16(TUint8 *aPtr, TUint16 aVal)
+/** Inserts a 16-bit value into a byte stream in little-endian format.
+
+@param aPtr A pointer to a byte stream.
+@param aVal A 32-bit long integer value in native machine format. */
+ {
+ aPtr[0] = aVal & 0xff;
+ aPtr[1] = aVal >> 8;
+ }
+
+#pragma warning( default : 4244 ) // possible loss of data warning
+
+
+//
+// Socket Address
+//
+
+EXPORT_C TSockAddr::TSockAddr()
+ : TBuf8<KMaxSockAddrSize>()
+/** Default constructor initialises the address to be zero-filled. */
+ {
+ SetLength(KMaxSockAddrSize);
+ SetFamily(KAFUnspec);
+ }
+
+EXPORT_C TSockAddr::TSockAddr(TUint aFamily)
+/**
+Constructs the address with the family member data specified.
+
+@released.
+@param aFamily, Address family of address object.
+*/
+ : TBuf8<KMaxSockAddrSize>()
+/** Constructs the address with the family member data specified.
+
+@param aFamily Address family Id. */
+ {
+ SetLength(KMaxSockAddrSize);
+ SetFamily(aFamily);
+ }
+
+EXPORT_C TUint TSockAddr::Family() const
+/** Gets the address family and thereby the type of address. The family may be
+used to effect 'down-casting'.
+
+@return Address family Id. */
+ {
+ return BasePtr()->iFamily;
+ }
+
+EXPORT_C void TSockAddr::SetFamily(TUint aFamily)
+/** Sets the address family of an address.
+
+@param aFamily Address family Id. */
+ {
+ BasePtr()->iFamily = aFamily;
+ }
+
+EXPORT_C void TSockAddr::SetPort(TUint aPort)
+//
+// Set Generic Port
+//
+/** Sets the address port of an address.
+
+@param aPort New port value for address */
+ {
+ BasePtr()->iPort = aPort;
+ }
+
+EXPORT_C TUint TSockAddr::Port() const
+//
+// Get Generic Port
+//
+/** Gets the port value.
+
+@return Port value */
+ {
+ return BasePtr()->iPort;
+ }
+
+EXPORT_C TBool TSockAddr::CmpPort(const TSockAddr &anAddr) const
+/**
+Compare two ports.
+
+Compares ports in two addresses
+
+@param anAddr, socket address.
+@return ETrue if the ports match and EFalse if they do not
+*/
+ {
+ return (BasePtr()->iFamily==anAddr.BasePtr()->iFamily)
+ && (BasePtr()->iPort==anAddr.BasePtr()->iPort);
+ }
+
+EXPORT_C void TSockAddr::SetUserLen(TInt aLen)
+//
+// Set descriptor length to actual length of
+// subclass.
+//
+/** Sets the length of data it appends after the base class' data. This function
+is mainly intended for use in derived classes.
+
+@param aLen New length for appended data. */
+ {
+ SetLength(aLen+Align4(sizeof(SSockAddr)));
+ }
+
+EXPORT_C TInt TSockAddr::GetUserLen()
+//
+// Get length of user part of TSockAddr
+//
+/** Gets the number of bytes a derived class has set beyond the SSockAddr part
+of the address. This function is mainly intended for use in derived classes.
+
+@return User length */
+ {
+ return Length()-Align4(sizeof(SSockAddr));
+ }