imsrv_plat/ximp_im_protocol_plugin_api/inc/protocolimconversation.h
author hgs
Wed, 03 Nov 2010 09:32:20 +0530
changeset 51 61fad867f68e
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Interface for IM protocol messaging object.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef MPROTOCOLIMCONVERSATION_H
hgs
parents:
diff changeset
    19
#define MPROTOCOLIMCONVERSATION_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <e32std.h>
hgs
parents:
diff changeset
    23
#include <badesca.h>
hgs
parents:
diff changeset
    24
#include <ximpbase.h>
hgs
parents:
diff changeset
    25
#include <improtocolpluginifids.hrh>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
class MXIMPIdentity;
hgs
parents:
diff changeset
    29
class MImConversationInfo;
hgs
parents:
diff changeset
    30
/**
hgs
parents:
diff changeset
    31
 * Interface for IM protocol message handling object.
hgs
parents:
diff changeset
    32
 * Interface must be implemented by a IM protocol
hgs
parents:
diff changeset
    33
 * plug-ins.
hgs
parents:
diff changeset
    34
 *
hgs
parents:
diff changeset
    35
 * This interface defines actions that IM 
hgs
parents:
diff changeset
    36
 * requests from a IM protocol connection to
hgs
parents:
diff changeset
    37
 * execute conversation related tasks.
hgs
parents:
diff changeset
    38
 *
hgs
parents:
diff changeset
    39
 * Protocol implementation must route requests received through
hgs
parents:
diff changeset
    40
 * this interface, to same remote IM service destination,
hgs
parents:
diff changeset
    41
 * as where the parent MXIMPProtocolConnection is connected.
hgs
parents:
diff changeset
    42
 * (Here the parent MXIMPProtocolConnection means the protocol
hgs
parents:
diff changeset
    43
 * connection instance from where this interface instance
hgs
parents:
diff changeset
    44
 * was retrieved.)
hgs
parents:
diff changeset
    45
 *
hgs
parents:
diff changeset
    46
 * @see MXIMPProtocolConnection
hgs
parents:
diff changeset
    47
 * @ingroup Improtocolpluginapi
hgs
parents:
diff changeset
    48
 *
hgs
parents:
diff changeset
    49
 */
hgs
parents:
diff changeset
    50
