--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneclientserver/phoneclient/Src/Messenger/RPhCltMessenger.cpp Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,207 @@
+/*
+* Copyright (c) 2004 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 class is used to perform Phone Client Extension
+* Messenger originated commands.
+*
+*/
+
+
+
+// INCLUDES
+
+#include "RPhCltMessenger.h"
+#include <RPhCltServer.h>
+#include "PhCltClientServer.h"
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// RPhCltMessenger::RPhCltMessenger
+//
+// C++ constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+RPhCltMessenger::RPhCltMessenger()
+: RSubSessionBase(),
+ iReceiveMessageSize( NULL, 0 ),
+ iMesParPckg( iMessengerParameters )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// RPhCltMessenger::~RPhCltMessenger
+//
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+RPhCltMessenger::~RPhCltMessenger()
+ {
+ // Ensure that the subsession is closed.
+ Close();
+ }
+
+
+// -----------------------------------------------------------------------------
+// RPhCltMessenger::Open
+//
+// Open subsession to Phone Server.
+// -----------------------------------------------------------------------------
+//
+TInt RPhCltMessenger::Open(
+ RPhCltServer& aServer,
+ const TUid& aCategoryUid,
+ const TInt& aDefaultMessageSize )
+ {
+ __ASSERT_ALWAYS( aServer.Handle(), User::Panic(
+ KPhClientPanicCategory,
+ EPhCltClientSidePanicNullHandle ) );
+
+ TInt err = CreateSubSession(
+ aServer,
+ EPhoneServerMessengerSubSessionOpen,
+ TIpcArgs() );
+
+
+ // If subsession was created successfully, construct it properly.
+ if ( !err )
+ {
+ // Set the needed variables to be transferred to PhoneServer side.
+ iMessengerParameters.iCategoryUid = aCategoryUid;
+ iMessengerParameters.iDefaultMessageSize = aDefaultMessageSize;
+
+ err = SendReceive(
+ EPhoneServerMessengerSubSessionConstruct,
+ TIpcArgs( &iMesParPckg ) );
+
+ // If memory reservations failed, close subsession.
+ if ( err )
+ {
+ Close();
+ }
+ }
+
+ return err;
+ }
+
+
+// -----------------------------------------------------------------------------
+// RPhCltMessenger::Close
+//
+// Close subsession.
+// -----------------------------------------------------------------------------
+//
+void RPhCltMessenger::Close()
+ {
+ CloseSubSession( EPhoneServerMessengerSubSessionClose );
+ }
+
+
+// -----------------------------------------------------------------------------
+// RPhCltMessenger::Receive
+//
+// Receive message.
+// -----------------------------------------------------------------------------
+//
+void RPhCltMessenger::Receive(
+ TRequestStatus& aStatus,
+ TInt& aMessageSize,
+ TDes8& aMessagePayload )
+ {
+ __ASSERT_ALWAYS(
+ SubSessionHandle(), User::Panic(
+ KPhClientPanicCategory, EPhCltClientSidePanicNullHandle ) );
+
+ // Set message size variables to be byte descriptor.
+ iReceiveMessageSize.Set( ( TUint8* )&aMessageSize, 0, sizeof( TInt ) ) ;
+ iMessengerParameters.iReceiveMessageSizePtr = &iReceiveMessageSize;
+
+ iMessengerParameters.iReceiveBufferMaxSize = aMessagePayload.MaxSize();
+
+ SendReceive(
+ EPhoneServerMessengerSubSessionReceive,
+ TIpcArgs(
+ &iMesParPckg,
+ &aMessagePayload,
+ &iReceiveMessageSize ),
+ aStatus );
+ }
+
+
+// -----------------------------------------------------------------------------
+// RPhCltMessenger::Send
+//
+// Send message.
+// -----------------------------------------------------------------------------
+//
+void RPhCltMessenger::Send(
+ TRequestStatus& aStatus,
+ const TDesC8& aMessagePayload )
+ {
+ __ASSERT_ALWAYS(
+ SubSessionHandle(), User::Panic(
+ KPhClientPanicCategory, EPhCltClientSidePanicNullHandle ) );
+
+ iMessengerParameters.iSendPayloadLength = aMessagePayload.Length();
+
+ SendReceive(
+ EPhoneServerMessengerSubSessionSend,
+ TIpcArgs(
+ &iMesParPckg,
+ &aMessagePayload ),
+ aStatus );
+ }
+
+
+// -----------------------------------------------------------------------------
+// RPhCltMessenger::CancelRequest
+//
+// Cancel ongoing request.
+// -----------------------------------------------------------------------------
+//
+void RPhCltMessenger::CancelRequest( const TPhCltMessengerRequest& aRequest )
+ {
+ __ASSERT_ALWAYS( SubSessionHandle(), User::Panic(
+ KPhClientPanicCategory, EPhCltClientSidePanicNullHandle ) );
+
+ iMessengerParameters.iCancelRequest = aRequest;
+
+ SendReceive(
+ EPhoneServerMessengerSubSessionCancel,
+ TIpcArgs( &iMesParPckg ) );
+ }
+
+
+// -----------------------------------------------------------------------------
+// RPhCltMessenger::Skip
+//
+// Skip the current message.
+// -----------------------------------------------------------------------------
+//
+void RPhCltMessenger::Skip()
+ {
+ __ASSERT_ALWAYS(
+ SubSessionHandle(), User::Panic(
+ KPhClientPanicCategory, EPhCltClientSidePanicNullHandle ) );
+
+ SendReceive(
+ EPhoneServerMessengerSubSessionSkip,
+ TIpcArgs() );
+ }
+
+
+// End of File