--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cbs/CbsServer/ClientSrc/RCbsTopicMessages.cpp Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,291 @@
+/*
+* 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 RCbsTopicMessages class
+ member functions.
+*
+*/
+
+
+
+// INCLUDE FILES
+
+#include "CbsServerConstants.h"
+#include "RCbs.h"
+#include "RCbsTopicMessages.h"
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::RCbsTopicMessages
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+RCbsTopicMessages::RCbsTopicMessages()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::Open
+// Creates a subsession to the server.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt RCbsTopicMessages::Open(
+ RCbs& aServer )
+ {
+ const TIpcArgs args( TIpcArgs::ENothing );
+ return CreateSubSession( aServer, ECbsCreateTopicMessagesSubsession, args );
+ }
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::Close
+// Closes the subsession.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt RCbsTopicMessages::Close()
+ {
+ // Release locked message, if any
+ TCbsMessageHandle handle( 0 );
+ LockMessage( handle );
+
+ // Close the subsession.
+ RSubSessionBase::CloseSubSession( ECbsCloseTopicMessagesSubsession );
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::GetMessageCount
+// Returns the total amount of messages the topic contains.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt RCbsTopicMessages::GetMessageCount(
+ TCbsTopicNumber aNumber,
+ TInt& aCount )
+ {
+ // Send request to get the total amount of messages
+ aCount = 0;
+ TPckgBuf< TInt > pckgCount( aCount );
+ const TIpcArgs args( aNumber, &pckgCount );
+
+ TInt result = SendReceive( ECbsGetMessageCount, args );
+
+ // If everything went fine, give the result to the client.
+ if ( result == KErrNone )
+ {
+ aCount = pckgCount();
+ }
+ return result;
+ }
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::GetMessage
+// Returns message information.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt RCbsTopicMessages::GetMessage(
+ TCbsTopicNumber aNumber,
+ TInt aIndex,
+ TCbsMessage& aMessage )
+ {
+ // Send request to get the message from server
+ TPckgBuf< TCbsMessage > pckgMessage;
+ const TIpcArgs args( aNumber, aIndex, &pckgMessage );
+
+ TInt result = SendReceive( ECbsGetMessage, args );
+
+ if ( result == KErrNone )
+ {
+ aMessage = pckgMessage();
+ }
+ else
+ {
+ aMessage.iHandle = 0;
+ }
+
+ return result;
+
+ }
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::FindMessageByHandle
+// Finds a message by given handle.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt RCbsTopicMessages::FindMessageByHandle(
+ const TCbsMessageHandle& aHandle,
+ TCbsMessage& aMessage )
+ {
+ // Send request to the server to find a message by handle
+ TPckgBuf< TCbsMessageHandle > pckgHandle( aHandle );
+ TPckgBuf< TCbsMessage > pckgMessage;
+ const TIpcArgs args( &pckgHandle, &pckgMessage );
+
+ TInt result = SendReceive( ECbsFindMessageByHandle, args );
+
+ // If everything went fine, update the message
+ if ( result == KErrNone )
+ {
+ aMessage = pckgMessage();
+ }
+ else
+ {
+ aMessage.iHandle = 0;
+ }
+
+ return result;
+
+ }
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::GetMessageIndexByHandle
+// Returns the index of a message with given handle in topic.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt RCbsTopicMessages::GetMessageIndexByHandle(
+ const TCbsMessageHandle& aHandle,
+ TInt& aIndex )
+ {
+ TPckgBuf< TCbsMessageHandle > pckgHandle( aHandle );
+ TPckgBuf< TInt > pckgIndex( 0 );
+ const TIpcArgs args( &pckgHandle, &pckgIndex );
+
+ TInt result( SendReceive( ECbsGetMessageIndexByHandle, args ) );
+
+ if ( result == KErrNone )
+ {
+ aIndex = pckgIndex();
+ }
+ return result;
+ }
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::DeleteMessage
+// Deletes an existing message.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt RCbsTopicMessages::DeleteMessage(
+ const TCbsMessageHandle& aHandle )
+ {
+ // Send request to delete a message by handle
+ TPckgBuf< TCbsMessageHandle > pckgHandle( aHandle );
+ const TIpcArgs args( &pckgHandle );
+ return SendReceive( ECbsDeleteMessage, args );
+ }
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::SaveMessage
+// Saves a message (i.e., the saved message won't be deleted to make
+// room for new messages).
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt RCbsTopicMessages::SaveMessage(
+ const TCbsMessageHandle& aHandle )
+ {
+ // Send request to save a message by handle
+ TPckgBuf< TCbsMessageHandle > pckgHandle( aHandle );
+ const TIpcArgs args( &pckgHandle );
+ return SendReceive( ECbsSaveMessage, args );
+ }
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::LockMessage
+// Locks the message.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt RCbsTopicMessages::LockMessage(
+ const TCbsMessageHandle& aHandle )
+ {
+ TPckgBuf< TCbsMessageHandle > pckgHandle( aHandle );
+ const TIpcArgs args( &pckgHandle );
+ return SendReceive( ECbsLockMessage, args );
+ }
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::ReadMessage
+// Sets the message as read.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt RCbsTopicMessages::ReadMessage(
+ const TCbsMessageHandle& aHandle )
+ {
+ // Send request to set message read by handle
+ TPckgBuf< TCbsMessageHandle > pckgHandle( aHandle );
+ const TIpcArgs args( &pckgHandle );
+ return SendReceive( ECbsReadMessage, args );
+ }
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::GetMessageContents
+// Returns the message contents.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt RCbsTopicMessages::GetMessageContents(
+ const TCbsMessageHandle& aHandle,
+ TDes& aBuffer )
+ {
+ // Send request to get the message contents
+ TPckgBuf< TCbsMessageHandle > pckgHandle( aHandle );
+ TInt length = aBuffer.MaxLength();
+ const TIpcArgs args( &pckgHandle, length, &aBuffer );
+
+ TInt result( SendReceive( ECbsGetMessageContents, args ) );
+ if ( result != KErrNone )
+ {
+ aBuffer.Zero();
+ }
+ return result;
+ }
+
+// -----------------------------------------------------------------------------
+// RCbsTopicMessages::GetNextAndPrevMessageHandle
+// Returns the handles of messages that precede and succeed the
+// given message in server-side list of topic messages.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt RCbsTopicMessages::GetNextAndPrevMessageHandle(
+ const TCbsMessageHandle& aCurrentMsgHandle,
+ TCbsMessageHandle& aPrevMsgHandle,
+ TCbsMessageHandle& aNextMsgHandle,
+ TInt& aPosition )
+ {
+ TPckgBuf< TCbsMessageHandle > pckgCurrentMsg( aCurrentMsgHandle );
+ TPckgBuf< TCbsNextPrevMsgAndPosition > pckgResults;
+ const TIpcArgs args( &pckgCurrentMsg, &pckgResults );
+
+ TInt result( SendReceive( ECbsGetNextAndPrevMsgHandle, args ) );
+ if ( result == KErrNone )
+ {
+ aPrevMsgHandle = pckgResults().iPrevMsg;
+ aNextMsgHandle = pckgResults().iNextMsg;
+ aPosition = pckgResults().iPosition;
+ }
+ return result;
+ }
+
+// ================= OTHER EXPORTED FUNCTIONS ==============
+
+// End of File