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