sdkcreationmw/sdkruntimes/wsock/src/WinsockProtocolFamily.cpp
author rajpuroh
Wed, 21 Apr 2010 09:56:53 +0530
changeset 1 ac50fd48361b
parent 0 b26acd06ea60
permissions -rw-r--r--
Second Contribution
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     1
/*
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     2
* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies).
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     3
* All rights reserved.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     4
* This component and the accompanying materials are made available
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     5
* which accompanies this distribution, and is available
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     6
*
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     7
* Initial Contributors:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     8
* Nokia Corporation - initial contribution.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     9
*
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    10
* Contributors:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    11
*
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    12
*
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    13
*/
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    14
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    15
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    16
#define TRACE_PREFIX "WSOCK: ProtocolFamily: "
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    17
#include "wsock.h"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    18
#include "WinsockProtocol.h"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    19
#include "WinsockProtocolFamily.h"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    20
#include <winsock2.h>
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    21
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    22
#define IPPROTO_ICMPV6 58
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    23
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    24
const TUint KProtocolInetRes = 0xF01;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    25
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    26
// Initializer for TWinProtocolDesc structure
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    27
class TWinProtocolDescInit: public TWinProtocolDesc
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    28
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    29
public:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    30
    TWinProtocolDescInit(const TText * aName,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    31
        TUint aAddrFamily, TUint aSockType, TUint aProtocol,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    32
        TUint aServiceInfo, TInt aMessageSize, TInt aServiceTypeInfo,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    33
        TUint aWinSockType, TUint aWinProtocol)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    34
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    35
        iName = aName;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    36
        iAddrFamily = aAddrFamily;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    37
        iSockType = aSockType;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    38
        iProtocol = aProtocol;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    39
        iVersion = TVersion(1,0,0);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    40
        iByteOrder = EBigEndian;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    41
        iServiceInfo = aServiceInfo;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    42
        iNamingServices = KNSNameResolution;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    43
        iSecurity = KSocketNoSecurity;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    44
        iMessageSize = aMessageSize;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    45
        iServiceTypeInfo = aServiceTypeInfo;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    46
        iNumSockets = KUnlimitedSockets;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    47
        iWinSockType = aWinSockType;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    48
        iWinProtocol = aWinProtocol;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    49
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    50
};
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    51
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    52
#if 0
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    53
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    54
TWinProtocolDescInit IP(_S("ip"),
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    55
    KAfInet,  KSockStream,  KProtocolInetTcp, KSIStreamBased | KSIInOrder |
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    56
    KSIReliable | KSIGracefulClose | KSIPeekData | KSIUrgentData, 
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    57
    KSocketMessageSizeIsStream, ESocketSupport,
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    58
    SOCK_STREAM, IPPROTO_TCP);
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    59
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    60
#ifdef WSOCK_IPV6
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    61
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    62
TWinProtocolDescInit IP6(_S("ip6"),
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    63
    KAfInet6,  KSockStream,  KProtocolInetTcp, KSIStreamBased | KSIInOrder |
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    64
    KSIReliable | KSIGracefulClose | KSIPeekData | KSIUrgentData, 
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    65
    KSocketMessageSizeIsStream, ESocketSupport,
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    66
    SOCK_STREAM, IPPROTO_TCP);
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    67
#endif
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    68
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    69
// NOTE: the order of protocols must match the order of entries in the
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    70
// ip.tcp.esk file (at the time of thie writing this file was located 
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    71
// in c:\private\101f7989\ESock directory).
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    72
static const TWinProtocolDesc* ipProtocols[] = {
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    73
     &IP,
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    74
#ifdef WSOCK_IPV6
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    75
     &IP6
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    76
#endif // WSOCK_IPV6
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    77
};
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    78
#else
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    79
TWinProtocolDescInit IP(_S("ip"),
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    80
    KAfInet,  KSockStream,  KProtocolInetTcp, KSIStreamBased | KSIInOrder |
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    81
    KSIReliable | KSIGracefulClose | KSIPeekData | KSIUrgentData, 
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    82
    KSocketMessageSizeIsStream, ESocketSupport,
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    83
    SOCK_STREAM, IPPROTO_IP);
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    84
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    85
TWinProtocolDescInit TCP(_S("tcp"),
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    86
    KAfInet,  KSockStream,  KProtocolInetTcp, KSIStreamBased | KSIInOrder |
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    87
    KSIReliable | KSIGracefulClose | KSIPeekData | KSIUrgentData, 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    88
    KSocketMessageSizeIsStream, ESocketSupport,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    89
    SOCK_STREAM, IPPROTO_TCP);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    90
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    91
TWinProtocolDescInit UDP(_S("udp"),
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    92
    KAfInet,  KSockDatagram,  KProtocolInetUdp, 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    93
    KSIConnectionLess | KSIDatagram | KSIGracefulClose | KSIPeekData,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    94
    65516, ESocketSupport,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    95
    SOCK_DGRAM, IPPROTO_UDP);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    96
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    97
TWinProtocolDescInit ICMP4(_S("icmp"),
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    98
    KAfInet,  KSockDatagram,  KProtocolInetIcmp, KSIConnectionLess |
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    99
    KSIMessageBased | KSIBroadcast | KSIPeekData | KSIGracefulClose,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   100
    65000, ESocketSupport | ETransport | EPreferDescriptors | EUseCanSend,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   101
    SOCK_RAW, IPPROTO_ICMP);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   102
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   103
TWinProtocolDescInit ICMP6(_S("icmp6"),
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   104
    KAfInet,  KSockDatagram,  KProtocolInet6Icmp, KSIConnectionLess |
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   105
    KSIMessageBased | KSIBroadcast | KSIPeekData | KSIGracefulClose,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   106
    65000, ESocketSupport | ETransport | EPreferDescriptors | EUseCanSend,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   107
    SOCK_RAW, IPPROTO_ICMPV6);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   108
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   109
#ifdef WSOCK_IPV6
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   110
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   111
TWinProtocolDescInit IP6(_S("ip6"),
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   112
    KAfInet6,  KSockStream,  KProtocolInetTcp, KSIStreamBased | KSIInOrder |
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   113
    KSIReliable | KSIGracefulClose | KSIPeekData | KSIUrgentData, 
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   114
    KSocketMessageSizeIsStream, ESocketSupport,
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   115
    SOCK_STREAM, IPPROTO_IP);
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   116
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   117
TWinProtocolDescInit TCP6(_S("tcp"),
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   118
    KAfInet6,  KSockStream,  KProtocolInetTcp, KSIStreamBased | KSIInOrder |
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   119
    KSIReliable | KSIGracefulClose | KSIPeekData | KSIUrgentData, 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   120
    KSocketMessageSizeIsStream, ESocketSupport,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   121
    SOCK_STREAM, IPPROTO_TCP);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   122
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   123
TWinProtocolDescInit UDP6(_S("udp"),
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   124
    KAfInet6,  KSockDatagram,  KProtocolInetUdp, 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   125
    KSIConnectionLess | KSIDatagram |KSIGracefulClose | KSIPeekData,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   126
    65516, ESocketSupport,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   127
    SOCK_DGRAM, IPPROTO_UDP);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   128
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   129
TWinProtocolDescInit ICMP46(_S("icmp"),
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   130
    KAfInet6,  KSockDatagram,  KProtocolInetIcmp, KSIConnectionLess |
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   131
    KSIMessageBased | KSIBroadcast | KSIPeekData | KSIGracefulClose,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   132
    65000, ESocketSupport | ETransport | EPreferDescriptors | EUseCanSend,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   133
    SOCK_RAW, IPPROTO_ICMP);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   134
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   135
TWinProtocolDescInit ICMP66(_S("icmp6"),
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   136
    KAfInet6,  KSockDatagram,  KProtocolInet6Icmp, KSIConnectionLess |
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   137
    KSIMessageBased | KSIBroadcast | KSIPeekData | KSIGracefulClose,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   138
    65000, ESocketSupport | ETransport | EPreferDescriptors | EUseCanSend,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   139
    SOCK_RAW, IPPROTO_ICMPV6);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   140
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   141
#endif // WSOCK_IPV6
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   142
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   143
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   144
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   145
// NOTE: the order of protocols must match the order of entries in the
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   146
// ip.tcp.esk file (at the time of thie writing this file was located 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   147
// in c:\private\101f7989\ESock directory).
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   148
static const TWinProtocolDesc* ipProtocols[] = {
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   149
    &IP,&TCP,&UDP,&ICMP4,&ICMP6,
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   150
#ifdef WSOCK_IPV6
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   151
    &IP6,&TCP6,&UDP6,&ICMP46,&ICMP66
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   152
#endif // WSOCK_IPV6
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   153
};
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   154
#endif
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   155
CWinsockProtocolFamily::CWinsockProtocolFamily(TUint aAddrFamily) :
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   156
iAddrFamily(aAddrFamily)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   157
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   158
    TRACE2("[%08X] created (0x%04x)",this,aAddrFamily);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   159
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   160
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   161
CWinsockProtocolFamily::~CWinsockProtocolFamily()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   162
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   163
    TRACE1("[%08X] destroyed",this);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   164
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   165
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   166
TInt CWinsockProtocolFamily::Install()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   167
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   168
    TRACE1("[%08X] Install",this);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   169
    return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   170
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   171
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   172
// Access to the list of protocols
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   173
TInt CWinsockProtocolFamily::ProtocolCount()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   174
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   175
    return N(ipProtocols);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   176
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   177
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   178
const TServerProtocolDesc* CWinsockProtocolFamily::ProtocolDesc(TInt aIndex)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   179
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   180
    ASSERT(aIndex >= 0 && aIndex < N(ipProtocols));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   181
    if (aIndex >= 0 && aIndex < N(ipProtocols))
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   182
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   183
        return ipProtocols[aIndex];
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   184
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   185
    else
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   186
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   187
        return NULL;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   188
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   189
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   190
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   191
// Returns comma separated list of protocol names
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   192
void CWinsockProtocolFamily::ProtocolNamesfownetwork(TDes& aProtocols)
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   193
{
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   194
    aProtocols.SetLength(0);
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   195
 /*   for (TInt i=0; i<N(ipProtocols); i++)
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   196
    {
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   197
        TBool alreadyThere = EFalse;
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   198
        for (TInt k=0; k<i; k++)
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   199
        {
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   200
            if (!ipProtocols[i]->iName.Compare(ipProtocols[k]->iName))
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   201
            {
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   202
                alreadyThere = ETrue;
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   203
                break;
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   204
            }
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   205
        }
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   206
        if (!alreadyThere)
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   207
        {
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   208
            if (i > 0) aProtocols.Append(',');
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   209
            aProtocols.Append(ipProtocols[i]->iName);
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   210
        }
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   211
    }*/
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   212
    aProtocols.Append(ipProtocols[0]->iName);
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   213
    aProtocols.Append(',');
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   214
    aProtocols.Append(ipProtocols[5]->iName);
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   215
    
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   216
    TRACE1("ProtocolNames: %S",&aProtocols);
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   217
}
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   218
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   219
// Returns comma separated list of protocol names
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   220
void CWinsockProtocolFamily::ProtocolNames(TDes& aProtocols)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   221
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   222
    aProtocols.SetLength(0);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   223
    for (TInt i=0; i<N(ipProtocols); i++)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   224
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   225
        TBool alreadyThere = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   226
        for (TInt k=0; k<i; k++)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   227
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   228
            if (!ipProtocols[i]->iName.Compare(ipProtocols[k]->iName))
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   229
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   230
                alreadyThere = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   231
                break;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   232
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   233
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   234
        if (!alreadyThere)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   235
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   236
            if (i > 0) aProtocols.Append(',');
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   237
            aProtocols.Append(ipProtocols[i]->iName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   238
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   239
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   240
    TRACE1("ProtocolNames: %S",&aProtocols);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   241
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   242
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   243
// CProtocolFamilyBase
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   244
TUint CWinsockProtocolFamily::ProtocolList(TServerProtocolDesc*& aProtocolList)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   245
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   246
    // we allocate slightly more, but that's OK
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   247
    TInt count = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   248
    aProtocolList = new(ELeave)TServerProtocolDesc[N(ipProtocols)];
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   249
    if (aProtocolList)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   250
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   251
        for (TInt i=0; i<N(ipProtocols); i++)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   252
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   253
            if (ipProtocols[i]->iAddrFamily == iAddrFamily)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   254
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   255
                const TServerProtocolDesc* src = ipProtocols[i];
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   256
                aProtocolList[count++] = *src;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   257
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   258
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   259
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   260
        if (!count)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   261
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   262
            delete aProtocolList;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   263
            aProtocolList =  NULL;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   264
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   265
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   266
    
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   267
    TRACE2("[%08X] ProtocolList - %d protocols",this,count);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   268
    return count;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   269
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   270
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   271
CProtocolBase* CWinsockProtocolFamily::NewProtocolL(TUint aSockType,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   272
                                                    TUint aProtocol)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   273
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   274
    TRACE3("[%08X] NewProtocolL(%d,%d)",this,aSockType,aProtocol);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   275
    if (aProtocol == KUndefinedProtocol)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   276
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   277
        switch (aSockType)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   278
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   279
        case KSockDatagram:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   280
            aProtocol = KProtocolInetUdp;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   281
            break;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   282
        case KSockStream:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   283
            aProtocol = KProtocolInetTcp;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   284
            break;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   285
        default:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   286
            LEAVE(KErrNotSupported);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   287
            break;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   288
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   289
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   290
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   291
    // Finds requested protocol
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   292
    for (TInt i=0; i<N(ipProtocols); i++)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   293
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   294
        if (ipProtocols[i]->iAddrFamily == iAddrFamily &&
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   295
            ipProtocols[i]->iSockType == aSockType &&
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   296
            ipProtocols[i]->iProtocol == aProtocol)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   297
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   298
            return new(ELeave)CWinsockProtocol(ipProtocols[i]);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   299
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   300
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   301
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   302
    LEAVE(KErrNotSupported);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   303
    return NULL;   
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   304
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   305
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   306
/**
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   307
 * Local Variables:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   308
 * c-basic-offset: 4
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   309
 * indent-tabs-mode: nil
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   310
 * End:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   311
 */