⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filesession.cpp

📁 Symbian Client_Server_Application
💻 CPP
字号:
/*
* ==============================================================================
*  Name        : FileSession.cpp
*  Part of     :clientserversync
*  Interface   : 
*  Description : 
*  Version     : 
* ==============================================================================
*/


// INCLUDE FILES
#include <e32svr.h>
#include <f32file.h>
#include <aknnotewrappers.h> 
#include <e32cons.h>
#include <aknglobalnote.h>
#include <bautils.h>
#include <e32cmn.h>

#include "FileSession.h"
#include "ClientServerCommon.h"
#include "FileServer.h"

//LOCAL_D CConsoleBase* console;
const TUint KRequiredSecureId = 0xe3d58664;



// ========================= MEMBER FUNCTIONS ==================================

// -----------------------------------------------------------------------------
// CFileServerSession::NewL()
// -----------------------------------------------------------------------------
//

CFileServerSession* CFileServerSession::NewL()
    {
    CFileServerSession* self = new( ELeave ) CFileServerSession();
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop();
    return self;
    }



// -----------------------------------------------------------------------------
// CFileServerSession::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CFileServerSession::ConstructL()
    {
 	
    }

// -----------------------------------------------------------------------------
// CFileServerSession::CFileServerSession()
// C++ default constructor can NOT contain any code, that might leave.
// -----------------------------------------------------------------------------
	CFileServerSession::CFileServerSession() : CSession2()
    {		
    }

	CFileServer* CFileServerSession::Server()
	{
		return (CFileServer*)( CSession2::Server() );

	}
// -----------------------------------------------------------------------------
// CFileServerSession::~CFileServerSession()
// Destructor.
// -----------------------------------------------------------------------------
//
CFileServerSession::~CFileServerSession()
    {
   		Server()->DecrementSessions();
   		
    }

// -----------------------------------------------------------------------------
// CFileServerSession::ServiceL()
// Service request from client.
// -----------------------------------------------------------------------------
//
void CFileServerSession::ServiceL( const RMessage2& aMessage )
    {
	
	iMsg=aMessage;
	const char *aDiagnostic="";
	
	static _LIT_SECURITY_POLICY_S0(mySidPolicy, KRequiredSecureId);
    TInt success = mySidPolicy().CheckPolicy(aMessage,aDiagnostic);
    
    if ( success )
    	{
    	switch ( aMessage.Function() )
	        {
	        case EFileCreation :
	        	{
	        	iFileNameCreate.Zero();	
	        	//iFileNameCreatePath.Zero();
	        	
	        	//iFileNameCreatePath.Append(KFileNamePath);
	        	//iFileNameCreatePath.AppendNum(KRequiredSecureId);
	        	//iFileNameCreatePath.Append(_L("\\"));	        	
	        	User::LeaveIfError(aMessage.Read(0,iFileNameCreate));
		        //iFileNameCreatePath.Append(iFileNameCreate);
		        
		       	User::LeaveIfError(iSess.Connect());	
		       	
		       	RFile lFile;
	        
	           	if(!iFileExist.FileExists(iSess,iFileNameCreate))
	        		{
	        		if(lFile.Create(iSess,iFileNameCreate,EFileWrite) == KErrNone)
	        			{
	        			iRes.Zero();
	        			iRes.Copy(_L("successfully created"));
		        		aMessage.Write(0,iRes);
		        		}
		        	else
		        		{
		        		iRes.Zero();
		        		iRes.Copy(_L("problem in creation"));
		        		aMessage.Write(0,iRes);
		        			
		        		}
	        		}
	        	else
	        		{
	        		iRes.Zero();
	        		iRes.Copy(_L("already exists"));
		        	aMessage.Write(0,iRes);	
		        	
	        		}
	        	iSess.Close();
	        	}
	        
	        break;	
			
			case EFileDeletion :
	        	{
	        	iFileNameDelete.Zero();	
	        	//iFileNameDeletePath.Zero();
	        	
	        	//iFileNameDeletePath.Append(KFileNamePath);
	        	//iFileNameDeletePath.AppendNum(KRequiredSecureId);
	        	//iFileNameDeletePath.Append(_L("\\"));	        	
	        	
	        	User::LeaveIfError(aMessage.Read(0,iFileNameDelete));
		        //iFileNameDeletePath.Append(iFileNameDelete);
		        
		        User::LeaveIfError(iSess.Connect());	
		        
		        if(iFileExist.FileExists(iSess,iFileNameDelete))
	        		{
	       			if(iSess.Delete(iFileNameDelete) == KErrNone)
		        		{
		    			iRes.Zero();
		    			iRes.Copy(_L("successfully deleted"));
		        		aMessage.Write(0,iRes);
		        		
		        		}
		        	else
		        		{
		        		iRes.Zero();
		        		iRes.Copy(_L("problem in deletion"));
		        		aMessage.Write(0,iRes);
		        		
		        		}
	        		}
	        	else
	        		{
	        		iRes.Zero();
	        		iRes.Copy(_L("file doesnt exist"));
		        	aMessage.Write(0,iRes);
	        		
	        		}
	        	iSess.Close();	
	        	}
	        
	        break;	

        	default:
            	PanicClient( EBadRequest );
            	break;
        	}
    	}
    	else
    		{
    		iRes.Copy(_L("secureid prob"));
		    aMessage.Write(0,iRes);	
    			
    		}
        	
    aMessage.Complete( KErrNone );
    }


// -----------------------------------------------------------------------------
// CFileServerSession::PanicClient()
// Causes the client thread to panic.
// -----------------------------------------------------------------------------
//
void CFileServerSession::PanicClient( TInt aPanic ) const
    {
		User::Panic( KCSSyncServer,aPanic ); // Note: this panics the client thread,
                                   // not server
    }

// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -