userlibandfileserver/fileserver/sfile/sf_notify.cpp
author hgs
Tue, 02 Nov 2010 15:29:23 +0000
changeset 300 1d28c8722707
parent 286 48e57fb1237e
permissions -rw-r--r--
201043_09
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     1
// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     2
// All rights reserved.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     3
// This component and the accompanying materials are made available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     5
// which accompanies this distribution, and is available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     7
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     8
// Initial Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    10
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    11
// Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    12
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    13
// Description:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    14
// f32\sfile\sf_notif.cpp
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    15
// 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    16
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    17
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    18
#include "sf_std.h"
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    19
#include "sf_notifier.h"
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    20
#include "sf_pool.h"
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    21
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    22
#ifdef SYMBIAN_F32_ENHANCED_CHANGE_NOTIFICATION
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    23
#include <f32notification.h>
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    24
#endif
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    25
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    26
TChangeQue FsNotify::iChangeQues[KMaxNotifyQues];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    27
TDiskSpaceQue FsNotify::iDiskSpaceQues[KMaxDiskQues];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    28
TDebugQue FsNotify::iDebugQue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    29
TDismountNotifyQue FsNotify::iDismountNotifyQue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    30
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    31
_LIT(KEmptyString,"");
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    32
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    33
CFsNotificationInfoBody::CFsNotificationInfoBody()
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    34
: iSrc(KEmptyString),
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    35
  iSrcBuf(KEmptyString),
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    36
  iDest(KEmptyString),
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    37
  iDestDriveStored(EFalse),
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    38
  iFunction(KErrNotFound),
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    39
  iData(KErrNotFound), 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    40
#ifdef SYMBIAN_F32_ENHANCED_CHANGE_NOTIFICATION
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    41
  iNotificationType(TFsNotification::EOverflow),
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    42
#else
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    43
  iNotificationType(KErrNotFound),
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    44
#endif
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    45
  iUid(TUid::Null())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    46
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    47
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    48
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    49
CFsNotificationInfo::CFsNotificationInfo()
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    50
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    51
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    52
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    53
/*
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    54
 * These do not get deleted, they get Freed via CFsNotificationInfo::Free.
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    55
 */
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    56
CFsNotificationInfo::~CFsNotificationInfo()
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    57
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    58
    Fault(ENotificationInfoDeletion);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    59
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    60
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    61
TInt CFsNotificationInfo::Init(TInt aFunction, TInt aDriveNum)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    62
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    63
    //Clean notification before use
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    64
    CleanNotification();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    65
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    66
    iBody->iFunction = aFunction;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    67
    TInt err = SetDriveNumber(aDriveNum);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    68
    if(err != KErrNone)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    69
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    70
        return err;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    71
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    72
 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    73
    //Set notification type
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    74
#ifdef SYMBIAN_F32_ENHANCED_CHANGE_NOTIFICATION
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    75
    CFsNotificationInfo::NotificationType(iBody->iFunction, iBody->iNotificationType);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    76
#else
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    77
    iBody->iNotificationType = KErrNotSupported;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    78
#endif   
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    79
    return KErrNone;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    80
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    81
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    82
void CFsNotificationInfo::CleanNotification()
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    83
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    84
    //Clear all variables 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    85
    TParsePtrC empty(KEmptyString);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    86
    memcpy(&iBody->iSrc,&empty,sizeof(TParsePtrC));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    87
    memcpy(&iBody->iDest,&empty,sizeof(TParsePtrC));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    88
    iBody->iData = KErrNotFound;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    89
    iBody->iRequest = NULL;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    90
    iBody->iDriveNumber = KErrNotFound;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    91
    iBody->iUid = TUid::Null();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    92
    iBody->iDestDriveStored = EFalse;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    93
#ifdef SYMBIAN_F32_ENHANCED_CHANGE_NOTIFICATION
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    94
    iBody->iNotificationType=TFsNotification::EOverflow;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    95
#else
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    96
    iBody->iNotificationType=KErrNotFound;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    97
