cbs/CbsServer/ServerSrc/CCbsTopicMessages.cpp
changeset 46 2fa1fa551b0b
parent 42 35488577e233
child 48 78df25012fda
--- a/cbs/CbsServer/ServerSrc/CCbsTopicMessages.cpp	Mon Aug 23 15:50:31 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,422 +0,0 @@
-/*
-* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  This module contains the implementation of CCbsTopicMessages class 
-*                member functions. 
-* 
-*
-*/
-
-
-// INCLUDE FILES
-
-#include <e32svr.h>
-#include "CbsCommon.h"
-#include "CbsServerPanic.h"
-#include "CCbsTopicMessages.h"
-#include "CCbsSession.h"
-#include "CbsServerConstants.h"
-#include "CCbsDbImpTopicMessages.h"
-#include "CCbsServer.h"
-#include "CbsLogger.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::CCbsTopicMessages
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CCbsTopicMessages::CCbsTopicMessages( 
-    CCbsSession& aSession, 
-    CCbsDbImpTopicMessages& aMessages,
-    CCbsRecEtel& aReceiver )
-    : CCbsObject( aSession ), 
-    iMessages( aMessages ),     
-    iLocked( 0 ),
-    iReceiver( aReceiver )
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CCbsTopicMessages* CCbsTopicMessages::NewL( 
-    CCbsSession& aSession, 
-    CCbsDbImpTopicMessages& aMessages,
-    CCbsRecEtel& aReceiver )
-    {
-    // Normal two phase construction
-    CCbsTopicMessages* self = 
-            new ( ELeave ) CCbsTopicMessages( aSession, aMessages, aReceiver );
-    return self;
-    }
-
-    
-// Destructor
-CCbsTopicMessages::~CCbsTopicMessages()    
-    {
-    CBSLOGSTRING("CBSSERVER: >>> CCbsTopicMessages::~CCbsTopicMessages()");
-    CBSLOGSTRING("CBSSERVER: <<< CCbsTopicMessages::~CCbsTopicMessages()");
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::HandleRequestsL
-// Handle the requests for the object.
-// Passes requests to proper functions
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CCbsTopicMessages::HandleRequestsL( 
-    const RMessage2& aMessage )
-    {
-    CBSLOGSTRING("CBSSERVER: >>> CCbsTopicMessages::HandleRequestsL()");
-    TBool requestHandled ( ETrue );
-    // Handle the requests that are for the subsession.
-    switch ( aMessage.Function() )
-        {
-        case ECbsCloseTopicMessagesSubsession:                
-            CloseTopicMessages();
-            aMessage.Complete( KErrNone );
-            break;
-    
-        case ECbsGetMessageCount:                
-            GetMessageCountL();            
-            break;
-
-        case ECbsGetMessage:
-            GetMessageL();                
-            break;
-
-        case ECbsFindMessageByHandle:                               
-            FindMessageByHandleL();            
-            break;
-
-        case ECbsGetMessageIndexByHandle:                
-            GetMessageIndexByHandleL();            
-            break;
-
-        case ECbsGetNextAndPrevMsgHandle:                
-            GetNextAndPrevMsgHandleL();            
-            break;
-   
-        case ECbsDeleteMessage:                
-            DeleteMessageL( iReceiver );            
-            break;
-
-        case ECbsSaveMessage:                
-            SaveMessageL( iReceiver );            
-            break;
-
-        case ECbsLockMessage:            
-            LockMessageL();            
-            break;
-
-        case ECbsReadMessage:                
-            ReadMessageL( iReceiver );            
-            break;
-
-        case ECbsGetMessageContents:                
-            GetMessageContentsL();            
-            break;
-
-        default:
-            requestHandled = EFalse;
-            break;
-        }    
-    CBSLOGSTRING2("CBSSERVER: <<< CCbsTopicMessages::HandleRequestsL(), returning requestHandled: %d", requestHandled );   
-    return requestHandled;
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::CloseTopicMessages
-// Closes the subsession.  
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsTopicMessages::CloseTopicMessages()
-    {
-    // Removes the object.
-    Session().Server().DeleteObjectByHandle( Message().Int3() );
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::GetMessageCountL
-// Returns the total amount of messages to the client.   
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsTopicMessages::GetMessageCountL()
-    {
-    // First, get the handle from the client    
-    TInt topicNumber( 0 );
-    topicNumber = Message().Int0();
-
-    // Then, get the message count from the database.
-    TInt count( 0 );
-    iMessages.GetMessageCountL( static_cast<TUint16> ( topicNumber ), count );
-    
-    // Write the message count to the client side.
-    TPckgBuf< TInt > pckgCount( count );
-    Message().WriteL( 1, pckgCount );
-
-    // Complete the request.
-    Message().Complete( KErrNone );
-
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::GetMessageL
-// Returns the requested message to the client. 
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsTopicMessages::GetMessageL()
-    {  
-    // Read the parameters from the client side
-    TInt topicNumber( 0 );
-    TInt index( 0 );
-    topicNumber = Message().Int0();
-    index = Message().Int1();
-    
-    // Then get the message from database.
-    TPckgBuf< TCbsDbMessage > pckgMessage;
-    iMessages.GetMessageL( static_cast<TUint16> ( topicNumber ), index, pckgMessage() );
-
-    // And finally write the message information to the client side
-    Message().WriteL( 2, pckgMessage );
-
-    // And complete the request.
-    Message().Complete( KErrNone );
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::FindMessageByHandleL
-// Finds a message by its handle. 
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsTopicMessages::FindMessageByHandleL()
-    {
-    // Read the parameters from the client side.
-    TPckgBuf< TCbsMessageHandle > pckgHandle( 0 );
-    Message().ReadL( 0, pckgHandle );
-
-    // Find the message.
-    TPckgBuf< TCbsMessage > pckgMessage;
-    iMessages.FindMessageByHandleL( pckgHandle(), pckgMessage() );
-
-    // Write the result to the client side.
-    Message().WriteL( 1, pckgMessage );
-
-    // Complete the request.
-    Message().Complete( KErrNone );
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::GetMessageIndexByHandleL
-// Returns message index in topic by message handle.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsTopicMessages::GetMessageIndexByHandleL()
-    {
-    TPckgBuf< TCbsMessageHandle > pckgHandle( 0 );
-    Message().ReadL( 0, pckgHandle );
-
-    TInt index( iMessages.FindMessagePositionByHandleL( pckgHandle() ) );
-
-    TPckgBuf< TInt > pckgIndex( index );
-    Message().WriteL( 1, pckgIndex );
-
-    Message().Complete( KErrNone );
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::DeleteMessageL
-// Deletes a message.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsTopicMessages::DeleteMessageL( const CCbsRecEtel& aReceiver )
-    {
-    // Read the handle from the client side.
-    TPckgBuf< TCbsMessageHandle > pckgHandle( 0 );
-    Message().ReadL( 0, pckgHandle );
-
-    // And then try to delete the message.
-    iMessages.DeleteMessageL( pckgHandle(), aReceiver );
-
-    // Finally, complete the request.
-    Message().Complete( KErrNone );
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::SaveMessageL
-// Saves a message.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//   
-void CCbsTopicMessages::SaveMessageL( const CCbsRecEtel& aReceiver )
-    {
-    // Read the parameter from the client side.
-    TPckgBuf< TCbsMessageHandle > pckgHandle( 0 );
-    Message().ReadL( 0, pckgHandle );
-
-    // Save the message.
-    iMessages.SaveMessageL( pckgHandle(), aReceiver );
-
-    // Complete the request.
-    Message().Complete( KErrNone );
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::LockMessageL
-// Locks a message.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsTopicMessages::LockMessageL()
-    {
-    // Read the parameter from the client side.
-    TPckgBuf< TCbsMessageHandle > pckgHandle( 0 );
-    Message().ReadL( 0, pckgHandle );
-
-    TCbsDbMessageHandle handle( pckgHandle() );
-
-    if ( handle != iLocked )
-        {
-        iMessages.LockMessageL( iLocked, handle );
-        iLocked = handle;
-        }
-
-    // Complete the request.
-    Message().Complete( KErrNone );
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::ReadMessageL
-// Reads a message.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsTopicMessages::ReadMessageL( const CCbsRecEtel& aReceiver )
-    {
-    // Read parameter from the client side.
-    TPckgBuf< TCbsMessageHandle > pckgHandle( 0 );
-    Message().ReadL( 0, pckgHandle );
-
-    // Perform the operation.
-    iMessages.ReadMessageL( pckgHandle(), aReceiver );
-
-    // Complete the request.
-    Message().Complete( KErrNone );
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::GetMessageContentsL
-// Returns the content of the message to the client.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsTopicMessages::GetMessageContentsL()
-    {
-    // Read the parameters from the client side.
-    TPckgBuf< TCbsMessageHandle > pckgHandle( 0 );
-    Message().ReadL( 0, pckgHandle );
-
-    TInt bufSize( 0 );
-    bufSize = Message().Int1();
-
-    TCbsDbMessage message;
-    iMessages.FindMessageByHandleL( pckgHandle(), message );
-    
-    if ( message.iLength != 0 )
-        {
-        // Message is not empty. 
-        // First allocate memory and then get the contents.
-        // Finally write data to client side.
-        TInt size ( ( message.iLength < bufSize ) ? 
-            message.iLength : bufSize );
-
-        // guaranteed to allocate n bytes, n >= size
-        HBufC* buffer = HBufC::NewLC( size );    // on CS
-
-        TPtr16 pointer( buffer->Des() );
-        pointer.Zero();
-
-        // Note: parameter 'size' required, since MaxLength 
-        // may be > bufSize
-        iMessages.GetMessageContentsL( pckgHandle(), pointer, size );
-
-#ifndef _DEBUG
-        Message().WriteL( 2, pointer );
-#else
-        TRAPD( result, Message().WriteL( 2, pointer ) );
-        if ( result != KErrNone )
-            {
-            RDebug::Print(_L("Server buffer length: %d, max: %d"), 
-                pointer.Length(), pointer.MaxLength());
-            __DEBUGGER();
-            User::Leave( result );
-            }
-        
-#endif
-        CleanupStack::PopAndDestroy(); // buffer
-        }
-
-    // Complete the request.
-    Message().Complete( KErrNone );
-    }
-
-// -----------------------------------------------------------------------------
-// CCbsTopicMessages::GetNextAndPrevMsgHandleL
-// Retrieves and returns the handles of messages that
-// precede and succeed the given message in topic.
-// Also returns two flags indicating whether the
-// given message is the first and/or the last message in topic.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CCbsTopicMessages::GetNextAndPrevMsgHandleL()
-    {
-    // Retrieve the requested topic number
-    TPckgBuf< TCbsMessageHandle > pckgCurrentMsg( 0 );
-    Message().ReadL( 0, pckgCurrentMsg );
-
-    // Determine requested information
-    TCbsMessageHandle nextMsg(0);
-    TCbsMessageHandle prevMsg(0);
-    TInt position(0);
-    iMessages.GetNextAndPrevMsgHandleL(
-        pckgCurrentMsg(), nextMsg, prevMsg, position);
-
-    // Write results back
-    TPckgBuf< TCbsNextPrevMsgAndPosition > pckgResults;
-    pckgResults().iPrevMsg = prevMsg;
-    pckgResults().iNextMsg = nextMsg;
-    pckgResults().iPosition = position;
-
-    Message().WriteL( 1, pckgResults );
-
-    // Complete request
-    Message().Complete( KErrNone );
-
-    }
-        
-// ========================== OTHER EXPORTED FUNCTIONS =========================
-//  End of File