class MProtocolImConversation : public MXIMPBase
hgs
parents:
diff changeset
    51
    {
hgs
parents:
diff changeset
    52
public:
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
    /** Interface ID for the MProtocolImConversation. */
hgs
parents:
diff changeset
    55
    enum { KInterfaceId = IM_IF_ID_PROTOCOL_CONVERSATION };
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
protected:
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
    /**
hgs
parents:
diff changeset
    61
     * Protected destructor. MProtocolImConversation
hgs
parents:
diff changeset
    62
     * instancies can't be destroyed via this interface.
hgs
parents:
diff changeset
    63
     */
hgs
parents:
diff changeset
    64
    virtual inline ~MProtocolImConversation() {};
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
public: 
hgs
parents:
diff changeset
    67
    /**
hgs
parents:
diff changeset
    68
     * Request the protocol to send a  message.
hgs
parents:
diff changeset
    69
     *
hgs
parents:
diff changeset
    70
	 * @param [in] aImMessage 	- Identification and content of the message.
hgs
parents:
diff changeset
    71
     *		MImConversationInfo contains messageid, contenttype - text/content, content,.......  
hgs
parents:
diff changeset
    72
     * @param [in] aRecipients 	- Recipients userid.
hgs
parents:
diff changeset
    73
     * @param [in] aReqId
hgs
parents:
diff changeset
    74
     *        Request id identifying the issued request.
hgs
parents:
diff changeset
    75
	 *
hgs
parents:
diff changeset
    76
	 * /b Note: Possible error conditions
hgs
parents:
diff changeset
    77
     *	/n	 1. Invalid User-ID/Recipient user does not exist [KImApiErrInvalidUserId].
hgs
parents:
diff changeset
    78
     *	/n	 2. Recipient user blocked the sender [KImApiErrSenderBlocked].
hgs
parents:
diff changeset
    79
     *	/n	 3. Unsupported message context [KImErrUnsupportedContext].
hgs
parents:
diff changeset
    80
     *	/n	 4. Message queue full [KImErrTooManyIM].
hgs
parents:
diff changeset
    81
     */
hgs
parents:
diff changeset
    82
    virtual void DoSendMessageL( const MImConversationInfo& aImMessage,TXIMPRequestId aReqId )= 0;
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
    /**
hgs
parents:
diff changeset
    85
     * Request the protocol to forward a message with binary content.
hgs
parents:
diff changeset
    86
     * Forward message to user(s)
hgs
parents:
diff changeset
    87
     *
hgs
parents:
diff changeset
    88
	 * @param [in] aImMessage 	- Identification and content of the message.
hgs
parents:
diff changeset
    89
     *		MImConversationInfo contains messageid, contenttype - text/content, content,.......  
hgs
parents:
diff changeset
    90
     * @param [in] aRecipients 	- Recipients userid.
hgs
parents:
diff changeset
    91
	 * @param [in] aReqId
hgs
parents:
diff changeset
    92
     *        Request id identifying the issued request.
hgs
parents:
diff changeset
    93
	 *
hgs
parents:
diff changeset
    94
	 * /b Note: Possible error conditions
hgs
parents:
diff changeset
    95
     *	/n	 1. Invalid user-id/recipient user does not exist [KImApiErrInvalidUserId].
hgs
parents:
diff changeset
    96
     *	/n	 2. Recipient user blocked the sender [KImApiErrSenderBlocked].
hgs
parents:
diff changeset
    97
     *	/n	 3. Unsupported message context [KImErrUnsupportedContext].
hgs
parents:
diff changeset
    98
     *	/n	 4. Message queue full [KImErrTooManyIM].
hgs
parents:
diff changeset
    99
     */
hgs
parents:
diff changeset
   100
   virtual void DoForwardMessageL( const MImConversationInfo& aImMessage,TXIMPRequestId aReqId) = 0;
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
hgs
parents:
diff changeset
   103
    /**
hgs
parents:
diff changeset
   104
     * Request the protocol to send message to group.
hgs
parents:
diff changeset
   105
     *
hgs
parents:
diff changeset
   106
	 * @param [in] aImMessage 	- Identification and content of the message.
hgs
parents:
diff changeset
   107
     *		MImConversationInfo contains messageid, contenttype - text/content, content,.......  
hgs
parents:
diff changeset
   108
     * @param [in] aUserIds 	- Recipients userid.
hgs
parents:
diff changeset
   109
	 * @param [in] aReqId
hgs
parents:
diff changeset
   110
     *        Request id identifying the issued request.
hgs
parents:
diff changeset
   111
	 *
hgs
parents:
diff changeset
   112
	 * /b Note: Possible error conditions
hgs
parents:
diff changeset
   113
     *	/n	 1. Invalid user-id/recipient user does not exist [KImApiErrInvalidUserId].
hgs
parents:
diff changeset
   114
     *	/n	 2. Recipient user blocked the sender [KImApiErrSenderBlocked].
hgs
parents:
diff changeset
   115
     *	/n	 3. Unsupported message context [KImErrUnsupportedContext].
hgs
parents:
diff changeset
   116
     *	/n	 4. Message queue full [KImErrTooManyIM].
hgs
parents:
diff changeset
   117
     */
hgs
parents:
diff changeset
   118
	virtual void DoSendMessageToGroupL( const MImConversationInfo& aImMessage,
hgs
parents:
diff changeset
   119
			                                        const TDesC* aGroupId,TXIMPRequestId aReqId ) = 0;
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
/**
hgs
parents:
diff changeset
   122
     * Request the protocol to block user(s).
hgs
parents:
diff changeset
   123
     *
hgs
parents:
diff changeset
   124
     * @param [in] aUserIds - User id's need to be blocked
hgs
parents:
diff changeset
   125
     * @param [in] aReqId
hgs
parents:
diff changeset
   126
     *        Request ID identifying the issued request.
hgs
parents:
diff changeset
   127
     *    
hgs
parents:
diff changeset
   128
	 * /b Note: Possible error conditions
hgs
parents:
diff changeset
   129
     *	/n	 1. UserId doesn't exist [KImErrServiceGeneralError].
hgs
parents:
diff changeset
   130
     *	/n	 2. The maximum number of users reached for the user in the list [KImErrTooManyUsers].
hgs
parents:
diff changeset
   131
     */
hgs
parents:
diff changeset
   132
	virtual TXIMPRequestId DoBlockUsersL(const MDesCArray* aUserIds ,TXIMPRequestId aReqId) = 0;
hgs
parents:
diff changeset
   133
/**
hgs
parents:
diff changeset
   134
     * Request the protocol to UnBlock User(s).
hgs
parents:
diff changeset
   135
     *
hgs
parents:
diff changeset
   136
     * @param [in] aUserIds - User id's need to be unblocked
hgs
parents:
diff changeset
   137
     * @param [in] aReqId
hgs
parents:
diff changeset
   138
     *        Request id identifying the issued request.
hgs
parents:
diff changeset
   139
     *
hgs
parents:
diff changeset
   140
	 * /b Note: Possible error conditions
hgs
parents:
diff changeset
   141
     *	/n	 1. UserId doesn't exist [KImErrServiceGeneralError].
hgs
parents:
diff changeset
   142
     *	/n	 2. The maximum number of users reached for the user in the list [KImErrTooManyUsers].
hgs
parents:
diff changeset
   143
     */
hgs
parents:
diff changeset
   144
	virtual TXIMPRequestId DoUnBlockUsersL(const MDesCArray* aUserIds,TXIMPRequestId aReqId ) = 0;
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
    /**
hgs
parents:
diff changeset
   147
     * Request the protocol to get blocked users list from server
hgs
parents:
diff changeset
   148
     *
hgs
parents:
diff changeset
   149
     * @param [in] aImMessageId Identification for IM.
hgs
parents:
diff changeset
   150
	   * @param [in] aReqId
hgs
parents:
diff changeset
   151
     *        Request id identifying the issued request.
hgs
parents:
diff changeset
   152
     *
hgs
parents:
diff changeset
   153
	 * /b Note: Possible error conditions
hgs
parents:
diff changeset
   154
     *	/n	 1. No block list in use [KImErrServiceGeneralError].
hgs
parents:
diff changeset
   155
     */
hgs
parents:
diff changeset
   156
	virtual void DoGetBlockedListRequestL( const MXIMPIdentity& aImMessageId,
hgs
parents:
diff changeset
   157
											TXIMPRequestId aReqId ) = 0;
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
   
hgs
parents:
diff changeset
   160
    /**
hgs
parents:
diff changeset
   161
     * Request the protocol to retrieve the message-info structures of the undelivered instant messages. 
hgs
parents:
diff changeset
   162
     * May use the retrieved Message-Info structures to inform the user about the new messages, or it May
hgs
parents:
diff changeset
   163
	 * retrieve/reject/forward the instant messages automatically.
hgs
parents:
diff changeset
   164
	 * 
hgs
parents:
diff changeset
   165
     * @param [in] aImMessageId Identification for IM.
hgs
parents:
diff changeset
   166
     * @param [in] aGroupId Identifies the group to retrieve history.
hgs
parents:
diff changeset
   167
     * @param [in] aMessageCount The maximum number of message-info structures to be returned.
hgs
parents:
diff changeset
   168
     * @param [in] aDeliveryReportWanted If the user wats to order delivery report.
hgs
parents:
diff changeset
   169
	 * @param [in] aReqId
hgs
parents:
diff changeset
   170
     *        Request id identifying the issued request.
hgs
parents:
diff changeset
   171
    
hgs
parents:
diff changeset
   172
	* /b Note: Possible error conditions
hgs
parents:
diff changeset
   173
     *	/n	 1. Invalid group id [KImErrUnknownIMGroup].
hgs
parents:
diff changeset
   174
     */
hgs
parents:
diff changeset
   175
	virtual void DoGetMessageListL( const MXIMPIdentity& aImMessageId,
hgs
parents:
diff changeset
   176
			    								   	   const TDesC* aGroupId,
hgs
parents:
diff changeset
   177
			    								   	   const TInt aMessageCount,
hgs
parents:
diff changeset
   178
			                                           TBool aDeliveryReportWanted,
hgs
parents:
diff changeset
   179
			                                           TXIMPRequestId aReqId) = 0;
hgs
parents:
diff changeset
   180
	
hgs
parents:
diff changeset
   181
    /**
hgs
parents:
diff changeset
   182
     * Request the protocol to reject the accumulated messages in the server.
hgs
parents:
diff changeset
   183
     *
hgs
parents:
diff changeset
   184
     * @param [in] aImMessageId Identification for IM.
hgs
parents:
diff changeset
   185
     * @param [in] aMessageID Identifies the messages to be removed
hgs
parents:
diff changeset
   186
	   * @param [in] aReqId
hgs
parents:
diff changeset
   187
     *        Request id identifying the issued request.
hgs
parents:
diff changeset
   188
     *
hgs
parents:
diff changeset
   189
	 * /b Note: Possible error conditions
hgs
parents:
diff changeset
   190
     *	/n	 1. Invalid message-id [KImErrFieldValueNotSupported].
hgs
parents:
diff changeset
   191
     */
hgs
parents:
diff changeset
   192
	virtual void DoRejectMessageL( const MXIMPIdentity& aImMessageId,
hgs
parents:
diff changeset
   193
													const TDesC& aMessageID,
hgs
parents:
diff changeset
   194
													TXIMPRequestId aReqId ) = 0;
hgs
parents:
diff changeset
   195
	
hgs
parents:
diff changeset
   196
    
hgs
parents:
diff changeset
   197
    };
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
#endif // MPROTOCOLIMCONVERSATION_H