#endif
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    98
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
    99
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   100
EXPORT_C CFsNotificationInfo* CFsNotificationInfo::Allocate(const CMountCB& aMount, TInt aFunction)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   101
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   102
    CFsNotificationInfo* info = NotificationInfoPool->Allocate();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   103
    __ASSERT_DEBUG(info,User::Panic(_L("CFsNotificationInfo::Allocate, Could not allocate"),KErrNotFound));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   104
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   105
    TInt driveNum = aMount.Drive().DriveNumber();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   106
    __ASSERT_ALWAYS((driveNum >= EDriveA && driveNum <= EDriveZ), User::Panic(_L("CFsNotificationInfo::Allocate - Invalid Drive Num"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   107
    TInt err = info->Init(aFunction,driveNum);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   108
    if(err != KErrNone)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   109
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   110
        Free(info);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   111
        return NULL;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   112
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   113
    return info;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   114
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   115
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   116
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   117
CFsNotificationInfo* CFsNotificationInfo::Allocate(CFsMessageRequest& aRequest)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   118
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   119
    //Get a notification Info block from the pool.
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   120
    CFsNotificationInfo* notificationInfo = NotificationInfoPool->Allocate();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   121
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   122
    //Set the function and call Init.
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   123
    TInt function = aRequest.Operation()->Function();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   124
    notificationInfo->iBody->iFunction = function;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   125
    TInt err = notificationInfo->Init(function,aRequest.DriveNumber());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   126
    if(err != KErrNone)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   127
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   128
        CFsNotificationInfo::Free(notificationInfo);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   129
        return NULL;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   130
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   131
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   132
    //Set request
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   133
    notificationInfo->SetRequest(&aRequest);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   134
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   135
	//Set UID
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   136
    notificationInfo->SetUid(aRequest.Uid()); 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   137
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   138
    //Set notification type
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   139
#ifdef SYMBIAN_F32_ENHANCED_CHANGE_NOTIFICATION
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   140
    CFsNotificationInfo::SetData(&aRequest,notificationInfo);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   141
#endif    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   142
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   143
    CFsClientMessageRequest& msgRequest = (CFsClientMessageRequest&)aRequest;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   144
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   145
    //Get and store Src
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   146
    CFsNotificationInfo::PathName(msgRequest,notificationInfo->Source());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   147
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   148
	//Get and store NewName/Dest
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   149
    switch(function)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   150
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   151
        case EFsFileRename:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   152
        case EFsRename:    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   153
        case EFsReplace:   
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   154
        case EFsSetDriveName:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   155
        case EFsSetVolume:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   156
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   157
            CFsNotificationInfo::NewPathName((CFsClientMessageRequest&)aRequest,notificationInfo->NewName());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   158
            notificationInfo->iBody->iDestDriveStored = ETrue;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   159
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   160
        default:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   161
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   162
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   163
    return notificationInfo;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   164
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   165
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   166
CFsNotificationInfo* CFsNotificationInfo::Allocate(TInt aFunction, TInt aDrive)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   167
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   168
    //Get a notification Info block from the pool.
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   169
    CFsNotificationInfo* notificationInfo = NotificationInfoPool->Allocate();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   170
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   171
    //Set the function and call Init.
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   172
    notificationInfo->iBody->iFunction = aFunction;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   173
    TInt err = notificationInfo->Init(aFunction,aDrive);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   174
    if(err != KErrNone)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   175
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   176
        CFsNotificationInfo::Free(notificationInfo);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   177
        return NULL;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   178
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   179
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   180
    //Set request (NULL)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   181
    notificationInfo->SetRequest(NULL);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   182
	
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   183
	//Set UID (KNullUid)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   184
    notificationInfo->SetUid(TUid::Null());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   185
    return notificationInfo;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   186
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   187
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   188
EXPORT_C void CFsNotificationInfo::Free(CFsNotificationInfo*& aNotificationInfo)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   189
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   190
    __ASSERT_DEBUG(aNotificationInfo,User::Panic(_L("CFsNotificationInfo::Free - KErrArgument"), KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   191
    NotificationInfoPool->Free(aNotificationInfo);    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   192
    aNotificationInfo = NULL;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   193
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   194
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   195
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   196
TInt CFsNotificationInfo::Initialise()
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   197
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   198
    //Have to trap as sf_main.cpp commonInitialize doesn't.
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   199
    TRAPD(r, NotificationInfoPool = CFsPool<CFsNotificationInfo>::New(KMaxDrives,CFsNotificationInfo::New));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   200
    if(r != KErrNone)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   201
        return r;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   202
    if(!NotificationInfoPool)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   203
        return KErrNoMemory;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   204
    return KErrNone;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   205
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   206
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   207
CFsNotificationInfo* CFsNotificationInfo::New()
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   208
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   209
    CFsNotificationInfo* info = new CFsNotificationInfo;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   210
    __ASSERT_ALWAYS(info,Fault(ENotifyPoolCreation));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   211
    info->iBody = new CFsNotificationInfoBody();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   212
    __ASSERT_ALWAYS(info->iBody,Fault(ENotifyPoolCreation));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   213
    return info;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   214
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   215
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   216
EXPORT_C TInt CFsNotificationInfo::SetSourceName(const TDesC& aSrc)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   217
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   218
    //Add the aSrc to a TParsePtrC (no copying the filename)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   219
    TParsePtrC sourceParsePtr(aSrc);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   220
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   221
    if(sourceParsePtr.DrivePresent() || !sourceParsePtr.FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   222
        return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   223
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   224
    switch(iBody->iFunction)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   225
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   226
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   227
        case EFsFileWrite:          //EParseSrc | EFileShare
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   228
        case EFsFileSetSize:        //EParseSrc | EFileShare
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   229
        case EFsFileSetAtt:         //EParseDst | EParseSrc, - should not use these; has share.
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   230
        case EFsFileSet:            //EParseSrc | EFileShare
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   231
        case EFsFileSetModified:    //EParseSrc | EFileShare - new
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   232
        case EFsFileWriteDirty:     //EFileShare
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   233
        case EFsFileCreate:         //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   234
        case EFsFileTemp:           //EParseSrc - new
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   235
        case EFsFileRename:         //EParseDst | EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   236
        case EFsFileReplace:        //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   237
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   238
            //Should look like this:  \[path\]filename
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   239
            if(!sourceParsePtr.Name().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   240
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   241
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   242
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   243
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   244
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   245
        case EFsDelete:             //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   246
        case EFsSetEntry:           //EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   247
        case EFsRename:             //EParseDst | EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   248
        case EFsReplace:            //EParseDst | EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   249
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   250
            if(!sourceParsePtr.PathPresent() && !sourceParsePtr.NamePresent())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   251
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   252
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   253
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   254
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   255
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   256
        case EFsRmDir:              //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   257
        case EFsMkDir:              //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   258
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   259
            if(!sourceParsePtr.PathPresent())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   260
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   261
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   262
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   263
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   264
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   265
      /*case EFsFormatNext:         //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   266
        case EFsDismountFileSystem: //0
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   267
        case EFsMountFileSystem:    //0
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   268
        case EFsSetVolume:          //0
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   269
        case EFsSetDriveName:       //ESync
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   270
        case EFsRawDiskWrite:       //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   271
        case EFsMountFileSystemScan: */
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   272
        default:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   273
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   274
            __ASSERT_DEBUG(EFalse,User::Panic(_L("CFsNotificationInfo::SetSourceName Invalid Operation"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   275
            return KErrNotSupported;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   276
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   277
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   278
    memcpy(&iBody->iSrc,&sourceParsePtr,sizeof(TParsePtrC));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   279
    return KErrNone;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   280
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   281
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   282
EXPORT_C TInt CFsNotificationInfo::SetNewName(const TDesC& aDest)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   283
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   284
    //Add the aSrc to a TParsePtr for some validation without copying the filename
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   285
    TParsePtrC destParsePtr(aDest);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   286
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   287
    if(destParsePtr.DrivePresent() || !destParsePtr.FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   288
        return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   289
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   290
    switch(iBody->iFunction)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   291
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   292
        case EFsFileRename:         //EParseDst | EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   293
        case EFsRename:             //EParseDst | EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   294
        case EFsReplace:            //EParseDst | EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   295
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   296
            if(!destParsePtr.PathPresent() && !destParsePtr.NamePresent())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   297
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   298
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   299
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   300
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   301
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   302
        case EFsSetDriveName:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   303
        case EFsSetVolume:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   304
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   305
            if(!destParsePtr.NamePresent())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   306
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   307
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   308
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   309
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   310
            }            
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   311
        default:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   312
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   313
            __ASSERT_DEBUG(ETrue,User::Panic(_L("CFsNotificationInfo::SetNewName Invalid Operation"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   314
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   315
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   316
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   317
    memcpy(&iBody->iDest,&destParsePtr,sizeof(TParsePtrC));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   318
    return KErrNone;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   319
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   320
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   321
EXPORT_C TInt CFsNotificationInfo::SetFilesize(TInt64 aFilesize)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   322
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   323
    if(aFilesize<0)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   324
        return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   325
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   326
    iBody->iData = aFilesize;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   327
    return KErrNone;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   328
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   329
EXPORT_C TInt CFsNotificationInfo::SetAttributes(TUint aSet,TUint aCleared)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   330
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   331
    iBody->iData = MAKE_TUINT64(aSet,aCleared);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   332
    return KErrNone;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   333
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   334
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   335
EXPORT_C TInt CFsNotificationInfo::SetUid(const TUid& aUid)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   336
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   337
    iBody->iUid = aUid;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   338
    return KErrNone;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   339
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   340
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   341
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   342
TInt CFsNotificationInfo::SetDriveNumber(TInt aDriveNumber) 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   343
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   344
    if(aDriveNumber >= EDriveA && aDriveNumber <= EDriveZ)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   345
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   346
        iBody->iDriveNumber = aDriveNumber;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   347
        return KErrNone;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   348
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   349
    return KErrArgument;    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   350
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   351
void CFsNotificationInfo::SetRequest(CFsRequest* aRequest)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   352
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   353
    iBody->iRequest = aRequest;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   354
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   355
TInt CFsNotificationInfo::Function() 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   356
    { return iBody->iFunction; }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   357
TInt CFsNotificationInfo::DriveNumber() 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   358
    { return iBody->iDriveNumber; }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   359
TParsePtrC& CFsNotificationInfo::Source() 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   360
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   361
    switch(iBody->iFunction)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   362
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   363
        case EFsFormatNext:         //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   364
        case EFsDismountFileSystem: //0
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   365
        case EFsMountFileSystem:    //0
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   366
        case EFsSetVolume:          //0
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   367
        case EFsSetDriveName:       //ESync
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   368
        case EFsRawDiskWrite:       //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   369
        case EFsMountFileSystemScan:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   370
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   371
            _LIT(KFormatDrive,"?:");
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   372
            iBody->iSrcBuf = KFormatDrive;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   373
            iBody->iSrcBuf[0] = TText(DriveNumber() + 'A');
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   374
            TParsePtrC parse(iBody->iSrcBuf);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   375
            memcpy(&iBody->iSrc,&parse,sizeof(TParsePtrC));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   376
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   377
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   378
    return iBody->iSrc;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   379
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   380
TParsePtrC& CFsNotificationInfo::NewName() 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   381
    { return iBody->iDest; }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   382
CFsRequest* CFsNotificationInfo::Request() 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   383
    { return iBody->iRequest; }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   384
TInt64* CFsNotificationInfo::Data() 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   385
    { return &iBody->iData; }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   386
TUid& CFsNotificationInfo::Uid()
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   387
    { return iBody->iUid; }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   388
TNotificationType& CFsNotificationInfo::NotificationType()
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   389
    { return iBody->iNotificationType; }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   390
TBool CFsNotificationInfo::DestDriveIsSet()
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   391
    { return iBody->iDestDriveStored; }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   392
TInt CFsNotificationInfo::SourceSize()
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   393
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   394
    TInt size = Source().FullName().Size();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   395
    if(NotificationType()!=TFsNotification::EMediaChange    &&
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   396
       NotificationType()!=TFsNotification::EDriveName      && 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   397
       NotificationType()!=TFsNotification::EVolumeName)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   398
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   399
        size += sizeof(TText)*2;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   400
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   401
    return size;    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   402
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   403
TInt CFsNotificationInfo::NewNameSize()
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   404
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   405
    TInt size = NewName().FullName().Size();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   406
    if(!DestDriveIsSet())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   407
        size += sizeof(TText)*2;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   408
    return size;  
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   409
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   410
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   411
//Get the path of the file, folder or drive name based on the TFsMessage function
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   412
void CFsNotificationInfo::PathName(CFsClientMessageRequest& aRequest, TParsePtrC& aPath)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   413
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   414
    __PRINT(_L("CFsNotificationInfo::PathName"));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   415
    //Get the notification type
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   416
    TInt function = aRequest.Operation()->Function();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   417
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   418
    //Get the filename(s)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   419
    switch(function)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   420
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   421
        case EFsFileWrite:          //EParseSrc | EFileShare
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   422
        case EFsFileSetSize:        //EParseSrc | EFileShare
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   423
        case EFsFileSetAtt:         //EParseDst | EParseSrc, - should not use these; has share.
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   424
        case EFsFileSet:            //EParseSrc | EFileShare
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   425
        case EFsFileSetModified:    //EParseSrc | EFileShare - new
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   426
        case EFsFileWriteDirty:     //EFileShare
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   427
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   428
            CFileShare* share = NULL;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   429
            CFileCB* file = NULL;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   430
            GetFileFromScratch(&aRequest,share,file);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   431
            TParsePtrC ptrC(file->iFileName->Des());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   432
            memcpy(&aPath,&ptrC,sizeof(TParsePtrC));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   433
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   434
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   435
        case EFsFileCreate:         //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   436
        case EFsFileTemp:           //EParseSrc - new
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   437
        case EFsDelete:             //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   438
        case EFsSetEntry:           //EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   439
        case EFsFileRename:         //EParseDst | EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   440
        case EFsRename:             //EParseDst | EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   441
        case EFsReplace:            //EParseDst | EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   442
        case EFsFileReplace:        //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   443
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   444
            TParsePtrC parsePtrC(aRequest.Src().FullName().Mid(2)); //Don't want drive letter
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   445
            memcpy(&aPath,&parsePtrC,sizeof(TParsePtrC));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   446
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   447
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   448
        case EFsRmDir:              //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   449
        case EFsMkDir:              //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   450
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   451
            TParsePtrC parsePtrC(aRequest.Src().Path());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   452
            memcpy(&aPath,&parsePtrC,sizeof(TParsePtrC));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   453
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   454
            
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   455
            //aPath.Set(aRequest.Src().DriveAndPath(),NULL,NULL);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   456
            //break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   457
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   458
        case EFsFormatNext:         //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   459
        case EFsDismountFileSystem: //0
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   460
        case EFsMountFileSystem:    //0
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   461
        case EFsSetVolume:          //0
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   462
        case EFsSetDriveName:       //ESync
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   463
        case EFsRawDiskWrite:       //EParseSrc
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   464
        case EFsLockDrive:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   465
        case EFsUnlockDrive:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   466
        case EFsReserveDriveSpace:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   467
        case EFsMountFileSystemScan:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   468
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   469
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   470
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   471
        default:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   472
            ASSERT(0);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   473
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   474
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   475
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   476
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   477
//Get the new path of the file, folder or drive name based on the TFsMessage function
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   478
void CFsNotificationInfo::NewPathName(CFsClientMessageRequest& aRequest, TParsePtrC& aNewPath)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   479
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   480
    __PRINT(_L("CFsNotificationInfo::NewPathName"));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   481
    //Get the notification type
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   482
    TInt function = aRequest.Operation()->Function();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   483
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   484
    //Get the filename(s)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   485
    switch(function)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   486
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   487
        case EFsFileRename:         //EParseDst | EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   488
        case EFsRename:             //EParseDst | EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   489
        case EFsReplace:            //EParseDst | EParseSrc,
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   490
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   491
            //We must provide the drive letter too as in the case
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   492
            //of the file being monitored being renamed to a 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   493
            //different drive.
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   494
            //In that case we need to provide the new drive letter to the client.
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   495
            TParsePtrC ptrC(aRequest.Dest().FullName());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   496
            memcpy(&aNewPath,&ptrC,sizeof(TParsePtrC));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   497
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   498
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   499
        case EFsSetVolume:          //EParseDst
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   500
        case EFsSetDriveName:       //ESync | EParseDst
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   501
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   502
            TParsePtrC ptrC(aRequest.Dest().FullName());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   503
            memcpy(&aNewPath,&ptrC,sizeof(TParsePtrC));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   504
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   505
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   506
        default:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   507
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   508
            ASSERT(0);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   509
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   510
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   511
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   512
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   513
//Get the size of the notification based on its type
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   514
TInt CFsNotificationInfo::NotificationSize(CFsNotificationInfo& aRequest)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   515
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   516
    __PRINT(_L("CFsNotificationInfo::NotificationSize"));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   517
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   518
    /*
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   519
     * If there are no new names, the order of the data in the buffer is:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   520
     * Word1   : NotificationSize (2 bytes) , PathSize (2 bytes)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   521
     * Word2   : NotificationType (Lower 2 bytes)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   522
     * Word3   : UID
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   523
     * Word(s) : Path (TText8) , [Any sub-class members]
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   524
     * 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   525
     * Else for notification types ERename, EVolumeName and EDriveName the order is:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   526
     * Word1   : NotificationSize (2 bytes) , PathSize (2 bytes)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   527
     * Word2   : NewNameSize (2 bytes) , NotificationType (2 bytes)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   528
     * Word3   : UID
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   529
     * Word(s) : Path (TText8) , NewName (TText8)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   530
     * 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   531
     * EOverflow size: KNotificationHeaderSize
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   532
     */ 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   533
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   534
    //Size of the filename +(with '<drive>:')
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   535
    TInt size = KNotificationHeaderSize + Align4(aRequest.SourceSize());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   536
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   537
    switch(aRequest.NotificationType())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   538
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   539
        //NewName
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   540
        case TFsNotification::ERename:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   541
        case TFsNotification::EVolumeName:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   542
        case TFsNotification::EDriveName:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   543
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   544
            if(!aRequest.NewName().FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   545
                __ASSERT_ALWAYS(false,User::Panic(_L("CFsNotificationInfo::NotificationSize"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   546
            
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   547
            size += Align4(aRequest.NewNameSize());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   548
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   549
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   550
        case TFsNotification::EFileChange:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   551
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   552
            size += sizeof(TInt64);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   553
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   554
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   555
        case TFsNotification::EAttribute:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   556
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   557
            size += sizeof(TUint64);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   558
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   559
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   560
        case TFsNotification::ECreate: 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   561
        case TFsNotification::EDelete:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   562
        case TFsNotification::EMediaChange:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   563
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   564
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   565
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   566
        default:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   567
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   568
            ASSERT(0);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   569
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   570
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   571
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   572
    return (TUint16) size;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   573
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   574
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   575
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   576
TNotificationType CFsNotificationInfo::NotificationType(TInt& aIndex)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   577
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   578
    __PRINT(_L("CFsNotificationInfo::NotificationType(TInt)"));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   579
    __ASSERT_DEBUG(aIndex < KNumRegisterableFilters, Fault(ENotificationFault));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   580
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   581
    switch(aIndex) //No break statements here on purpose
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   582
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   583
        case 7 : return TFsNotification::EMediaChange;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   584
        case 6 : return TFsNotification::EDriveName;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   585
        case 5 : return TFsNotification::EVolumeName;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   586
        case 4 : return TFsNotification::EDelete;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   587
        case 3 : return TFsNotification::EAttribute;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   588
        case 2 : return TFsNotification::ECreate;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   589
        case 1 : return TFsNotification::ERename;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   590
        case 0 : return TFsNotification::EFileChange;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   591
        default: ASSERT(0); return (TFsNotification::TFsNotificationType) 0;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   592
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   593
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   594
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   595
//Get the array index of the notification based on its type
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   596
TInt CFsNotificationInfo::TypeToIndex(TNotificationType aType)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   597
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   598
    __PRINT(_L("CFsNotificationInfo::ArrayIndex"));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   599
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   600
    TInt index = 0; 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   601
    switch(aType) //No break statements here on purpose
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   602
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   603
        case TFsNotification::EMediaChange: index++;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   604
        case TFsNotification::EDriveName:   index++;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   605
        case TFsNotification::EVolumeName:  index++;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   606
        case TFsNotification::EDelete:      index++;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   607
        case TFsNotification::EAttribute:   index++;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   608
        case TFsNotification::ECreate:      index++;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   609
        case TFsNotification::ERename:      index++;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   610
        case TFsNotification::EFileChange:  // skip;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   611
        default: break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   612
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   613
    __ASSERT_DEBUG(index < KNumRegisterableFilters, Fault(ENotificationFault));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   614
    return index;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   615
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   616
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   617
TInt CFsNotificationInfo::DriveNumber(const TPtrC& aPath)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   618
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   619
    if(aPath.Length() >= 1)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   620
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   621
        TInt drive;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   622
        TInt r = RFs::CharToDrive(aPath[0],drive);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   623
        if(r!=KErrNone)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   624
            return KErrNotFound;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   625
        return drive;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   626
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   627
    return KErrNotFound;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   628
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   629
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   630
//Get the attributes set and cleared
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   631
void CFsNotificationInfo::Attributes(CFsMessageRequest& aRequest, TUint& aSet, TUint& aClear)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   632
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   633
    __PRINT(_L("CFsNotificationInfo::Attributes"));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   634
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   635
    TInt function = aRequest.Operation()->Function();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   636
    const RMessage2& msg = aRequest.Message();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   637
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   638
    //Client notification
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   639
    switch(function)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   640
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   641
        case EFsFileSet:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   642
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   643
            aSet = msg.Int1();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   644
            aClear = msg.Int2();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   645
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   646
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   647
        case EFsFileSetAtt:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   648
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   649
            aSet = msg.Int0();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   650
            aClear = msg.Int1();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   651
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   652
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   653
        case EFsSetEntry:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   654
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   655
            aSet = msg.Int2();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   656
            aClear = msg.Int3();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   657
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   658
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   659
        default:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   660
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   661
            ASSERT(0);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   662
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   663
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   664
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   665
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   666
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   667
TInt64 CFsNotificationInfo::FileSize(CFsMessageRequest& aRequest)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   668
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   669
    CFileShare* share = NULL;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   670
    CFileCB* file = NULL;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   671
    GetFileFromScratch(&aRequest, share, file);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   672
    TInt64 size = file->CachedSize64();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   673
    return size;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   674
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   675
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   676
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   677
void CFsNotificationInfo::SetData(CFsMessageRequest* aRequest, CFsNotificationInfo* aNotificationInfo)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   678
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   679
    TInt function = aRequest->Operation()->Function();
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   680
    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   681
    switch(function)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   682
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   683
        case EFsFileWrite:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   684
        case EFsFileWriteDirty:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   685
        case EFsFileSetSize:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   686
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   687
            aNotificationInfo->SetFilesize(FileSize(*aRequest));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   688
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   689
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   690
        case EFsSetEntry:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   691
        case EFsFileSetAtt:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   692
        case EFsFileSet:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   693
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   694
            TUint set = 0;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   695
            TUint clear = 0;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   696
            Attributes(*aRequest,set,clear);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   697
            *(aNotificationInfo->Data())= MAKE_TUINT64(set,clear);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   698
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   699
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   700
        default:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   701
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   702
            return;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   703
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   704
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   705
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   706
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   707
TInt CFsNotificationInfo::ValidateNotification(CFsNotificationInfo& aNotificationInfo)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   708
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   709
    //Validate UID
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   710
    if(aNotificationInfo.Uid() == TUid::Null())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   711
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   712
        __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - Uid not set"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   713
        return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   714
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   715
   
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   716
    switch(aNotificationInfo.Function())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   717
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   718
        case EFsFileWrite:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   719
        case EFsFileWriteDirty:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   720
        case EFsFileSetSize:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   721
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   722
            if(*aNotificationInfo.Data() == -1)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   723
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   724
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - File size not set"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   725
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   726
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   727
            if(!aNotificationInfo.Source().FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   728
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   729
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - Source Name not set"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   730
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   731
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   732
            if(aNotificationInfo.NewName().FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   733
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   734
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - New Name set in err"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   735
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   736
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   737
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   738
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   739
        case EFsRename:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   740
        case EFsFileRename:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   741
        case EFsReplace:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   742
        case EFsSetVolume:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   743
        case EFsSetDriveName:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   744
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   745
            if(!aNotificationInfo.Source().FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   746
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   747
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - Source Name not set"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   748
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   749
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   750
            if(!aNotificationInfo.NewName().FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   751
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   752
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - New Name not set"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   753
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   754
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   755
            if(*aNotificationInfo.Data() != -1)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   756
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   757
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - Data set in err"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   758
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   759
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   760
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   761
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   762
        case EFsMkDir:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   763
        case EFsFileCreate:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   764
        case EFsFileReplace:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   765
        case EFsDelete:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   766
        case EFsRmDir:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   767
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   768
            if(!aNotificationInfo.Source().FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   769
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   770
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - Source Name not set"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   771
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   772
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   773
            if(aNotificationInfo.NewName().FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   774
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   775
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - New Name set in err"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   776
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   777
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   778
            if(*aNotificationInfo.Data() != -1)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   779
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   780
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - Data set in err"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   781
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   782
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   783
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   784
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   785
        case EFsFileSetAtt:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   786
        case EFsFileSet:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   787
        case EFsSetEntry:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   788
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   789
            if(!aNotificationInfo.Source().FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   790
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   791
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - Source Name not set"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   792
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   793
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   794
            if(*aNotificationInfo.Data() == -1)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   795
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   796
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - Attributes not set"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   797
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   798
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   799
            if(aNotificationInfo.NewName().FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   800
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   801
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - New Name set in err"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   802
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   803
                }               
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   804
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   805
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   806
        case EFsDismountFileSystem:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   807
        case EFsMountFileSystem:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   808
        case EFsFormatNext:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   809
        case EFsRawDiskWrite:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   810
        case EFsMountFileSystemScan:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   811
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   812
            if(aNotificationInfo.NewName().FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   813
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   814
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - New Name set in err"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   815
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   816
                }               
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   817
            if(aNotificationInfo.Source().FullName().Length())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   818
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   819
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - Source Name set in err"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   820
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   821
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   822
            if(*aNotificationInfo.Data() != -1)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   823
                {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   824
                __ASSERT_DEBUG(false,User::Panic(_L("::ValidateNotification - Data set in err"),KErrArgument));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   825
                return KErrArgument;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   826
                }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   827
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   828
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   829
        default:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   830
            {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   831
            break;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   832
            }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   833
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   834
    return KErrNone;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   835
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   836
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   837
TUint CFsNotificationInfo::NotifyType(TInt aFunction)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   838
//
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   839
//  Convert aFunction that caused the notification to a 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   840
//  value corresponding to the correct TNotifyType enum  
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   841
//
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   842
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   843
    switch (aFunction)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   844
        {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   845
        case EFsFileCreate:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   846
        case EFsFileReplace:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   847
        case EFsDelete:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   848
        case EFsReplace:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   849
        case EFsFileRename:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   850
            return(ENotifyFile|ENotifyEntry);   
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   851
        case EFsMkDir:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   852
        case EFsRmDir:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   853
            return(ENotifyDir|ENotifyEntry);    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   854
        case EFsRename:                 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   855
            return(ENotifyDir|ENotifyFile|ENotifyEntry);                    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   856
        case EFsSetVolume:                  
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   857
            return(ENotifyDisk|ENotifyEntry);   
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   858
        case EFsFileSet:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   859
        case EFsFileSetAtt:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   860
        case EFsFileSetModified:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   861
        case EFsFileSetSize:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   862
        case EFsSetEntry:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   863
            return(ENotifyAttributes);  
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   864
        case EFsFileWrite:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   865
        case EFsFileWriteDirty:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   866
            return(ENotifyWrite);   
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   867
        case EFsRawDiskWrite:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   868
        case EFsLockDrive:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   869
        case EFsUnlockDrive:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   870
            return(ENotifyDisk);    
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   871
        case EFsFileTemp:       
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   872
        case EFsSetDriveName:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   873
            return(ENotifyAll); 
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   874
        default:
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   875
            return(0);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   876
        }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   877
    }
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   878
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   879
void CNotifyInfo::Initialise(TInfoType aType,TRequestStatus* aStatus,const RMessagePtr2& aMessage,CSessionFs* aSession)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   880
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   881
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   882
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   883
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   884
	iType=aType;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   885
	iStatus=aStatus;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   886
	iMessage=aMessage;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   887
	iSession=aSession;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   888
	};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   889
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   890
CNotifyInfo::~CNotifyInfo()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   891
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   892
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   893
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   894
	{
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
   895
	// message should have been completed already
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
   896
	__ASSERT_DEBUG(iMessage.IsNull(), Fault(ENotifyInfoDestructor));
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
   897
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
   898
	__ASSERT_DEBUG(iLink.iNext,Fault(ENotifyInfoDestructor));	
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
   899
	iLink.Deque();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   900
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   901
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   902
void CNotifyInfo::Complete(TInt aError)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   903
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   904
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   905
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   906
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   907
	__PRINT2(_L("CNotifyInfo::Complete 0x%x error=%d"),this,aError);
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
   908
	if (!iMessage.IsNull())						
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   909
		iMessage.Complete(aError);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   910
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   911
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   912
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   913
void CStdChangeInfo::Initialise(TNotifyType aChangeType,TRequestStatus* aStatus,const RMessagePtr2& aMessage,CSessionFs* aSession)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   914
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   915
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   916
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   917
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   918
	iChangeType=aChangeType;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   919
	CNotifyInfo::Initialise(EStdChange,aStatus,aMessage,aSession);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   920
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   921
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   922
TUint CStdChangeInfo::RequestNotifyType(CFsNotificationInfo* aRequest)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   923
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   924
// return notification type for the request
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   925
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   926
	{
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   927
    TUint notifyType=CFsNotificationInfo::NotifyType(aRequest->Function());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   928
    if(aRequest->Function()==EFsRename)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   929
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   930
		__ASSERT_DEBUG(notifyType==(ENotifyDir|ENotifyFile|ENotifyEntry),Fault(EStdChangeRequestType));
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   931
        if(aRequest->Source().NamePresent())
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   932
			notifyType=ENotifyFile|ENotifyEntry;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   933
		else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   934
			notifyType=ENotifyDir|ENotifyEntry;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   935
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   936
	return(notifyType);						
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   937
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   938
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   939
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   940
TBool CStdChangeInfo::IsMatching(CFsNotificationInfo* aNotificationInfo)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   941
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   942
// return ETrue if operation type of request matches that of change notification
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   943
//
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   944
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   945
    if((iChangeType&ENotifyAll) || (iChangeType&CFsNotificationInfo::NotifyType(aNotificationInfo->Function())))
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   946
		return(ETrue);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   947
	else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   948
		return(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   949
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   950
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   951
void CExtChangeInfo::Initialise(TNotifyType aChangeType,TRequestStatus* aStatus,const RMessagePtr2& aMessage,CSessionFs* aSession,const TDesC& aName)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   952
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   953
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   954
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   955
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   956
	__ASSERT_DEBUG(aName.Length()<=KMaxFileName-2,Fault(EExtChangeNameLength));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   957
	iName=aName;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   958
	iChangeType=aChangeType;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   959
	CNotifyInfo::Initialise(EExtChange,aStatus,aMessage,aSession);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   960
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   961
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   962
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   963
TBool CExtChangeInfo::IsMatching(CFsNotificationInfo* aRequest)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   964
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   965
// return ETrue if operation notify type of request matches that of change notification
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   966
// and paths match
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   967
//
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   968
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   969
    TInt function=aRequest->Function();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   970
	//	if a rename occurred inform any requests if their path has been changed regardless of the notification type
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   971
	if(function==EFsRename)				
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   972
		{		
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   973
        TBuf<KMaxFileName> renamePath=aRequest->Source().FullName();        
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   974
		renamePath+=_L("*");
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   975
		if (iName.MatchF(renamePath)!=KErrNotFound)	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   976
			return(ETrue);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   977
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   978
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   979
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   980
	//Special case where the dir the notifier is setup on has just been created
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   981
	if(function==EFsMkDir)	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   982
		{		
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   983
        if(aRequest->Source().Path().MatchF(iName) == 0)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   984
			return ETrue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   985
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   986
	
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   987
	//Special case where  the File the notifier is setup on has just been created by temp as the name is not known until it has been created
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   988
	if(function==EFsRename||function==EFsFileOpen||function==EFsFileCreate||function==EFsFileReplace)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   989
		{
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
   990
        if(aRequest->Source().FullName().MatchF(iName) == 0)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   991
			return ETrue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   992
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   993
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   994
	//For the case of a file created using EFsFileTemp we can probably ignore it for special cases as it 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   995
	//is created with a random name. Not specifically going to be being looked for
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   996
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   997
	if((iChangeType&ENotifyAll) || (iChangeType&RequestNotifyType(aRequest)))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   998
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   999
		switch (function)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1000
			{	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1001
		//	Notify interested requests if a SetDriveName(), SetVolume() or RawDiskWrite() operation
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1002
		//	occcurred.  By their nature, these operations have no distinct path.  All outstanding
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1003
		//	requests monitoring the relevant TNotifyType are potentially interested in such operations	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1004
			case EFsFileWrite:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1005
			case EFsFileWriteDirty:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1006
			case EFsFileSet:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1007
			case EFsFileSetAtt:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1008
			case EFsFileSetModified:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1009
			case EFsFileSetSize:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1010
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1011
			TBuf<KMaxFileName> root=iName;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1012
			root+=_L("*");	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1013
			
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1014
                if (aRequest->Source().FullName().MatchF(root) != KErrNotFound)
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1015
                    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1016
                    return(ETrue);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1017
                    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1018
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1019
			break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1020
			case EFsSetDriveName:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1021
			case EFsSetVolume:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1022
			case EFsRawDiskWrite:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1023
			case EFsLockDrive:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1024
			case EFsUnlockDrive:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1025
			case EFsReserveDriveSpace:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1026
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1027
				return(ETrue);				
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1028
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1029
			
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1030
			default:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1031
				{	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1032
				TBuf<KMaxFileName> root = iName;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1033
				root+=_L("*");	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1034
				
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1035
                if(aRequest->Source().FullName().MatchF(root)!=KErrNotFound)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1036
					return(ETrue);	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1037
				else if(function==EFsRename||function==EFsReplace||function==EFsFileRename)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1038
					{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1039
					// - rename/replace causes the file/path to disappear
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1040
				    TPtrC newName;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1041
				    if(aRequest->DestDriveIsSet())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1042
				        newName.Set(aRequest->NewName().FullName().Mid(2));
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1043
				    else
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1044
				        newName.Set(aRequest->NewName().FullName());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1045
                    if(newName.MatchF(root)!=KErrNotFound)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1046
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1047
						return(ETrue);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1048
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1049
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1050
					// - rename/replace causes the file/path to arrive
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1051
                    if(aRequest->DestDriveIsSet())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1052
                        root=aRequest->NewName().FullName().Mid(2);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1053
                    else
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1054
                        root=aRequest->NewName().FullName();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1055
					root+=_L("*");
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1056
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1057
					if (iName.MatchF(root)!=KErrNotFound)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1058
						{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1059
						return(ETrue);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1060
						}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1061
					}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1062
				}			
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1063
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1064
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1065
	return(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1066
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1067
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1068
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1069
void CDiskSpaceInfo::Initialise(TRequestStatus* aStatus,const RMessagePtr2& aMessage,CSessionFs* aSession,TInt64 aThreshold)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1070
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1071
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1072
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1073
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1074
	__ASSERT_DEBUG(aThreshold>0,Fault(EDiskSpaceThreshold));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1075
	iThreshold=aThreshold;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1076
	CNotifyInfo::Initialise(EDiskSpace,aStatus,aMessage,aSession);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1077
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1078
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1079
TBool CDiskSpaceInfo::IsMatching(TInt64& aBefore,TInt64& aAfter)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1080
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1081
// return ETrue if the threshold has been crossed
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1082
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1083
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1084
	if((aBefore>=iThreshold&&aAfter<iThreshold)||(aBefore<=iThreshold&&aAfter>iThreshold))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1085
		return(ETrue);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1086
	return(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1087
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1088
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1089
void CDebugChangeInfo::Initialise(TUint aDebugType,TRequestStatus* aStatus,const RMessagePtr2& aMessage,CSessionFs* aSession)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1090
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1091
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1092
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1093
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1094
	__ASSERT_DEBUG((aDebugType&KDebugNotifyMask)&&!(aDebugType&~KDebugNotifyMask),Fault(EDebugChangeType));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1095
	iDebugType=aDebugType;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1096
	CNotifyInfo::Initialise(EDebugChange,aStatus,aMessage,aSession);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1097
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1098
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1099
TBool CDebugChangeInfo::IsMatching(TUint aFunction)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1100
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1101
// return ETrue if debug notification type matches aFunction
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1102
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1103
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1104
	if(iDebugType&aFunction)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1105
		return(ETrue);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1106
	return(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1107
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1108
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1109
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1110
CDismountNotifyInfo::~CDismountNotifyInfo()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1111
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1112
	switch(iMode)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1113
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1114
		case EFsDismountNotifyClients:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1115
			break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1116
		case EFsDismountRegisterClient:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1117
			__ASSERT_ALWAYS(TheDrives[iDriveNumber].DismountUnlock() >= 0, Fault(ENotifyDismountCancel));
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1118
			__ASSERT_ALWAYS(iMessage.IsNull(), Fault(ENotifyDismountCancel));
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1119
			TheDrives[iDriveNumber].DismountClientRemoved();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1120
			break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1121
		default:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1122
			break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1123
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1124
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1125
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1126
void CDismountNotifyInfo::Complete(TInt aError)
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1127
	{
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1128
	__PRINT2(_L("CDismountNotifyInfo::Complete 0x%x error=%d"),this,aError);
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1129
	if (!iMessage.IsNull())						
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1130
		{
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1131
		iMessage.Complete(aError);
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1132
		// inc count of messages completed by EFsDismountNotifyClients & waiting for an EFsAllowDismount request from client
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1133
		if (iMode == EFsDismountRegisterClient)
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1134
			TheDrives[iDriveNumber].DismountClientAdded();
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1135
		}
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1136
	}
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1137
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1138
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1139
void CDismountNotifyInfo::Initialise(TNotifyDismountMode aMode, TInt aDriveNumber, TRequestStatus* aStatus,const RMessagePtr2& aMessage,CSessionFs* aSession)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1140
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1141
	iMode = aMode;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1142
	iDriveNumber=aDriveNumber;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1143
	CNotifyInfo::Initialise(EDismount,aStatus,aMessage,aSession);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1144
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1145
	if (iMode == EFsDismountRegisterClient)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1146
		TheDrives[iDriveNumber].DismountLock();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1147
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1148
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1149
TBool CDismountNotifyInfo::IsMatching(TNotifyDismountMode aMode, TInt aDriveNumber, CSessionFs* aSession)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1150
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1151
	if((iDriveNumber == aDriveNumber) && (iMode == aMode) && (aSession == NULL || aSession == Session()))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1152
		return(ETrue);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1153
	return(EFalse);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1154
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1155
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1156
TBaseQue::TBaseQue()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1157
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1158
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1159
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1160
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1161
	iHeader.SetOffset(_FOFF(CNotifyInfo,iLink));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1162
	TInt r=iQLock.CreateLocal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1163
	__ASSERT_ALWAYS(r==KErrNone,Fault(EBaseQueConstruction));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1164
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1165
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1166
TBaseQue::~TBaseQue()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1167
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1168
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1169
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1170
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1171
	iQLock.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1172
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1173
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1174
void TBaseQue::DoAddNotify(CNotifyInfo* aInfo)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1175
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1176
// Add notification
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1177
// Que should be locked by calling function
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1178
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1179
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1180
	iHeader.AddLast(*aInfo);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1181
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1182
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1183
TBool TBaseQue::DoCancelSession(CSessionFs* aSession,TInt aCompletionCode, TRequestStatus* aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1184
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1185
// Cancel notification(s) setup by aSession matching aStatus if set
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1186
// Que should be locked by calling function
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1187
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1188
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1189
	TDblQueIter<CNotifyInfo> q(iHeader);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1190
	CNotifyInfo* info;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1191
	TBool isFound=EFalse;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1192
	while((info=q++)!=NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1193
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1194
		if(info->Session()==aSession && (!aStatus || aStatus==info->Status()))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1195
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1196
			isFound=ETrue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1197
			info->Complete(aCompletionCode);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1198
			delete(info);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1199
			if(aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1200
				break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1201
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1202
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1203
	return(isFound);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1204
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1205
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1206
void TBaseQue::DoCancelAll(TInt aCompletionCode)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1207
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1208
// Cancel all notifications
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1209
// Que should be locked by calling function
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1210
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1211
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1212
	TDblQueIter<CNotifyInfo> q(iHeader);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1213
	CNotifyInfo* info;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1214
	while((info=q++)!=NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1215
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1216
		info->Complete(aCompletionCode);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1217
		delete(info);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1218
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1219
	__ASSERT_DEBUG(iHeader.IsEmpty(),Fault(EBaseQueCancel));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1220
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1221
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1222
TBool TBaseQue::IsEmpty()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1223
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1224
// Que should be locked by calling function
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1225
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1226
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1227
	return iHeader.IsEmpty();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1228
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1229
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1230
TBool TChangeQue::IsEmpty()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1231
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1232
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1233
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1234
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1235
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1236
	TBool empty = TBaseQue::IsEmpty();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1237
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1238
	return(empty);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1239
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1240
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1241
TInt TChangeQue::AddNotify(CNotifyInfo* aInfo)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1242
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1243
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1244
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1245
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1246
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1247
	TBaseQue::DoAddNotify(aInfo);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1248
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1249
	return(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1250
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1251
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1252
TBool TChangeQue::CancelSession(CSessionFs* aSession,TInt aCompletionCode,TRequestStatus* aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1253
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1254
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1255
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1256
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1257
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1258
	TBool isFound=TBaseQue::DoCancelSession(aSession,aCompletionCode,aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1259
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1260
	return(isFound);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1261
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1262
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1263
void TChangeQue::CancelAll(TInt aCompletionCode)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1264
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1265
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1266
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1267
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1268
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1269
	TBaseQue::DoCancelAll(aCompletionCode);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1270
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1271
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1272
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1273
void TChangeQue::CheckChange(CFsNotificationInfo& aRequest)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1274
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1275
// complete any notification in que that matches aRequest
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1276
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1277
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1278
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1279
	TDblQueIter<CNotifyInfo> q(iHeader);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1280
	CNotifyInfo* info;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1281
	while((info=q++)!=NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1282
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1283
		__ASSERT_DEBUG(info->Type()==CNotifyInfo::EStdChange||info->Type()==CNotifyInfo::EExtChange,Fault(EChangeQueType));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1284
		TBool isMatching;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1285
		if(info->Type()==CNotifyInfo::EStdChange)
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1286
			isMatching=((CStdChangeInfo*)info)->IsMatching(&aRequest);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1287
		else
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1288
			isMatching=((CExtChangeInfo*)info)->IsMatching(&aRequest);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1289
		if(isMatching)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1290
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1291
			__PRINT1(_L("TChangeQue::CheckChange()-Matching info=0x%x"),info);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1292
			info->Complete(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1293
			delete(info);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1294
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1295
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1296
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1297
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1298
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1299
TBool TDiskSpaceQue::IsEmpty()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1300
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1301
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1302
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1303
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1304
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1305
	TBool empty = TBaseQue::IsEmpty();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1306
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1307
	return(empty);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1308
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1309
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1310
TInt TDiskSpaceQue::AddNotify(CNotifyInfo* aInfo)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1311
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1312
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1313
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1314
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1315
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1316
	TInt r=KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1317
	if(iHeader.IsEmpty())
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1318
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1319
		r=GetFreeDiskSpace(iFreeDiskSpace);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1320
		iReservedDiskSpace = TheDrives[iDriveNumber].ReservedSpace();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1321
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1322
	if(r==KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1323
		TBaseQue::DoAddNotify(aInfo);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1324
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1325
	return(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1326
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1327
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1328
TInt TDiskSpaceQue::CancelSession(CSessionFs* aSession,TInt aCompletionCode,TRequestStatus* aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1329
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1330
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1331
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1332
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1333
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1334
	TBaseQue::DoCancelSession(aSession,aCompletionCode,aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1335
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1336
	return(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1337
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1338
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1339
void TDiskSpaceQue::CancelAll(TInt aCompletionCode)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1340
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1341
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1342
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1343
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1344
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1345
	TBaseQue::DoCancelAll(aCompletionCode);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1346
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1347
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1348
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1349
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1350
void TDiskSpaceQue::CheckDiskSpace()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1351
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1352
// Complete any disk space notification whose threshold has been crossed
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1353
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1354
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1355
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1356
	if(iHeader.IsEmpty())
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1357
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1358
		iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1359
		return;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1360
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1361
	TInt64 freeSpace;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1362
	TInt r=GetFreeDiskSpace(freeSpace);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1363
	TInt64 reservedSpace(TheDrives[iDriveNumber].ReservedSpace());
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1364
	if(r==KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1365
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1366
		if((freeSpace==iFreeDiskSpace) && (reservedSpace==iReservedDiskSpace))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1367
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1368
			iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1369
			return;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1370
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1371
		TDblQueIter<CNotifyInfo> q(iHeader);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1372
		CNotifyInfo* info;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1373
		while((info=q++)!=NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1374
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1375
			__ASSERT_DEBUG(info->Type()==CNotifyInfo::EDiskSpace,Fault(EDiskSpaceQueType1));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1376
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1377
			TInt64 newSessionFreeSpace(freeSpace);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1378
			TInt64 oldSessionFreeSpace(iFreeDiskSpace);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1379
			if(!info->Session()->ReservedAccess(iDriveNumber))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1380
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1381
				newSessionFreeSpace -= reservedSpace;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1382
				oldSessionFreeSpace -= iReservedDiskSpace;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1383
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1384
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1385
			if(((CDiskSpaceInfo*)info)->IsMatching(oldSessionFreeSpace,newSessionFreeSpace))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1386
				{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1387
				__PRINT1(_L("TDiskSpaceQue::CheckDiskSpace()-Matching info=0x%x"),info);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1388
				info->Complete(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1389
				delete(info);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1390
				}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1391
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1392
		iFreeDiskSpace=freeSpace;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1393
		iReservedDiskSpace=reservedSpace;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1394
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1395
	else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1396
		TBaseQue::DoCancelAll(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1397
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1398
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1399
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1400
void TDiskSpaceQue::CheckDiskSpace(TInt64& aFreeDiskSpace)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1401
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1402
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1403
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1404
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1405
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1406
	if(iHeader.IsEmpty())
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1407
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1408
		iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1409
		return;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1410
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1411
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1412
	TInt64 reservedSpace(TheDrives[iDriveNumber].ReservedSpace());
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1413
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1414
	if((aFreeDiskSpace==iFreeDiskSpace) && (reservedSpace==iReservedDiskSpace))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1415
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1416
		iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1417
		return;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1418
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1419
	TDblQueIter<CNotifyInfo> q(iHeader);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1420
	CNotifyInfo* info;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1421
	while((info=q++)!=NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1422
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1423
		__ASSERT_DEBUG(info->Type()==CNotifyInfo::EDiskSpace,Fault(EDiskSpaceQueType2));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1424
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1425
		TInt64 newSessionFreeSpace(aFreeDiskSpace);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1426
		TInt64 oldSessionFreeSpace(iFreeDiskSpace);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1427
		if(!info->Session()->ReservedAccess(iDriveNumber))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1428
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1429
			newSessionFreeSpace -= reservedSpace;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1430
			oldSessionFreeSpace -= iReservedDiskSpace;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1431
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1432
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1433
		if(((CDiskSpaceInfo*)info)->IsMatching(oldSessionFreeSpace,newSessionFreeSpace))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1434
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1435
			__PRINT1(_L("TDiskSpaceQue::CheckDiskSpace()-Matching info=0x%x"),info);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1436
			info->Complete(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1437
			delete(info);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1438
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1439
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1440
	iFreeDiskSpace=aFreeDiskSpace;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1441
	iReservedDiskSpace=reservedSpace;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1442
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1443
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1444
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1445
TInt TDiskSpaceQue::GetFreeDiskSpace(TInt64& aFreeDiskSpace)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1446
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1447
// 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1448
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1449
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1450
	__ASSERT_DEBUG(iDriveNumber>=EDriveA&&iDriveNumber<=EDriveZ,Fault(EDiskSpaceQueDrive));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1451
	__CHECK_DRIVETHREAD(iDriveNumber);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1452
	TInt r=TheDrives[iDriveNumber].FreeDiskSpace(aFreeDiskSpace);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1453
	return(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1454
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1455
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1456
TInt TDebugQue::AddNotify(CNotifyInfo* aInfo)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1457
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1458
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1459
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1460
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1461
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1462
	TBaseQue::DoAddNotify(aInfo);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1463
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1464
	return(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1465
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1466
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1467
TInt TDebugQue::CancelSession(CSessionFs* aSession,TInt aCompletionCode,TRequestStatus* aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1468
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1469
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1470
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1471
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1472
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1473
	TBool isFound=TBaseQue::DoCancelSession(aSession,aCompletionCode,aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1474
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1475
	return(isFound);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1476
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1477
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1478
void TDebugQue::CancelAll(TInt aCompletionCode)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1479
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1480
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1481
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1482
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1483
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1484
	TBaseQue::DoCancelAll(aCompletionCode);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1485
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1486
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1487
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1488
void TDebugQue::CheckDebug(TUint aDebugChange)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1489
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1490
// Complete any debug notification whose debug type matches aDebugChange
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1491
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1492
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1493
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1494
	TDblQueIter<CNotifyInfo> q(iHeader);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1495
	CNotifyInfo* info;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1496
	while((info=q++)!=NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1497
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1498
		__ASSERT_DEBUG(info->Type()==CNotifyInfo::EDebugChange,Fault(EDebugQueType));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1499
		if(((CDebugChangeInfo*)info)->IsMatching(aDebugChange))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1500
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1501
			__PRINT1(_L("TDebugQue::CheckDebug()-Matching info=0x%x"),info);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1502
			info->Complete(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1503
			delete(info);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1504
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1505
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1506
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1507
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1508
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1509
TInt TDismountNotifyQue::AddNotify(CNotifyInfo* aInfo)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1510
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1511
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1512
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1513
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1514
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1515
	TBaseQue::DoAddNotify(aInfo);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1516
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1517
	return(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1518
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1519
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1520
void TDismountNotifyQue::CancelSession(CSessionFs* aSession,TInt aCompletionCode,TRequestStatus* aStatus)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1521
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1522
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1523
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1524
	iQLock.Wait();
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
  1525
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1526
	TDblQueIter<CDismountNotifyInfo> q(iHeader);
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1527
	CDismountNotifyInfo* info;
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1528
	while((info=q++)!=NULL)
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1529
		{
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1530
		if(info->Session()==aSession && (!aStatus || aStatus==info->Status()))
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1531
			{
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1532
			TInt driveNumber = info->DriveNumber();
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1533
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1534
			info->Complete(aCompletionCode);
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1535
			TInt mode = info->Mode();
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1536
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1537
			delete info;
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1538
			info = NULL;
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
  1539
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1540
			// if we're cancelling a dismount request (EFsDismountNotifyClients or EFsDismountForceDismount), 
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1541
			// then we need to cancel the deferred dismount and issue a disk change notification as observers 
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1542
			// may be expecting one...
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1543
			if (mode == EFsDismountNotifyClients || mode == EFsDismountForceDismount)
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1544
				{
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1545
				TheDrives[driveNumber].SetDismountDeferred(EFalse);
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1546
				FsNotify::DiskChange(driveNumber);
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1547
				}
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1548
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1549
			if(aStatus)
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1550
				break;
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1551
			}
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1552
		}
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
  1553
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1554
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1555
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1556
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1557
void TDismountNotifyQue::CancelAll(TInt aCompletionCode)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1558
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1559
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1560
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1561
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1562
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1563
	TBaseQue::DoCancelAll(aCompletionCode);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1564
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1565
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1566
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1567
void TDismountNotifyQue::CheckDismount(TNotifyDismountMode aMode, TInt aDrive, TBool aRemove, TInt aError)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1568
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1569
// Complete any dismount notifications on the specified drive.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1570
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1571
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1572
	iQLock.Wait();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1573
	TDblQueIter<CNotifyInfo> q(iHeader);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1574
	CNotifyInfo* info;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1575
	while((info=q++)!=NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1576
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1577
		__ASSERT_DEBUG(info->Type()==CNotifyInfo::EDismount,Fault(EBadDismountNotifyType));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1578
		if(((CDismountNotifyInfo*)info)->IsMatching(aMode, aDrive, NULL))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1579
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1580
			__PRINT1(_L("TDismountNotifyQue::CheckDismount()-Matching info=0x%x"),info);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1581
			info->Complete(aError);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1582
			if(aRemove)
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1583
				delete info;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1584
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1585
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1586
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1587
	__ASSERT_ALWAYS(!(aRemove && aMode == EFsDismountRegisterClient && TheDrives[aDrive].DismountLocked() > 0), Fault(EDismountLocked));
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1588
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1589
	iQLock.Signal();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1590
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1591
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1592
TBool TDismountNotifyQue::HandlePendingDismount(CSessionFs* aSession, TInt aDrive)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1593
//
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1594
// Determine if the session has any outstanding *completed* dismount notifications on the specified drive 
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1595
// and delete them. Called from TFsAllowDismount::DoRequestL()
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1596
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1597
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1598
	iQLock.Wait();
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1599
	TDblQueIter<CDismountNotifyInfo> q(iHeader);
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1600
	CDismountNotifyInfo* info;
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1601
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1602
	TBool entryFound = EFalse;
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1603
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1604
	while((info=q++)!=NULL)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1605
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1606
		__ASSERT_DEBUG(info->Type()==CNotifyInfo::EDismount,Fault(EBadDismountNotifyType));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1607
		if(((CDismountNotifyInfo*)info)->IsMatching(EFsDismountRegisterClient, aDrive, aSession))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1608
			{
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1609
			__PRINT1(_L("TDismountNotifyQue::HandlePendingDismount()-Pending info=0x%x"),info);
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1610
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1611
			if (info->Completed())
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1612
				delete info;
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1613
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1614
			entryFound = ETrue;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1615
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1616
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1617
	iQLock.Signal();
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1618
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1619
	return entryFound;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1620
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1621
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1622
void FsNotify::Initialise()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1623
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1624
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1625
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1626
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1627
	for(TInt i=0;i<KMaxDiskQues;++i)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1628
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1629
		iDiskSpaceQues[i].SetDriveNumber(i);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1630
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1631
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1632
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1633
TBool FsNotify::IsChangeQueEmpty(TInt aDrive)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1634
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1635
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1636
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1637
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1638
	if((iChangeQues[ChangeIndex(aDrive)].IsEmpty()) && (iChangeQues[ChangeIndex(KDriveInvalid)].IsEmpty()))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1639
		return ETrue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1640
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1641
	return EFalse;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1642
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1643
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1644
TInt FsNotify::AddChange(CNotifyInfo* aInfo,TInt aDrive)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1645
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1646
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1647
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1648
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1649
	__ASSERT_DEBUG(aInfo->Type()==CNotifyInfo::EStdChange||aInfo->Type()==CNotifyInfo::EExtChange,Fault(EBadChangeNotifyType));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1650
	__PRINT2(_L("FsNotify::AddChange() drive=%d,info=0x%x"),aDrive,aInfo);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1651
	iChangeQues[ChangeIndex(aDrive)].AddNotify(aInfo);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1652
	return(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1653
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1654
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1655
TBool FsNotify::IsDiskSpaceQueEmpty(TInt aDrive)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1656
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1657
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1658
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1659
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1660
	if(iDiskSpaceQues[aDrive].IsEmpty())
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1661
		return ETrue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1662
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1663
	return EFalse;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1664
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1665
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1666
TInt FsNotify::AddDiskSpace(CNotifyInfo* aInfo,TInt aDrive)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1667
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1668
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1669
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1670
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1671
	__ASSERT_DEBUG(aInfo->Type()==CNotifyInfo::EDiskSpace,Fault(EBadDiskNotifyType));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1672
	__ASSERT_DEBUG((aDrive>=EDriveA && aDrive<=EDriveZ),Fault(EDiskBadIndex1));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1673
	__PRINT2(_L("FsNotify::AddDiskSpace() drive=%d,info=0x%x"),aDrive,aInfo);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1674
	return(iDiskSpaceQues[aDrive].AddNotify(aInfo));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1675
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1676
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1677
TInt FsNotify::AddDebug(CNotifyInfo* aDebugInfo)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1678
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1679
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1680
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1681
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1682
	__ASSERT_DEBUG(aDebugInfo->Type()==CNotifyInfo::EDebugChange,Fault(EBadDebugNotifyType));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1683
	__PRINT1(_L("FsNotify::AddDebug() info=0x%x"),aDebugInfo);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1684
	iDebugQue.AddNotify(aDebugInfo);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1685
	return(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1686
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1687
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1688
TInt FsNotify::AddDismountNotify(CNotifyInfo* aDismountNotifyInfo)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1689
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1690
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1691
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1692
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1693
	__ASSERT_DEBUG(aDismountNotifyInfo->Type()==CNotifyInfo::EDismount,Fault(EBadDismountNotifyType));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1694
	__PRINT1(_L("FsNotify::AddDismountNotify() info=0x%x"),aDismountNotifyInfo);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1695
	iDismountNotifyQue.AddNotify(aDismountNotifyInfo);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1696
	return(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1697
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1698
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1699
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1700
void FsNotify::HandleChange(CFsNotificationInfo& aNotificationInfo)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1701
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1702
// Check whether any change notifications need to be completed due to aRequest on aDrive
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1703
//
300
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1704
    {
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1705
    __PRINT1(_L("FsNotify::HandleChange(TFsNotificationInfo) DriveNumber=%d"),aNotificationInfo.DriveNumber());
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1706
    if(aNotificationInfo.Request() && !aNotificationInfo.Request()->IsChangeNotify())
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1707
        return;
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1708
    iChangeQues[ChangeIndex(aNotificationInfo.DriveNumber())].CheckChange(aNotificationInfo);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1709
    iChangeQues[ChangeIndex(KDriveInvalid)].CheckChange(aNotificationInfo);
1d28c8722707 201043_09
hgs
parents: 286
diff changeset
  1710
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1711
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1712
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1713
void FsNotify::HandleDiskSpace(CFsRequest* aRequest,TInt aDrive)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1714
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1715
// Check whether any disk space notifications need to be completed due to aRequest on aDrive
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1716
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1717
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1718
	__ASSERT_DEBUG((aDrive>=EDriveA && aDrive<=EDriveZ) || aDrive==KDriveInvalid,Fault(EDiskBadIndex2));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1719
	__PRINT2(_L("FsNotify::HandleDiskSpace() aRequest=0x%x, aDrive=%d"),aRequest,aDrive);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1720
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1721
	if(!aRequest->Operation()->IsDiskSpaceNotify())
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1722
		return;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1723
	TInt f = aRequest->Operation()->Function();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1724
	if ((f == EFsFileWrite || f == EFsFileWriteDirty) && !((CFsClientMessageRequest*)aRequest)->IsFreeChanged())
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1725
		return;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1726
	if (FsThreadManager::IsDriveThread(aDrive,EFalse))	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1727
		iDiskSpaceQues[aDrive].CheckDiskSpace();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1728
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1729
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1730
void FsNotify::HandleDiskSpace(TInt aDrive, TInt64& aFreeSpace)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1731
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1732
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1733
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1734
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1735
	__ASSERT_DEBUG((aDrive>=EDriveA && aDrive<=EDriveZ),Fault(EDiskBadIndex3));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1736
	__PRINT1(_L("FsNotify::HandleDiskSpace() aDrive=%d"),aDrive);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1737
	iDiskSpaceQues[aDrive].CheckDiskSpace(aFreeSpace);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1738
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1739
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1740
void FsNotify::HandleDebug(TUint aFunction)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1741
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1742
// Check whether any debug notifications need to be completed due to aFunction
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1743
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1744
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1745
	__PRINT1(_L("FsNotify::HandleDebug() aFunction=0x%x"),aFunction);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1746
	if(!(aFunction&KDebugNotifyMask))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1747
		return;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1748
	iDebugQue.CheckDebug(aFunction);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1749
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1750
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1751
void FsNotify::HandleDismount(TNotifyDismountMode aMode, TInt aDrive, TBool aRemove, TInt err)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1752
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1753
// Handle dismount notifications for the given drive
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1754
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1755
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1756
	__PRINT4(_L("FsNotify::HandleDismount() aMode = %d, aDrive=%d, aRemove=%d, err=%d"),aMode,aDrive,aRemove,err);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1757
	iDismountNotifyQue.CheckDismount(aMode, aDrive, aRemove, err);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1758
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1759
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1760
TBool FsNotify::HandlePendingDismount(CSessionFs* aSession, TInt aDrive)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1761
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1762
// Checks if the session has an outstanding notification registered on the drive
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1763
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1764
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1765
	__PRINT1(_L("FsNotify::HandlePendingDismount() aDrive=%d"),aDrive);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1766
	return iDismountNotifyQue.HandlePendingDismount(aSession, aDrive);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1767
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1768
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1769
void FsNotify::DiskChange(TInt aDrive)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1770
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1771
// Complete all notifications in queus due to a disk change
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1772
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1773
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1774
	__ASSERT_DEBUG((aDrive>=EDriveA && aDrive<=EDriveZ),Fault(EDiskChangeDrive));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1775
	__PRINT1(_L("FsNotify::DiskChange() aDrive=%d"),aDrive);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1776
	iChangeQues[ChangeIndex(aDrive)].CancelAll(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1777
	iChangeQues[ChangeIndex(KDriveInvalid)].CancelAll(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1778
	iDiskSpaceQues[aDrive].CancelAll(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1779
	iDebugQue.CancelAll(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1780
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1781
	// if there are any files containing dirty data, start issuing write-dirty data requests to trigger
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1782
	// a critical notifier (CFileCache::HandleWriteDirtyError())
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1783
	// otherwise purge all file caches
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1784
	TDrive& drive=TheDrives[aDrive];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1785
	drive.FlushCachedFileInfo(ETrue);	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1786
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1787
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1788
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1789
void FsNotify::CancelChangeSession(CSessionFs* aSession,TRequestStatus* aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1790
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1791
//	Cancel change notifcation(s) setup by aSession and matching aStatus if not NULL
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1792
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1793
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1794
	__PRINT2(_L("FsNotify::CancelChangeSession() aSession=0x%x aStatus=0x%x"),aSession,aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1795
	for(TInt i=0;i<KMaxNotifyQues;++i)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1796
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1797
		TBool isFound=iChangeQues[i].CancelSession(aSession,KErrCancel,aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1798
		if(aStatus && isFound)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1799
			break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1800
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1801
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1802
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1803
void FsNotify::CancelDiskSpaceSession(CSessionFs* aSession,TRequestStatus* aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1804
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1805
// Cancel disk space notification(s) setup by aSession and matching aStatus if not NULL
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1806
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1807
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1808
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1809
	__PRINT2(_L("FsNotify::CancelDiskSpaceSession() aSession=0x%x aStatus=0x%x"),aSession,aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1810
	for(TInt i=0;i<KMaxDiskQues;++i)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1811
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1812
		TBool isFound=iDiskSpaceQues[i].CancelSession(aSession,KErrCancel,aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1813
		if(aStatus && isFound)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1814
			break;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1815
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1816
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1817
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1818
void FsNotify::CancelDebugSession(CSessionFs* aSession, TRequestStatus* aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1819
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1820
// Cancel debug notification(s) setup by aSession and matching aStatus if not NULL
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1821
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1822
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1823
	__PRINT2(_L("FsNotify::CancelDebugSession() aSession=0x%x aStatus=0x%x"),aSession,aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1824
	iDebugQue.CancelSession(aSession,KErrCancel,aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1825
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1826
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1827
void FsNotify::CancelDismountNotifySession(CSessionFs* aSession, TRequestStatus* aStatus)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1828
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1829
// Cancel all media removal notification(s) setup by aSession (if aStatus == NULL)
90
947f0dc9f7a8 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
  1830
// else cancels all outstanding notifications(s) for the session
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1831
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1832
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1833
	__PRINT2(_L("FsNotify::CancelDismountNotifySession() aSession=0x%x aStatus=0x%x"),aSession,aStatus);
286
48e57fb1237e 201039_11
hgs
parents: 273
diff changeset
  1834
	iDismountNotifyQue.CancelSession(aSession,KErrCancel,aStatus);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1835
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1836
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1837
void FsNotify::CancelSession(CSessionFs* aSession)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1838
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1839
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1840
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1841
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1842
	__PRINT(_L("FsNotify::CancelSession"));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1843
	FsNotify::CancelChangeSession(aSession);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1844
	FsNotify::CancelDiskSpaceSession(aSession);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1845
	FsNotify::CancelDebugSession(aSession);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1846
	FsNotify::CancelDismountNotifySession(aSession);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1847
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1848
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1849
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1850
TInt FsNotify::ChangeIndex(TInt aDrive)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1851
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1852
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1853
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1854
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1855
	__ASSERT_DEBUG((aDrive>=EDriveA && aDrive<=EDriveZ) || aDrive==KDriveInvalid,Fault(EChangeBadIndex));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1856
	if(aDrive==KDriveInvalid)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1857
		return(0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1858
	else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1859
		return(aDrive+1);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1860
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1861