userlibandfileserver/fileserver/shostmassstorage/server/src/cusbhostmssession.cpp
changeset 6 0173bcd7697c
parent 4 56f325a607ea
child 41 0ffb4e86fcc9
equal deleted inserted replaced
4:56f325a607ea 6:0173bcd7697c
   113 			aMessage.Complete(r);
   113 			aMessage.Complete(r);
   114 			return;
   114 			return;
   115 			}
   115 			}
   116 		break;
   116 		break;
   117 	/* If it is a cleanup then we need to delete the iDeviceThread */
   117 	/* If it is a cleanup then we need to delete the iDeviceThread */
   118 	case EUsbHostMsFinalCleanup:
   118 	case EUsbHostMsFinalCleanup:	
   119 		if(iDeviceThread->IsActive())
       
   120 			{
       
   121 			iThread.RequestComplete(iClientStatus, KErrSessionClosed);
       
   122 			}
       
   123 	
       
   124 		delete iDeviceThread;
   119 		delete iDeviceThread;
   125 		iThread.Kill(KErrNone);
   120 		iThread.Kill(KErrNone);
   126 		aMessage.Complete(KErrNone);
   121 		aMessage.Complete(KErrNone);
   127 		return;
   122 		return;
   128 	default:
   123 	default:
   153 	TPtr8 ptr((TUint8*)&msDeviceConfig,sizeof(THostMassStorageConfig));
   148 	TPtr8 ptr((TUint8*)&msDeviceConfig,sizeof(THostMassStorageConfig));
   154 
   149 
   155 	aMessage.ReadL(0, ptr);
   150 	aMessage.ReadL(0, ptr);
   156 	__HOSTPRINT1(_L("EUsbHostMsRegisterInterface Token=%d "), msDeviceConfig.iInterfaceToken);
   151 	__HOSTPRINT1(_L("EUsbHostMsRegisterInterface Token=%d "), msDeviceConfig.iInterfaceToken);
   157 
   152 
   158     TBuf<20> nameBuf;
   153     TBuf<32> nameBuf;
   159 	nameBuf.Format(_L("Host Ms Thread%d"), msDeviceConfig.iInterfaceToken);
   154 	nameBuf.Format(_L("Host Ms Thread%8x"), msDeviceConfig.iInterfaceToken);
   160 	iDeviceThread = CUsbHostMsDeviceThread::NewL(*this, msDeviceConfig.iInterfaceToken);
   155 	iDeviceThread = CUsbHostMsDeviceThread::NewL(*this, msDeviceConfig.iInterfaceToken);
   161 
   156 
   162 	RHeap* h = (RHeap*)&User::Allocator();
   157 	RHeap* h = (RHeap*)&User::Allocator();
   163 	TInt maxsize = h->MaxLength();	// loader heap max size = file server heap max size
   158 	TInt maxsize = h->MaxLength();	// loader heap max size = file server heap max size
   164 	const TUint KHeapMinSize = 2048;
   159 	const TUint KHeapMinSize = 2048;
   175 	iThread.Rendezvous(status);
   170 	iThread.Rendezvous(status);
   176 	iThread.Resume();
   171 	iThread.Resume();
   177 	User::WaitForRequest(status);
   172 	User::WaitForRequest(status);
   178 	if(status != KErrNone)
   173 	if(status != KErrNone)
   179 		{
   174 		{
   180 		if(iDeviceThread->IsActive())
       
   181 			{			
       
   182 			iThread.RequestComplete(iClientStatus, KErrSessionClosed);
       
   183 			}
       
   184 		iDeviceThread->Cancel();
       
   185 		delete iDeviceThread;
   175 		delete iDeviceThread;
   186         iDeviceThread = NULL;
   176         iDeviceThread = NULL;
   187 		iThread.Kill(KErrNone);
   177 		iThread.Kill(KErrNone);
   188 		User::Leave(status.Int());
   178 		User::Leave(status.Int());
   189 		}
   179 		}