--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ipappsrv_plat/comms_event_api/inc/mceevent.h Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,320 @@
+/*
+* Copyright (c) 2005 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:
+*
+*/
+
+
+
+
+#ifndef CMCEEVENT_H
+#define CMCEEVENT_H
+
+// INCLUDES
+#include <e32base.h>
+#include <mcedefs.h>
+
+// FORWARD DECLARATIONS
+class CDesC8Array;
+class TMceIds;
+class CMceItcSender;
+class CMceManager;
+class CMceEventReceiver;
+class CMceMsgBase;
+class TMceEvent;
+class CMceSession;
+class CMceRefer;
+
+// CLASS DECLARATION
+
+/**
+* Base class for MCE events, inherited by both CMceInEvent and CMceOutEvent.
+*
+* CMceEvent represents peer-to-peer connection made with remote terminal.
+* This connection is also known as dialog and it is set up using SIP SUBSCRIBE
+* method.
+*
+* MCE events are typically used for queurying state of some parameter of
+* remote terminal. The queuried parameter is known as event header.
+* The changes of this parameter are notified to another terminal by sending
+* SIP NOTIFY messages.
+*
+* The event can be finally terminated by either endpoints.
+*
+* If for any reason instance of this class is deleted while in active state,
+* event is automatically terminated by MCE server.
+*
+* @lib mceclient.lib
+*/
+class CMceEvent : public CBase
+ {
+ public: // Event states
+
+ enum TState
+ {
+ EIdle,
+ EPending,
+ EActive,
+ ETerminated
+ };
+
+ public: // Constructors and destructors
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMceEvent();
+
+ public: // New functions
+
+ /**
+ * Terminates the event.
+ * @pre State() == CMceEvent::EActive
+ * @post State() == CMCEvent::EPending
+ * @param aHeaders, additional headers of the message.
+ * The Ownership is transferred.
+ * @param aContentType, the type of the message content.
+ * The ownership is transferred.
+ * @param aContent, the content to be added in the message body.
+ * The ownership is transferred.
+ * @leave KErrNotSupported if event cannot be terminated
+ * (e.g. event attached to a CMceOutRefer)
+ */
+ IMPORT_C void TerminateL(
+ CDesC8Array* aHeaders = 0,
+ HBufC8* aContentType = 0,
+ HBufC8* aContent = 0 );
+
+ /**
+ * Returns the state of the event.
+ * @return The current state of the event
+ */
+ IMPORT_C TState State() const;
+
+ /**
+ * Returns the address of the recipient
+ * @return The the address of the recipient
+ */
+ IMPORT_C const TDesC8& Recipient() const;
+
+ /**
+ * Returns the address of the originator
+ * @return the address of the Originator
+ */
+ IMPORT_C const TDesC8& Originator() const;
+
+ /**
+ * Returns the Event header.
+ * @return the Event header
+ */
+ IMPORT_C const TDesC8& EventHeader() const;
+
+ /**
+ * Returns the associated session, if any.
+ * @return CMceSession Associated session, NULL if does not exist.
+ */
+ IMPORT_C CMceSession* AssociatedSession() const;
+
+ /**
+ * Returns the associated events, if any.
+ * @return RPointerArray array of associated events, ownership is transferred.
+ */
+ IMPORT_C RPointerArray< CMceEvent >* AssociatedEventsL() const;
+
+ /**
+ * Returns the associated refers, if any.
+ * @return RPointerArray array of associated refers, ownership is transferred.
+ */
+ IMPORT_C RPointerArray< CMceRefer >* AssociatedRefersL() const;
+
+ public: // New functions, internal
+
+ /**
+ * ID
+ * @return ID
+ */
+ TUint32 Id() const;
+
+ /**
+ * Dialog ID
+ * @return dialog ID
+ */
+ TUint32 DialogId() const;
+
+ /**
+ * Gets SIP profile id.
+ * @return profile id.
+ */
+ TUint32 ProfileId() const;
+
+ /**
+ * Gets sender for ITC.
+ * @return ITC sender
+ */
+ CMceItcSender& ITCSender();
+
+ /**
+ * Gets manager
+ * @return manager
+ */
+ CMceManager& Manager();
+
+ /**
+ * Gets the type of the event
+ * @return ETrue in InEvent
+ */
+ virtual TBool IsInEvent() const = 0;
+
+
+ public: // New functions, event handling
+
+ /**
+ * Handles reception of event update
+ * @param aId id of object whose state is needed to be updated
+ */
+ void EventReceivedL( TMceIds& aId );
+
+ /**
+ * Handles reception of event update
+ * @param aId id of object whose state is needed to be updated
+ * @param aMessage the message
+ */
+ void EventReceivedL( TMceIds& aId, CMceMsgBase& aMessage );
+
+ /**
+ * Handles reception of event update
+ * @param aId id of object whose state is needed to be updated
+ * @param aMessage the message
+ * @param aContent the content
+ */
+ void EventReceivedL( TMceIds& aId, CMceMsgBase& aMessage, HBufC8* aContent );
+
+ /**
+ * Handling of error
+ * @param aError the error
+ */
+ void ErrorOccuredL( TInt aError );
+
+ protected: // New functions
+
+ /**
+ * C++ default constructor.
+ * @param aManager, reference to event manager.
+ * @param aProfileId, id of the sip profile used for the event.
+ * @param aDialogId,
+ * @param aRefreshInterval,
+ */
+ CMceEvent( CMceManager& aManager,
+ TUint32 aProfileId,
+ TUint32 aDialogId,
+ TUint32 aRefreshInterval );
+
+ /**
+ * Prepares ids for ITC
+ * @param aId ITC ids
+ */
+ void PrepareForITC( TMceIds& aId );
+
+ /**
+ * second-phase constructor
+ * @param aEventHeader
+ * @param aRecipient
+ * @param aOriginator
+ * @param aDialogType
+ */
+ void ConstructL( HBufC8* aEventHeader,
+ HBufC8* aRecipient,
+ HBufC8* aOriginator,
+ TUint32 aDialogType,
+ CDesC8Array* aParams );
+
+
+ private: // New functions, event handling and update
+
+ /**
+ * Traversal event handler
+ * @param aEvent the event
+ */
+ void EventReceivedL( TMceEvent& aEvent );
+
+ /**
+ * Handles event
+ * @param aEvent the event
+ */
+ void HandleEventL( TMceEvent& aEvent );
+
+ protected: // Data
+
+ // current event state
+ TState iState;
+
+ /**
+ * Sender, owned
+ */
+ CMceItcSender* iSender;
+
+ /**
+ * Event receiver, owned
+ */
+ CMceEventReceiver* iReceiver;
+
+ /**
+ * Event manager,not owned
+ */
+ CMceManager& iManager;
+
+ /**
+ * SIP profile id
+ */
+ TUint32 iProfileId;
+
+ /**
+ * ID
+ */
+ TUint32 iId;
+
+ /**
+ * dialog id
+ */
+ TUint32 iDialogId;
+
+ /**
+ * The event header
+ */
+ HBufC8* iEventHeader;
+
+ /**
+ * The recipient
+ */
+ HBufC8* iRecipient;
+
+ /**
+ * The originator
+ */
+ HBufC8* iOriginator;
+
+ /**
+ * The refresh interval
+ */
+ TUint32 iRefreshInterval;
+
+ private: // Reserved for future use
+
+ TAny* iReserved;
+
+ MCE_UNIT_TEST_DEFS
+
+ };
+
+#endif