sdkcreationmw/sdkruntimes/wsock/src/WinsockInterface.cpp
author rajpuroh
Wed, 21 Apr 2010 09:56:53 +0530
changeset 1 ac50fd48361b
parent 0 b26acd06ea60
child 4 b3b823debf08
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
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     6
* which accompanies this distribution, and is available
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     8
*
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     9
* Initial Contributors:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    11
*
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    12
* Contributors:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    13
*
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    14
* Description:
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    15
*
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    16
*/
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    17
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    18
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    19
#define TRACE_PREFIX "WSOCK: Interface: "
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    20
#include "wsock.h"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    21
#include "WinsockInterface.h"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    22
#include "WinsockProtocolFamily.h"
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    23
#include <es_enum_partner.h>
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    24
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    25
const TInt KWinsockSubConnectionId = 1;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    26
const TConnectionType EWinsockConnectionType = EConnectionEthernet;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    27
#define super CNifIfLink 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    28
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    29
// CWinsockInterface::CallbackQueueEntry
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    30
class CWinsockInterface::CallbackQueueEntry
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    31
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    32
private:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    33
    CWinsockInterface* iInterface;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    34
    CallbackMethod iMethod;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    35
    TInt iParam1;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    36
    TInt iParam2;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    37
public:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    38
    TSglQueLink iLink;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    39
    CallbackQueueEntry(CWinsockInterface* aInterface, CallbackMethod aMethod,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    40
        TInt aParam1, TInt aParam2) : iInterface(aInterface), 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    41
        iMethod(aMethod), iParam1(aParam1), iParam2(aParam2) {}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    42
    void Invoke() { (iInterface->*iMethod)(iParam1, iParam2); }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    43
};
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    44
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    45
// CWinsockInterface
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    46
CWinsockInterface::CWinsockInterface(CNifIfFactory* aFactory, 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    47
                                     MNifIfNotify* aNotify) : 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    48
