/*
* 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:  Presence Engine consts to be used by the clients.
*
*/

#ifndef __PENGPRESENCEENGINECONSTS2_H
#define __PENGPRESENCEENGINECONSTS2_H

//  INCLUDES
#include <E32Def.h>



// CONSTANTS

/**
 * Max length definitions for NWSessionSlotID
 * sub-parts and other related ID's.
 * @since 3.0
 */
const TInt KPEngMaxServiceAddressLength = 256;
const TInt KPEngMaxUserIdLength = 50;
const TInt KPEngMaxAppIdLength = 10;
const TInt KPEngMaxNWSessionOwnerID = 10;



/**
 * Unknown search element.
 * @since 3.0
 */
const TInt KPEngNullSearchElement = -1;



/**
 * NULL attribute type.
 *
 * @since 3.0
 */
const TUint32 KPEngNullAttributeType = 0x0;




/**
 * User own presence ID.
 *
 * Following lit is used to identify user own
 * presence attributes, e.g. when requesting
 * attribute notifications.
 *
 * @since 3.0
 */
_LIT( KPEngUserOwnPresenceId, "" );


/**
 * NWSessionSlot Application ID: IM
 *
 * This is used with CPEngNWSessionSlotID2 to
 * identify that IM application is using the
 * NWSessionSlot.
 *
 * @since 3.0
 */
_LIT( KPEngAppIdIM, "IM" );


/**
 * NWSessionSlot Application ID: PEC
 *
 * This is used with CPEngNWSessionSlotID2 to
 * identify that PEC applications are using the
 * NWSessionSlot.
 *
 * @since 3.0
 */
_LIT( KPEngAppIdPEC, "PEC" );






// EVENT AND OPERATION ENUMERATIONS


/**
 * NWSessionSlot event enumeration.
 *
 * @since 3.0
 */
enum TPEngNWSessionSlotEvent
    {
    //Pseudo empty event
    EPEngEventNone = 0,

    //New slot created
    EPEngEventNWSessionSlotCreated = 1,

    //Slot configured
    EPEngEventNWSessionSlotChanged = 2,

    //Slot removed
    EPEngEventNWSessionSlotRemoved = 3,

    //Network Presence Session opened from the slot
    EPEngEventAppNWPresenceSessionOpened = 4,

    //Network Presence Session closed from the slot
    EPEngEventAppNWPresenceSessionClosed = 5,

    //Network Server closed session
    EPEngEventNWSessionClosedByServer = 6,

    //Network Presence Session transport signalled event
    //EventInt and EventDes describe further the actual event
    EPEngEventNWSessionTransport = 7
    };





/**
 * NWSessionSlot state enumeration.
 *
 * @since 3.0
 */
enum TPEngNWSessionSlotState
    {
    // No network presence session open from NWSessionSlot.
    EPEngNWPresenceSessionClosed = 1,

    // Application network presence session open from NWSessionSlot.
    EPEngNWPresenceSessionOpen = 2
    };







/**
 * NWSessionSlot operation ID's.
 *
 * These NWSessionSlot operation IDs are visible for clients in:
 * 1) Transaction result entries, see
 *    - MPEngTransactionStatus2
 *
 * 2) Operation event callbacks, see
 *    - MPEngNWSessionOperationObserver2
 *
 * Internally Presence Engine uses these ID's
 * to manage NWSessionSlot operations.
 *
 * @since 3.0
 */
enum TPEngNWSessionSlotOperations
    {
    //Presence network session opening operation
    EPEngNWSSOpNWSessionOpen = 1,


    //Presence network session closing operation
    EPEngNWSSOpNWSessionClose = 2
    };







/**
 * Transaction operation ID's.
 *
 * These transaction operation IDs are visible for clients in:
 * 1) Transaction result entries, see
 *    - MPEngTransactionStatus2
 *
 * 2) Operation event callbacks, see
 *    - MPEngContactListTransactionObserver2
 *    - MPEngAttributeListTransactionObserver2
 *    - MPEngAttributeTransactionObserver2
 *
 * Internally Presence Engine uses these ID's
 * to manage transaction operations.
 *
 * @since 3.0
 */
enum TPEngTransactionOperation
    {
    //Publish own presence attributes
    EPEngTransOpOwnAttributePublish = 51,

    //Fetch Presence Attributes to cache
    EPEngTransOpAttributeFetchToCache = 52,

    //Fetch Presence Attributes to objects
    EPEngTransOpAttributeFetchToObjects = 53,



    // Synchronize Attribute base things, default attribute list
    EPEngTransOpAttrListBaseSynchronize = 101,

    // Sychronize attribut elist for contact list
    EPEngTransOpAttrListSyncForCntList = 102,

    //Publish Attribute lists
    EPEngTransOpAttrListPublish = 103,


    //Synchronize Contact List base things (list of lists)
    EPEngTransOpCntListBaseSync = 150,

    //Update contact list
    EPEngTransOpCntListUpdateList = 151,

    //Synchronize contact list
    EPEngTransOpCntListSyncList = 152,

    //Network search start
    EPEngTransOpNetworkSearchStart = 200,

    //Network continue search
    EPEngTransOpNetworkSearchContinue = 201,

    //Network search stop
    EPEngTransOpNetworkSearchStop = 202,

    // Respond to Autorization Requests
    EPEngTransOpAuthorizationResponse = 250
    };





#endif //__PENGPRESENCEENGINECONSTS2_H


