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

📄 fileserversession.cpp

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


// INCLUDE FILES
#include <e32math.h>
#include <e32cmn.h>
#include <e32des8.h>
#include <aknnotewrappers.h> 

#include "ClientServerCommon.h"
#include "FileServerSession.h"
#include "CSSync.rsg"

_LIT(KDisplayTxt,"Enter Filename:");
_LIT(KFileNamePath, "c:\\private\\");

// FUNCTION PROTOTYPES
static TInt StartServer();
static TInt CreateServerProcess();

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

// -----------------------------------------------------------------------------
// RFileServerSession::RFileServerSession()
// C++ default constructor can NOT contain any code, that might leave.
// -----------------------------------------------------------------------------
//
RFileServerSession::RFileServerSession()
: RSessionBase()
    {
    iDisplayTxt.Copy(KDisplayTxt);
    }

// -----------------------------------------------------------------------------
// RFileServerSession::Connect()
// Connects to the server and create a session.
// -----------------------------------------------------------------------------
//
TInt RFileServerSession::Connect()
    {
    TInt error = ::StartServer();

    if ( KErrNone == error )
        {
        error = CreateSession( KFileServerName,
                               Version(),
                               KDefaultMessageSlots );
        }
    return error;
    }

// -----------------------------------------------------------------------------
// RFileServerSession::Version()
// Gets the version number.
// -----------------------------------------------------------------------------
//
TVersion RFileServerSession::Version() const
    {
    return( TVersion( KFileServMajorVersionNumber,
                      KFileServMinorVersionNumber,
                      KFileServBuildVersionNumber ) );
    }




// ============================= OTHER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// StartServer()
// Starts the server if it is not already running
// -----------------------------------------------------------------------------
//
static TInt StartServer()
    {
    TInt result;

    TFindServer findFileServer( KFileServerName );
    TFullName name;

    result = findFileServer.Next( name );
    if ( result == KErrNone )
        {
        // Server already running
        return KErrNone;
        }

    RSemaphore semaphore;
    result = semaphore.CreateGlobal( KFileServerSemaphoreName, 0 );
    if ( result != KErrNone )
        {
        return  result;
        }

    result = CreateServerProcess();
    if ( result != KErrNone )
        {
        return  result;
        }

    semaphore.Wait();
    semaphore.Close();

    return KErrNone;
    }

// -----------------------------------------------------------------------------
// CreateServerProcess()
// Creates a server process
// -----------------------------------------------------------------------------
//
static TInt CreateServerProcess()
    {
    TInt result;

    const TUidType serverUid( KNullUid, KNullUid, KServerUid3 );

    RProcess server;

    _LIT( KStrEmpty,"" );
    result = server.Create( KFileServerFilename, KStrEmpty, serverUid );

    if ( result != KErrNone )
        {
        return  result;
        }

    server.Resume();
    server.Close();

    return  KErrNone;
    }

// -----------------------------------------------------------------------------
// RequestFileCreation()
// Sends a filname to server for creation
// -----------------------------------------------------------------------------
//

void RFileServerSession::RequestFileCreation()
	{
	
	iFileNameCreate.Zero();
	iFileName.Zero();
	
	iFileNameCreate.Copy(KFileNamePath);
	
	iDlg = new( ELeave ) CAknTextQueryDialog( iFileName, iDisplayTxt );
	
	iDlg->PrepareLC( R_DEMO_DATA_QUERY );
	
	iDlg->SetMaxLength(10);
	
	if (iDlg->RunLD())
		{
			
		iFileNameCreate.Append(iFileName);
		
		iIpcArgsCreate.Set(0 ,&iFileNameCreate);
	
		SendReceive( EFileCreation, iIpcArgsCreate);
	
		CAknInformationNote* lNote = new (ELeave) CAknInformationNote;
		lNote->ExecuteLD(iFileNameCreate);
		}
	
}


// -----------------------------------------------------------------------------
// RequestFileDeletion()
// Sends a filname to server for deletion
// -----------------------------------------------------------------------------
//

void RFileServerSession::RequestFileDeletion()
{
	
	iFileNameDelete.Zero();
	iFileName.Zero();
	
	iFileNameDelete.Copy(KFileNamePath);
	
	iDlg = new( ELeave ) CAknTextQueryDialog( iFileName, iDisplayTxt );
	
	iDlg->PrepareLC( R_DEMO_DATA_QUERY );
	
	iDlg->SetMaxLength(10);
	
	if (iDlg->RunLD())
		{
			
		iFileNameDelete.Append(iFileName);
		
		iIpcArgsDelete.Set(0 ,&iFileNameDelete);
		
		SendReceive( EFileDeletion, iIpcArgsDelete);
	
		CAknInformationNote* lNote = new (ELeave) CAknInformationNote;
		lNote->ExecuteLD(iFileNameDelete);
		}
}
// End of File

⌨️ 快捷键说明

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