super(*aFactory),
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    49
iSignature(KWinsockInterfaceSignature),
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    50
iCallbackQueue(_FOFF(CallbackQueueEntry,iLink)),
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    51
iCallback(TCallBack(AsyncCallbackProc,this),CActive::EPriorityStandard)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    52
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    53
    iNotify = aNotify;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    54
    iTimeStarted.HomeTime();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    55
    TRACE1("created [%08X]",this);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    56
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    57
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    58
CWinsockInterface::~CWinsockInterface()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    59
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    60
    CancelOutstandingCallbacks();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    61
    TRACE1("destroyed [%08X]",this);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    62
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    63
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    64
TInt CWinsockInterface::Signature() const
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    65
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    66
    return KWinsockInterfaceSignature;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    67
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    68
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    69
TInt CWinsockInterface::AsyncCallbackProc(TAny* aPtr)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    70
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    71
    CWinsockInterface* self = (CWinsockInterface*)aPtr;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    72
    self->HandleAsyncCallback();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    73
    return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    74
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    75
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    76
void CWinsockInterface::HandleAsyncCallback()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    77
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    78
    // Invoke the first callback in the queue
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    79
    if (!iCallbackQueue.IsEmpty()) {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    80
        CallbackQueueEntry* entry = iCallbackQueue.First();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    81
        iCallbackQueue.Remove(*entry);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    82
        entry->Invoke();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    83
        delete entry;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    84
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    85
        // Schedule the next one
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    86
        if (!iCallbackQueue.IsEmpty()) {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    87
            iCallback.CallBack();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    88
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    89
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    90
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    91
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    92
void CWinsockInterface::ScheduleAsyncCallback(CallbackMethod aMethod,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    93
                                              TInt aP1, TInt aP2)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    94
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    95
    CallbackQueueEntry* entry = new CallbackQueueEntry(this,aMethod,aP1,aP2);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    96
    if (entry) {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    97
        iCallbackQueue.AddLast(*entry);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    98
        iCallback.Cancel();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    99
        iCallback.CallBack();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   100
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   101
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   102
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   103
void CWinsockInterface::CancelOutstandingCallbacks()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   104
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   105
    iCallback.Cancel();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   106
    while (!iCallbackQueue.IsEmpty()) {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   107
        CallbackQueueEntry* entry = iCallbackQueue.First();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   108
        iCallbackQueue.Remove(*entry);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   109
        delete entry;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   110
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   111
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   112
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   113
void CWinsockInterface::NotifyLinkLayerUp(TInt, TInt)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   114
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   115
    ScheduleAsyncCallback(NotifySubConnectionOpened);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   116
    TRACE("firing LinkLayerUp event");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   117
    iNotify->LinkLayerUp();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   118
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   119
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   120
void CWinsockInterface::NotifyLinkLayerOpen(TInt, TInt)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   121
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   122
    TRACE("firing LinkLayerOpen event");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   123
    iNotify->IfProgress(KLinkLayerOpen, KErrNone);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   124
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   125
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   126
// Sends a subconnection opened event for the entire connection
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   127
void CWinsockInterface::NotifySubConnectionOpened(TInt, TInt)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   128
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   129
    ScheduleAsyncCallback(NotifyLinkLayerOpen);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   130
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   131
    TRACE("firing TSubConnectionOpenedEvent");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   132
    TSubConnectionOpenedEvent event;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   133
    event.iSubConnectionUniqueId = KNifEntireConnectionSubConnectionId;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   134
    TPckg<TSubConnectionOpenedEvent> eventPtr(event);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   135
    iNotify->NifEvent(ESubConnectionEvent, ESubConnectionOpened, eventPtr); 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   136
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   137
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   138
// Sends a subconnection Closed event for the entire connection
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   139
void CWinsockInterface::NotifySubConnectionClosed(TInt aReason, TInt)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   140
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   141
    ScheduleAsyncCallback(NotifyLinkLayerClosed, aReason);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   142
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   143
    TRACE("firing TSubConnectionClosedEvent");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   144
    TSubConnectionClosedEvent event;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   145
    event.iSubConnectionUniqueId = KNifEntireConnectionSubConnectionId;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   146
    event.iTotalUplinkDataVolume = iBytesReceived;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   147
    event.iTotalDownlinkDataVolume = iBytesSent;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   148
    event.iTimeClosed.UniversalTime();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   149
    TPckg<TSubConnectionClosedEvent> eventPtr(event);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   150
    iNotify->NifEvent(ESubConnectionEvent, ESubConnectionClosed, eventPtr);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   151
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   152
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   153
void CWinsockInterface::NotifyLinkLayerDown(TInt aReason, TInt aAction)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   154
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   155
    ScheduleAsyncCallback(NotifySubConnectionClosed, aReason);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   156
    TRACE("firing LinkLayerDown event");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   157
    iNotify->LinkLayerDown(aReason, (MNifIfNotify::TAction)aAction);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   158
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   159
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   160
void CWinsockInterface::NotifyLinkLayerClosed(TInt aReason, TInt)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   161
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   162
    TRACE("firing LinkLayerClosed event");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   163
    iNotify->IfProgress(KLinkLayerClosed, aReason);
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
void CWinsockInterface::DataSent(TUint aBytes)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   167
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   168
    // Handle rollover?
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   169
    iBytesSent += aBytes;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   170
    if (iBytesSentGranularity)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   171
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   172
        TUint delta = iBytesSent - iBytesSentMark;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   173
        if (delta >= iBytesSentGranularity)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   174
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   175
            int chunks = delta/iBytesSentGranularity;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   176
            iBytesSentMark += chunks*iBytesSentGranularity;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   177
            iNotify->NotifyDataSent(KWinsockSubConnectionId,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   178
                delta*iBytesSentGranularity);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   179
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   180
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   181
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   182
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   183
void CWinsockInterface::DataReceived(TUint aBytes)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   184
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   185
    // Handle rollover?
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   186
    iBytesReceived += aBytes;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   187
    if (iBytesReceivedGranularity)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   188
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   189
        TUint delta = iBytesReceived - iBytesReceivedMark;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   190
        if (delta >= iBytesReceivedGranularity)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   191
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   192
            int chunks = delta/iBytesReceivedGranularity;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   193
            iBytesReceivedMark += chunks*iBytesReceivedGranularity;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   194
            iNotify->NotifyDataReceived(KWinsockSubConnectionId,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   195
                delta*iBytesReceivedGranularity);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   196
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   197
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   198
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   199
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   200
// CNifIfBase
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   201
void CWinsockInterface::Info(TNifIfInfo& aInfo) const
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   202
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   203
    aInfo.iName = KWinsockInterface;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   204
    aInfo.iVersion = TVersion(1,0,0);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   205
    aInfo.iFlags = KNifIfIsBase | KNifIfIsLink | KNifIfUsesNotify | KNifIfCreatedByFactory;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   206
    aInfo.iProtocolSupported = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   207
    for (TInt i=0; i<CWinsockProtocolFamily::ProtocolCount(); i++)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   208
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   209
        const TServerProtocolDesc* p = CWinsockProtocolFamily::ProtocolDesc(i);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   210
        aInfo.iProtocolSupported |= p->iProtocol;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   211
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   212
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   213
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   214
TInt CWinsockInterface::Send(RMBufChain& /*aPdu*/, TAny* /*aSource*/)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   215
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   216
    TRACE("Send()");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   217
    return KErrNotSupported;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   218
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   219
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   220
TInt CWinsockInterface::Notification(TAgentToNifEventType DEBUG_ONLY(aEvent),
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   221
                                     TAny* /*aInfo*/)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   222
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   223
    TRACE1("Notification(%d)",aEvent);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   224
    return KErrNotSupported;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   225
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   226
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   227
// CNifIfLink
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   228
TInt CWinsockInterface::Start()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   229
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   230
    TRACE("Start()");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   231
    ScheduleAsyncCallback(NotifyLinkLayerUp);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   232
    return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   233
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   234
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   235
void CWinsockInterface::Stop(TInt aReason, MNifIfNotify::TAction aAction)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   236
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   237
    TRACE2("Stop(%d,%d)",aReason, aAction);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   238
    CancelOutstandingCallbacks();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   239
    ScheduleAsyncCallback(NotifyLinkLayerDown, aReason, aAction);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   240
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   241
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   242
CNifIfBase* CWinsockInterface::GetBinderL(const TDesC& DEBUG_ONLY(aName))
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   243
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   244
    TRACE1("GetBinderL(%S)",&aName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   245
    return this;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   246
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   247
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   248
TInt CWinsockInterface::Control(TUint aLevel,TUint aName,TDes8& aOption, 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   249
                                TAny* aSource)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   250
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   251
    TRACE3("Control(%d,%08X), %d bytes",aLevel,aName,aOption.Length());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   252
	switch (aLevel)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   253
    {
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   254
  /*  case KCOLInterface:
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   255
        switch (aName)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   256
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   257
        case KCOGetNifEMIPtr:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   258
        default:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   259
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   260
                MNifIfExtendedManagementInterface** that = 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   261
                    (MNifIfExtendedManagementInterface**)aOption.Ptr();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   262
                if (aOption.Length() == sizeof(*that))
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   263
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   264
                    MNifIfExtendedManagementInterface* This = this;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   265
                    TRACE1("MNifIfExtendedManagementInterface = %08X",This);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   266
                    *that = This;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   267
                    return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   268
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   269
                else
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   270
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   271
                    return KErrArgument;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   272
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   273
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   274
            break;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   275
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   276
        break;
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   277
*/
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   278
    case KCOLAgent:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   279
        switch (aName)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   280
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   281
        case KCOGetAgentEMIPtr:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   282
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   283
                MNifAgentExtendedManagementInterface** that = 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   284
                    (MNifAgentExtendedManagementInterface**)aOption.Ptr();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   285
                if (aOption.Length() == sizeof(*that))
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   286
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   287
                    MNifAgentExtendedManagementInterface* This = this;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   288
                    TRACE1("MNifAgentExtendedManagementInterface = %08X",This);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   289
                    *that = This;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   290
                    return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   291
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   292
                else
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   293
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   294
                    return KErrArgument;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   295
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   296
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   297
        default:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   298
            break;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   299
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   300
        break;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   301
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   302
    default:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   303
        break;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   304
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   305
    return super::Control(aLevel, aName, aOption, aSource);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   306
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   307
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   308
// MNifIfExtendedManagementInterface
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   309
TInt CWinsockInterface::Stop(TSubConnectionUniqueId aId, 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   310
                             TInt DEBUG_ONLY(aReason))
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   311
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   312
    TRACE2("Stop(%d,%d)", aId, aReason);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   313
    switch (aId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   314
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   315
    case KNifEntireConnectionSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   316
    case KWinsockSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   317
        return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   318
    default:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   319
        return KErrNotFound;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   320
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   321
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   322
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   323
TInt CWinsockInterface::GetDataTransferred(TSubConnectionUniqueId aId, 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   324
                                           TUint& aSentBytes, 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   325
                                           TUint& aReceivedBytes)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   326
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   327
    TRACE1("GetDataTransferred(%d)", aId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   328
    switch (aId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   329
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   330
    case KNifEntireConnectionSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   331
    case KWinsockSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   332
        aSentBytes = iBytesSent;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   333
        aReceivedBytes = iBytesReceived;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   334
        return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   335
    default:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   336
        return KErrNotFound;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   337
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   338
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   339
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   340
TInt CWinsockInterface::SetDataSentNotificationGranularity(TSubConnectionUniqueId aId, 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   341
                                                           TUint aGranularity)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   342
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   343
    TRACE2("SetDataSentNotificationGranularity(%d,%d)", aId, aGranularity);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   344
    switch (aId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   345
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   346
    case KNifEntireConnectionSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   347
    case KWinsockSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   348
        iBytesSentGranularity = aGranularity;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   349
        return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   350
    default:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   351
        return KErrNotFound;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   352
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   353
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   354
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   355
TInt CWinsockInterface::CancelDataSentNotification(TSubConnectionUniqueId aId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   356
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   357
    TRACE1("CancelDataSentNotification(%d)", aId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   358
    switch (aId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   359
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   360
    case KNifEntireConnectionSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   361
    case KWinsockSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   362
        iBytesSentGranularity = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   363
        return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   364
    default:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   365
        return KErrNotFound;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   366
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   367
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   368
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   369
TInt CWinsockInterface::SetDataReceivedNotificationGranularity(TSubConnectionUniqueId aId, 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   370
                                                               TUint aGranularity)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   371
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   372
    TRACE2("SetDataReceivedNotificationGranularity(%d,%d)", aId, aGranularity);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   373
    switch (aId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   374
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   375
    case KNifEntireConnectionSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   376
    case KWinsockSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   377
        iBytesReceivedGranularity = aGranularity;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   378
        return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   379
    default:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   380
        return KErrNotFound;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   381
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   382
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   383
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   384
TInt CWinsockInterface::CancelDataReceivedNotification(TSubConnectionUniqueId aId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   385
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   386
    TRACE1("CancelDataReceivedNotification(%d)", aId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   387
    switch (aId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   388
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   389
    case KNifEntireConnectionSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   390
    case KWinsockSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   391
        iBytesReceivedGranularity = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   392
        return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   393
    default:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   394
        return KErrNotFound;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   395
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   396
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   397
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   398
// MNifAgentExtendedManagementInterface
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   399
TInt CWinsockInterface::GetInterfaceType(TConnectionType& aConnectionType)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   400
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   401
    aConnectionType = EWinsockConnectionType;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   402
    return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   403
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   404
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   405
TInt CWinsockInterface::EnumerateSubConnections(TUint& aCount)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   406
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   407
    aCount = 1;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   408
    return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   409
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   410
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   411
TInt CWinsockInterface::GetSubConnectionInfo(TUint aIndex, 
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   412
                                             TDes8& aInfo)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   413
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   414
    if (aInfo.Length() != sizeof(TSubConnectionInfo))
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   415
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   416
        return KErrArgument;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   417
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   418
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   419
    TSubConnectionInfo* info = (TSubConnectionInfo*)aInfo.Ptr();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   420
    switch (aIndex)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   421
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   422
    case KNifEntireConnectionSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   423
    case KWinsockSubConnectionId:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   424
        info->iConnectionType = EWinsockConnectionType;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   425
        info->iSubConnectionUniqueId = aIndex;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   426
        info->iTimeStarted = iTimeStarted;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   427
        return KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   428
    default:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   429
        return KErrNotFound;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   430
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   431
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   432
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   433
TInt CWinsockInterface::GetSubConnectionInfo(TDes8& aInfo)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   434
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   435
    if (aInfo.Length() != sizeof(TSubConnectionInfo))
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   436
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   437
        return KErrArgument;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   438
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   439
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   440
    TSubConnectionInfo* info = (TSubConnectionInfo*)aInfo.Ptr();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   441
    return GetSubConnectionInfo(info->iSubConnectionUniqueId, aInfo);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   442
}