IMPSengine/enginc/impsservercommon.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Feb 2010 22:44:11 +0200
branchRCL_3
changeset 6 d96c135bc497
parent 0 094583676ce7
permissions -rw-r--r--
Revision: 201002 Kit: 201007

/*
* Copyright (c) 2002-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: 
*     Definitions for engine's internal use.
*
*/


#ifndef IMPSSERVERCOMMON_H
#define IMPSSERVERCOMMON_H

#include "impsconst.h"

// CONSTANTS

const TUint KImpsServMajorVersionNumber = 3;
const TUint KImpsServMinorVersionNumber = 0;
const TUint KImpsServBuildVersionNumber = 0;

const TInt KImpsNullId = -1;

// needed for creating server thread.
const TUint KDefaultHeapSize = 0x10000;
const TUint KMaxHeapSize = 0x100000; // This is the default as in ARM

_LIT( KImpsServerName, "!CImpsServer" );
_LIT( KImpsServerExe, "impsexe.exe" );
_LIT( KImpsLibName, "impseng.dll" );

// Maximum pending messages allowed for transport
// Notice: This limits outgoing messages regardless of
//         MultiTrans in CSP session
#ifdef _FAKE_RESPONSE
const TInt KImpsMaxPending = 1;
#else
// 4=HTTP stack queue limit, try to avoid problems
const TInt KImpsMaxPending = 4;
#endif

// Default size for packed and streamed messages in Symbian client-server
const TInt KImpsStreamSize = 500;

// Threshold for IPC client buffer in bytes.
// If the current message size exceeds this limit then the buffer
// is deleted after the message is handled in a client handle.
// This buffer speeds up delivery of short messages by avoiding
// extra client-server reaquests for message buffer allocation.
const TInt KImpsIPCThreshold = 1500;

_LIT( KImpsPanicCategory, "Imps" );
_LIT( KImpsVersionStr, "http://www.wireless-village.org/CSP1.1" );
_LIT( KImpsVersionStr12, "http://www.openmobilealliance.org/WV-CSP1.2" );
_LIT( KSubListHeader, "xmlns=\"http://www.wireless-village.org/PA1.1\"" );

_LIT( KImpsDataType, "text/plain" );
_LIT( KImpsDataAndCharset, "text/plain" );

#ifdef _DEBUG
// wvengine.ini is for DEBUG mode only to allow overwriting Cent Rep values
_LIT( KImpsIniFile, "\\system\\data\\wvengine.ini" );
#endif


// Maximum lengths of strings in WV protocol
const TInt KImpsMaxTID = 50;    // maximum Transaction ID length
const TInt KImpsMaxSID = 50;    // maximum Session ID
const TInt KImpsMaxUserId = 50;    // maximum User ID
const TInt KImpsMaxClientId = 64;  // maximum Client ID, this is not sure!
const TInt KImpsMaxSAP = 255;      // maximum SAP size - updated from 200 to 255
const TInt KImpsMaxPwd = 50;       // maximum password
const TInt KImpsMaxCookie = 50;    // maximum cookie size

// default values if not given in static settings in CentRep
// *********************************************************
const TInt KImpsAcceptedContentLength = 102400;  // 100kB
const TInt KImpsParserSizeMax = 131072;  // 128kB if previous is not bigger
const TInt KImpsMultiTrans = 3;
const TInt KImpsPollTime = 8;
const TInt KImpsAliveTime = 3600;
// maximum poll time that's used for adaptive polling in seconds
const TInt KImpsMaxPoll = 90;
// Poll request time-out in seconds
const TInt KImpsPollTO = 20;
// KeepAlive request time-out in seconds
const TInt KImpsKeepATO = 20;
// Default client request expiry time in seconds
const TInt KImpsClientExpr = 40;
const TInt KImpsFundClientExpr = 120;
const TInt KImpsPresClientExpr = 120;
// Default CIR expiry time in seconds
const TInt KImpsCIRExpr = 8;
// Default Poll time in CIR mode in seconds
const TInt KImpsCIRModePollTime = 86400;  //24h
// Maximum idle time for PDP contect in seconds until it is closed
const TInt KImpsPDPMaxIdleTime = 300;
// PDP open re-try time period in seconds
const TInt KImpsPDPRetryOpenTime = 60;
// *********************************************************

// status codes from IMPS server
const TInt32 KImpsStatusOk = 200;

// Mapping used between message type and keys
const TUint32 KImpsKeySession                       = 0x0000002D;
const TUint32 KImpsKeySessionDescriptor             = 0x0000002E;
const TUint32 KImpsKeySessionType                   = 0x00000030;
const TUint32 KImpsKeySessionID                     = 0x0000002F;
const TUint32 KImpsKeyTransaction                   = 0x00000032;
const TUint32 KImpsKeyTransactionDescriptor         = 0x00000034;
const TUint32 KImpsKeyTransactionMode               = 0x00000036;
const TUint32 KImpsKeyTransactionID                 = 0x00000035;
const TUint32 KImpsKeyPoll                          = 0x00000021;
const TUint32 KImpsKeyTransactionContent            = 0x00000033;
const TUint32 KImpsKeyStatus                        = 0x00000031;
const TUint32 KImpsKeyPolling_Request               = 0x00000122;
const TUint32 KImpsKeyLogin_Request                 = 0x0000011D;
const TUint32 KImpsKeyLogin_Response                = 0x0000011E;
const TUint32 KImpsKeyService_Request               = 0x0000012E;
const TUint32 KImpsKeyService_Response              = 0x0000012F;
const TUint32 KImpsKeyClientCapability_Request      = 0x0000010C;
const TUint32 KImpsKeyClientCapability_Response     = 0x0000010D;
const TUint32 KImpsKeyLogout_Request                = 0x0000011F;
const TUint32 KImpsKeyDisconnect                    = 0x00000110;
const TUint32 KImpsKeyKeepAlive_Request             = 0x0000011B;
const TUint32 KImpsKeyKeepAlive_Response            = 0x00000129;
const TUint32 KImpsKeyGetSPInfo_Request             = 0x00000112;
const TUint32 KImpsKeyGetSPInfo_Response            = 0x00000113;
const TUint32 KImpsKeySearch_Request                = 0x0000012B;
const TUint32 KImpsKeyStopSearch_Request            = 0x00000131;
const TUint32 KImpsKeySearch_Response               = 0x0000012C;
const TUint32 KImpsKeyCompletionFlag                = 0x00000134;
const TUint32 KImpsKeyInvite_Request                = 0x00000116;
const TUint32 KImpsKeyInvite_Response               = 0x00000117;
const TUint32 KImpsKeyInviteUser_Request            = 0x00000119;
const TUint32 KImpsKeyInviteUser_Response           = 0x0000011A;
const TUint32 KImpsKeyCancelInvite_Request          = 0x00000107;
const TUint32 KImpsKeyCancelInviteUser_Request      = 0x00000108;
const TUint32 KImpsKeySubscribePresence_Request     = 0x0000041D;
const TUint32 KImpsKeyUnsubscribePresence_Request   = 0x00000418;
const TUint32 KImpsKeyPresenceNotification_Request  = 0x0000041B;
const TUint32 KImpsKeyGetWatcherList_Request        = 0x00000414;
const TUint32 KImpsKeyGetWatcherList_Response       = 0x00000415;
const TUint32 KImpsKeyGetPresence_Request           = 0x00000412;
const TUint32 KImpsKeyGetPresence_Response          = 0x00000413;
const TUint32 KImpsKeyPresenceAuth_Request          = 0x00000419;
const TUint32 KImpsKeyPresenceAuth_User             = 0x0000041A;
const TUint32 KImpsKeyCancelAuth_Request            = 0x00000405;
const TUint32 KImpsKeyUpdatePresence_Request        = 0x0000041C;
const TUint32 KImpsKeyGetList_Request               = 0x00000410;
const TUint32 KImpsKeyGetList_Response              = 0x00000411;
const TUint32 KImpsKeyCreateList_Request            = 0x00000408;
const TUint32 KImpsKeyDeleteList_Request            = 0x0000040D;
const TUint32 KImpsKeyListManage_Request            = 0x00000416;
const TUint32 KImpsKeyListManage_Response           = 0x00000417;
const TUint32 KImpsKeyCreateAttributeList_Request   = 0x00000407;
const TUint32 KImpsKeyDeleteAttributeList_Request   = 0x0000040C;
const TUint32 KImpsKeyGetAttributeList_Request      = 0x0000040E;
const TUint32 KImpsKeyGetAttributeList_Response     = 0x0000040F;
const TUint32 KImpsKeySendMessage_Request           = 0x00000617;
const TUint32 KImpsKeySendMessage_Response          = 0x00000618;
const TUint32 KImpsKeySetDeliveryMethod_Request     = 0x00000619;
const TUint32 KImpsKeyGetMessageList_Request        = 0x0000060D;
const TUint32 KImpsKeyGetMessageList_Response       = 0x0000060E;
const TUint32 KImpsKeyRejectMessage_Request         = 0x00000616;
const TUint32 KImpsKeyMessageNotification           = 0x00000614;
const TUint32 KImpsKeyGetMessage_Request            = 0x0000060F;
const TUint32 KImpsKeyGetMessage_Response           = 0x00000610;
const TUint32 KImpsKeyNewMessage                    = 0x00000615;
const TUint32 KImpsKeyMessageDelivered              = 0x00000612;
const TUint32 KImpsKeyDeliveryReport_Request        = 0x00000609;
const TUint32 KImpsKeyDeliveryTime                  = 0x0000061A;
const TUint32 KImpsKeyForwardMessage_Request        = 0x0000060A;
const TUint32 KImpsKeyGetBlockedList_Request        = 0x0000060B;
const TUint32 KImpsKeyGetBlockedList_Response       = 0x0000060C;
const TUint32 KImpsKeyBlockEntity_Request           = 0x00000606;
const TUint32 KImpsKeyCreateGroup_Request           = 0x00000707;
const TUint32 KImpsKeyDeleteGroup_Request           = 0x00000708;
const TUint32 KImpsKeyJoinGroup_Request             = 0x00000711;
const TUint32 KImpsKeyJoinGroup                     = 0x00000721;
const TUint32 KImpsKeySubscribeNotification         = 0x00000722;
const TUint32 KImpsKeyJoinGroup_Response            = 0x00000712;
const TUint32 KImpsKeyLeaveGroup_Request            = 0x00000713;
const TUint32 KImpsKeyLeaveGroup_Response           = 0x00000714;
const TUint32 KImpsKeyGetGroupMembers_Request       = 0x00000709;
const TUint32 KImpsKeyGetGroupMembers_Response      = 0x0000070A;
const TUint32 KImpsKeyAddGroupMembers_Request       = 0x00000705;
const TUint32 KImpsKeyRemoveGroupMembers_Request    = 0x0000071B;
const TUint32 KImpsKeyMemberAccess_Request          = 0x00000716;
const TUint32 KImpsKeyGetGroupProps_Request         = 0x0000070B;
const TUint32 KImpsKeyGetGroupProps_Response        = 0x0000070C;
const TUint32 KImpsKeySetGroupProps_Request         = 0x0000071C;
const TUint32 KImpsKeyRejectList_Request            = 0x00000719;
const TUint32 KImpsKeyRejectList_Response           = 0x0000071A;
const TUint32 KImpsKeySubscribeGroupNotice_Request  = 0x0000071D;
const TUint32 KImpsKeySubscribeGroupNotice_Response = 0x0000071E;
const TUint32 KImpsKeyGroupChangeNotice             = 0x0000070D;
const TUint32 KImpsKeyDigestBytes                   = 0x0000010E;
const TUint32 KImpsKeyDigestSchema                  = 0x0000010F;
const TUint32 KImpsKeyPassword                      = 0x00000121;
const TUint32 KImpsKeyNonce                         = 0x00000120;
const TUint32 KImpsKeyCapabilityRequest             = 0x0000010B;
const TUint32 KImpsKeyCapabilityList                = 0x0000010A;
const TUint32 KImpsKeyClientType                    = 0x0000050F;
const TUint32 KImpsKeyInitialDeliveryMethod         = 0x0000030B;
const TUint32 KImpsKeyAnyContent                    = 0x00000309;
const TUint32 KImpsKeyAcceptedCharSet               = 0x00000305;
const TUint32 KImpsKeyAcceptedContentType           = 0x00000307;
const TUint32 KImpsKeyAcceptedTransferEncoding      = 0x00000308;
const TUint32 KImpsKeyAcceptedContentLength         = 0x00000306;
const TUint32 KImpsKeySupportedBearer               = 0x0000030F;
const TUint32 KImpsKeyMultiTrans                    = 0x0000030C;
const TUint32 KImpsKeyParserSize                    = 0x0000030D;
const TUint32 KImpsKeySupportedCIRMethod            = 0x00000310;
const TUint32 KImpsKeyUDPPort                       = 0x00000313;
const TUint32 KImpsKeyTCPAddress                    = 0x00000311;
const TUint32 KImpsKeyTCPPort                       = 0x00000312;
const TUint32 KImpsKeyServerPollMin                 = 0x0000030E;
const TUint32 KImpsKeyDefaultLanguage               = 0x0000030A;
const TUint32 KImpsKeyResult                        = 0x0000002A;
const TUint32 KImpsKeyCode                          = 0x0000000B;
const TUint32 KImpsKeyDescription                   = 0x00000012;
const TUint32 KImpsKeyDetailedResult                = 0x00000013;
const TUint32 KImpsKeySessionCookie                 = 0x00000130;
const TUint32 KImpsKeySender                        = 0x0000002C;
const TUint32 KImpsKeyRecipient                     = 0x00000027;
const TUint32 KImpsKeyUser                          = 0x00000039;
const TUint32 KImpsKeyGroup                         = 0x00000015;
const TUint32 KImpsKeyUserID                        = 0x0000003A;
const TUint32 KImpsKeyClientID                      = 0x0000000A;
const TUint32 KImpsKeyGroupID                       = 0x00000016;
const TUint32 KImpsKeyMessageID                     = 0x0000001B;
const TUint32 KImpsKeyMessageURI                    = 0x0000001C;
const TUint32 KImpsKeyScreenName                    = 0x0000002B;
const TUint32 KImpsKeyNickName                      = 0x00000020;
const TUint32 KImpsKeyURLList                       = 0x00000038;
const TUint32 KImpsKeyURL                           = 0x00000037;
const TUint32 KImpsKeyMSISDN                        = 0x0000001D;
const TUint32 KImpsKeyGroupList                     = 0x00000017;
const TUint32 KImpsKeyUserList                      = 0x0000003B;
const TUint32 KImpsKeyContactList                   = 0x0000000C;
const TUint32 KImpsKeyDefaultContactList            = 0x0000040A;
const TUint32 KImpsKeyNickList                      = 0x0000001F;
const TUint32 KImpsKeyAddNickList                   = 0x00000007;
const TUint32 KImpsKeyRemoveNickList                = 0x00000029;
const TUint32 KImpsKeyDefaultList                   = 0x0000040B;
const TUint32 KImpsKeySearchPairList                = 0x0000012A;
const TUint32 KImpsKeySearchElement                 = 0x00000124;
const TUint32 KImpsKeySearchString                  = 0x00000133;
const TUint32 KImpsKeySearchLimit                   = 0x00000128;
const TUint32 KImpsKeySearchID                      = 0x00000126;
const TUint32 KImpsKeySearchIndex                   = 0x00000127;
const TUint32 KImpsKeySearchFindings                = 0x00000125;
const TUint32 KImpsKeySearchResult                  = 0x0000012D;
const TUint32 KImpsKeyInviteID                      = 0x00000114;
const TUint32 KImpsKeyInviteType                    = 0x00000118;
const TUint32 KImpsKeyInviteNote                    = 0x00000115;
const TUint32 KImpsKeyAcceptance                    = 0x00000005;
const TUint32 KImpsKeyResponseNote                  = 0x00000123;
const TUint32 KImpsKeyDefaultAttributeList          = 0x00000409;
const TUint32 KImpsKeyPresence                      = 0x00000022;
const TUint32 KImpsKeyPresenceSubList               = 0x00000023;
const TUint32 KImpsKeyKeepAliveTime                 = 0x0000011C;
const TUint32 KImpsKeyTimeToLive                    = 0x00000132;
const TUint32 KImpsKeySName                         = 0x00000008;
const TUint32 KImpsKeyName                          = 0x0000001E;
const TUint32 KImpsKeyValue                         = 0x0000003D;
const TUint32 KImpsKeyValidity                      = 0x0000003C;
const TUint32 KImpsKeyMessageInfo                   = 0x00000613;
const TUint32 KImpsKeyDateTime                      = 0x00000011;
const TUint32 KImpsKeyMessageCount                  = 0x0000001A;
const TUint32 KImpsKeyDeliveryReport                = 0x00000608;
const TUint32 KImpsKeyDeliveryMethod                = 0x00000607;
const TUint32 KImpsKeyBlockList                     = 0x00000605;
const TUint32 KImpsKeyGrantList                     = 0x00000611;
const TUint32 KImpsKeyEntityList                    = 0x00000014;
const TUint32 KImpsKeyAddList                       = 0x00000006;
const TUint32 KImpsKeyRemoveList                    = 0x00000028;
const TUint32 KImpsKeyInUse                         = 0x00000018;
const TUint32 KImpsKeyContactListProperties         = 0x00000406;
const TUint32 KImpsKeyGroupProperties               = 0x0000070E;
const TUint32 KImpsKeyOwnProperties                 = 0x00000718;
const TUint32 KImpsKeyProperty                      = 0x00000025;
const TUint32 KImpsKeyWelcomeNote                   = 0x00000720;
const TUint32 KImpsKeyJoinedRequest                 = 0x00000710;
const TUint32 KImpsKeyAdmin                         = 0x00000706;
const TUint32 KImpsKeyMod                           = 0x00000717;
const TUint32 KImpsKeyUsers                         = 0x0000071F;
const TUint32 KImpsKeySubscribeType                 = 0x00000723;
const TUint32 KImpsKeyJoined                        = 0x0000070F;
const TUint32 KImpsKeyLeft                          = 0x00000715;
const TUint32 KImpsKeyLogo                          = 0x00000019;
const TUint32 KImpsKeyContentType                   = 0x00000010;
const TUint32 KImpsKeyContentData                   = 0x0000000D;
const TUint32 KImpsKeyContentSize                   = 0x0000000F;
const TUint32 KImpsKeyContentEncoding               = 0x0000000E;
const TUint32 KImpsKeyAllFunctionsRequest           = 0x00000106;
const TUint32 KImpsKeyAllFunctions                  = 0x00000105;
const TUint32 KImpsKeyFunctions                     = 0x00000111;
const TUint32 KImpsKeyWVCSPFeat                     = 0x0000023C;
const TUint32 KImpsKeyFundamentalFeat               = 0x00000211;
const TUint32 KImpsKeyPresenceFeat                  = 0x0000022F;
const TUint32 KImpsKeyIMFeat                        = 0x00000223;
const TUint32 KImpsKeyGroupFeat                     = 0x0000021F;
const TUint32 KImpsKeyServiceFunc                   = 0x00000235;
const TUint32 KImpsKeySearchFunc                    = 0x00000234;
const TUint32 KImpsKeyInviteFunc                    = 0x00000227;
const TUint32 KImpsKeyContListFunc                  = 0x0000020C;
const TUint32 KImpsKeyPresenceAuthFunc              = 0x0000022D;
const TUint32 KImpsKeyPresenceDeliverFunc           = 0x0000022E;
const TUint32 KImpsKeyAttListFunc                   = 0x00000206;
const TUint32 KImpsKeyIMSendFunc                    = 0x00000225;
const TUint32 KImpsKeyIMReceiveFunc                 = 0x00000224;
const TUint32 KImpsKeyIMAuthFunc                    = 0x00000222;
const TUint32 KImpsKeyGroupMgmtFunc                 = 0x00000220;
const TUint32 KImpsKeyGroupUseFunc                  = 0x00000221;
const TUint32 KImpsKeyGroupAuthFunc                 = 0x0000021E;
const TUint32 KImpsKeyGETSPI                        = 0x0000021A;
const TUint32 KImpsKeySRCH                          = 0x00000238;
const TUint32 KImpsKeySTSRC                         = 0x00000239;
const TUint32 KImpsKeyINVIT                         = 0x00000226;
const TUint32 KImpsKeyCAINV                         = 0x00000209;
const TUint32 KImpsKeyGCLI                          = 0x00000214;
const TUint32 KImpsKeyCCLI                          = 0x0000020B;
const TUint32 KImpsKeyDCLI                          = 0x0000020F;
const TUint32 KImpsKeyMCLS                          = 0x00000229;
const TUint32 KImpsKeyGETWL                         = 0x0000021B;
const TUint32 KImpsKeyREACT                         = 0x00000230;
const TUint32 KImpsKeyCAAUT                         = 0x00000208;
const TUint32 KImpsKeyGETPR                         = 0x00000219;
const TUint32 KImpsKeyUPDPR                         = 0x0000023B;
const TUint32 KImpsKeyCALI                          = 0x0000020A;
const TUint32 KImpsKeyDALI                          = 0x0000020E;
const TUint32 KImpsKeyGALS                          = 0x00000213;
const TUint32 KImpsKeyMDELIV                        = 0x0000022A;
const TUint32 KImpsKeyFWMSG                         = 0x00000212;
const TUint32 KImpsKeySETD                          = 0x00000236;
const TUint32 KImpsKeyGETLM                         = 0x00000217;
const TUint32 KImpsKeyGETM                          = 0x00000218;
const TUint32 KImpsKeyREJCM                         = 0x00000231;
const TUint32 KImpsKeyNOTIF                         = 0x0000022C;
const TUint32 KImpsKeyNEWM                          = 0x0000022B;
const TUint32 KImpsKeyGLBLU                         = 0x0000021C;
const TUint32 KImpsKeyBLENT                         = 0x00000207;
const TUint32 KImpsKeyCREAG                         = 0x0000020D;
const TUint32 KImpsKeyDELGR                         = 0x00000210;
const TUint32 KImpsKeyGETGP                         = 0x00000216;
const TUint32 KImpsKeySETGP                         = 0x00000237;
const TUint32 KImpsKeySUBGCN                        = 0x0000023A;
const TUint32 KImpsKeyGRCHN                         = 0x0000021D;
const TUint32 KImpsKeyGETGM                         = 0x00000215;
const TUint32 KImpsKeyADDGM                         = 0x00000205;
const TUint32 KImpsKeyRMVGM                         = 0x00000233;
const TUint32 KImpsKeyMBRAC                         = 0x00000228;
const TUint32 KImpsKeyREJEC                         = 0x00000232;

const TUint32 KImpsKeyPRQualifier				    = 0x00000026;
const TUint32 KImpsKeyPRPresenceValue               = 0x00000024;
const TUint32 KImpsKeyPROnlineStatus                = 0x00000521;
const TUint32 KImpsKeyPRRegistration                = 0x00000528;
const TUint32 KImpsKeyPRFreeTextLocation            = 0x0000051A;
const TUint32 KImpsKeyPRPLMN                        = 0x00000522;
const TUint32 KImpsKeyPRUserAvailability            = 0x0000052E;
const TUint32 KImpsKeyPRPreferredLanguage           = 0x00000525;
const TUint32 KImpsKeyPRStatusText                  = 0x0000052B;
const TUint32 KImpsKeyPRStatusMood                  = 0x0000052A;
const TUint32 KImpsKeyPRAlias                       = 0x00000508;
const TUint32 KImpsKeyPRClientInfo                  = 0x0000050D;
const TUint32 KImpsKeyPRClientType                  = 0x0000050F;
const TUint32 KImpsKeyPRDevManufacturer             = 0x00000518;
const TUint32 KImpsKeyPRClientProducer              = 0x0000050E;
const TUint32 KImpsKeyPRModel                       = 0x0000051F;
const TUint32 KImpsKeyPRClientVersion               = 0x00000510;
const TUint32 KImpsKeyPRLanguage                    = 0x0000051C;
const TUint32 KImpsKeyPRTimeZone                    = 0x0000052D;
const TUint32 KImpsKeyPRZone                        = 0x00000535;
const TUint32 KImpsKeyPRGeoLocation                 = 0x0000051B;
const TUint32 KImpsKeyPRLongitude                   = 0x0000051E;
const TUint32 KImpsKeyPRLatitude                    = 0x0000051D;
const TUint32 KImpsKeyPRAltitude                    = 0x00000509;
const TUint32 KImpsKeyPRAccuracy                    = 0x00000505;
const TUint32 KImpsKeyPRAddress                     = 0x00000506;
const TUint32 KImpsKeyPRCountry                     = 0x00000515;
const TUint32 KImpsKeyPRCity                        = 0x0000050C;
const TUint32 KImpsKeyPRStreet                      = 0x0000052C;
const TUint32 KImpsKeyPRCrossing1                   = 0x00000516;
const TUint32 KImpsKeyPRCrossing2                   = 0x00000517;
const TUint32 KImpsKeyPRBuilding                    = 0x0000050A;
const TUint32 KImpsKeyPRNamedArea                   = 0x00000520;
const TUint32 KImpsKeyPRCommCap                     = 0x00000512;
const TUint32 KImpsKeyPRCommC                       = 0x00000511;
const TUint32 KImpsKeyPRCap                         = 0x0000052F;
const TUint32 KImpsKeyPRStatus                      = 0x00000031; //???????????????
const TUint32 KImpsKeyPRContact                     = 0x00000531;
const TUint32 KImpsKeyPRNote                        = 0x00000534;
const TUint32 KImpsKeyPRPreferredContacts           = 0x00000524;
const TUint32 KImpsKeyPRAddrPref                    = 0x00000507;
const TUint32 KImpsKeyPRPrefC                       = 0x00000523;
const TUint32 KImpsKeyPRCaddr                       = 0x0000050B;
const TUint32 KImpsKeyPRCstatus                     = 0x00000533;
const TUint32 KImpsKeyPRCname                       = 0x00000530;
const TUint32 KImpsKeyPRCpriority                   = 0x00000532;
const TUint32 KImpsKeyPRStatusContent               = 0x00000529;
const TUint32 KImpsKeyPRDirectContent               = 0x00000519;
const TUint32 KImpsKeyPRReferredContent             = 0x00000526;
const TUint32 KImpsKeyPRContactInfo                 = 0x00000513;
const TUint32 KImpsKeyPRContainedvCard              = 0x00000514;
const TUint32 KImpsKeyPRReferredvCard               = 0x00000527;

//////////////////////////////////////////////////////////////////////////
// CSP 1.2 additions
const TUint32 KImpsKeyAgreedCapabilityList          = 0x0000013A;
const TUint32 KImpsKeyExtended_Request              = 0x00000138;
const TUint32 KImpsKeyExtended_Response             = 0x00000139;
const TUint32 KImpsKeyExtendedData                  = 0x0000013B;
const TUint32 KImpsKeyOtherServer                   = 0x0000013C;
const TUint32 KImpsKeyPresenceAttributeNSName       = 0x0000013D;
const TUint32 KImpsKeyReceiveList                   = 0x00000136;
const TUint32 KImpsKeySessionNSName                 = 0x0000013E;
const TUint32 KImpsKeyTransactionNSName             = 0x0000013F;
const TUint32 KImpsKeyVerifyID_Request              = 0x00000137;
const TUint32 KImpsKeyMF                            = 0x0000023D;
const TUint32 KImpsKeyMG                            = 0x0000023E;
const TUint32 KImpsKeyMM                            = 0x0000023F;
const TUint32 KImpsKeyAuto_Subscribe                = 0x0000041E;
const TUint32 KImpsKeyGetReactiveAuthStatus_Request = 0x0000041F;
const TUint32 KImpsKeyGetReactiveAuthStatus_Response = 0x00000420;
const TUint32 KImpsKeyInf_link                      = 0x00000537;
const TUint32 KImpsKeyInfoLink                      = 0x00000538;
const TUint32 KImpsKeyLink                          = 0x00000539;
const TUint32 KImpsKeyText                          = 0x0000053A;
const TUint32 KImpsKeyAdminMapList                  = 0x00000726;
const TUint32 KImpsKeyAdminMapping                  = 0x00000727;
const TUint32 KImpsKeyGetJoinedUsers_Request        = 0x00000724;
const TUint32 KImpsKeyGetJoinedUsers_Respone        = 0x00000725;
const TUint32 KImpsKeyMapping                       = 0x00000728;
const TUint32 KImpsKeyUserMapList                   = 0x0000072A;
const TUint32 KImpsKeyUserMapping                   = 0x0000072B;
const TUint32 KImpsKeyGETAUT                        = 0x00000806;
const TUint32 KImpsKeyGETJU                         = 0x00000807;
const TUint32 KImpsKeyMP                            = 0x00000805;
const TUint32 KImpsKeyVRID                          = 0x00000808;
const TUint32 KImpsKeyVerifyIDFunc                  = 0x00000809;
const TUint32 KImpsKeyCIR                           = 0x00000905;
const TUint32 KImpsKeyDomain                        = 0x00000906;
const TUint32 KImpsKeyExtBlock                      = 0x00000907;
const TUint32 KImpsKeyHistoryPeriod                 = 0x00000908;
const TUint32 KImpsKeyIDList                        = 0x00000909;
const TUint32 KImpsKeyMaxWatcherList                = 0x0000090A;
const TUint32 KImpsKeyReactiveAuthState             = 0x0000090B;
const TUint32 KImpsKeyReactiveAuthStatus            = 0x0000090C;
const TUint32 KImpsKeyReactiveAuthStatusList        = 0x0000090D;
const TUint32 KImpsKeyWatcher                       = 0x0000090E;
const TUint32 KImpsKeyWatcherStatus                 = 0x0000090F;
const TUint32 KImpsKeyWV_CSPVersionDiscovery_Request  = 0x00000A05;
const TUint32 KImpsKeyWV_CSPVersionDiscovery_Response = 0x00000A06;
const TUint32 KImpsKeyVersionList                   = 0x00000A07;
//////////////////////////////////////////////////////////////////////////

const TUint32 KImpsKeyAPIClient                     = 0x0000FFFB;
const TUint32 KImpsKeyPureData                      = 0x0000FFFC;
const TUint32 KImpsKeyPRExt                         = 0x0000FFFD;
const TUint32 KImpsKeyPREND                         = 0x0000FFFE;
const TUint32 KImpsKeyEND                           = 0x0000FFFF;


// Event types (service type)
enum TImpsEventType
    {
    EImpsEventNone = 0x0000,
    EImpsEventServerLogin = 0x0001,
    EImpsEventMessage = 0x0002,
    EImpsEventPresence = 0x0004,
    EImpsEventGroup = 0x0010,
    EImpsEventCommon = 0x0100,
    EImpsEventPure = 0x01000,  // pure client
    EImpsEventPresencePure = 0x01004,
    EImpsEventAll = 0xFFFF     // special bit mask enum
    };


// Values for Message-Type field
enum TImpsMessageType
    {
    // Undefined
    EImpsMessageNone                   = 0,
    // Common
    EImpsStatus                        = KImpsKeyStatus,
    EImpsKeepAliveReq                  = KImpsKeyKeepAlive_Request,
    EImpsKeepAliveRes                  = KImpsKeyKeepAlive_Response,
    EImpsPolling                       = KImpsKeyPolling_Request,
    EImpsClientCapabilityReq           = KImpsKeyClientCapability_Request,
    EImpsClientCapabilityRes           = KImpsKeyClientCapability_Response,
    EImpsServiceReq                    = KImpsKeyService_Request,
    EImpsServiceRes                    = KImpsKeyService_Response,
    // Access
    EImpsLoginReq                      = KImpsKeyLogin_Request,
    EImpsLoginRes                      = KImpsKeyLogin_Response,
    EImpsLogoutReq                     = KImpsKeyLogout_Request,
    EImpsDisconnect                    = KImpsKeyDisconnect,
    // IM
    EImpsSendMessageReq                = KImpsKeySendMessage_Request,
    EImpsSendMessageRes                = KImpsKeySendMessage_Response,
    EImpsGetMessageReq                 = KImpsKeyGetMessage_Request,
    EImpsNewMessage                    = KImpsKeyNewMessage,
    EImpsMessageDelivered              = KImpsKeyMessageDelivered,
    EImpsGetBlockedListReq             = KImpsKeyGetBlockedList_Request,
    EImpsGetBlockedListRes             = KImpsKeyGetBlockedList_Response,
    EImpsBlockEntityReq                = KImpsKeyBlockEntity_Request,
    EImpsDeliveryReportReq             = KImpsKeyDeliveryReport_Request,
    // Presence
    EImpsSubscribePresenceReq          = KImpsKeySubscribePresence_Request,
    EImpsUnsubscribePresenceReq        = KImpsKeyUnsubscribePresence_Request,
    EImpsGetPresenceReq                = KImpsKeyGetPresence_Request,
    EImpsGetPresenceRes                = KImpsKeyGetPresence_Response,
    EImpsUpdatePresenceReq             = KImpsKeyUpdatePresence_Request,
    EImpsPresenceNotification          = KImpsKeyPresenceNotification_Request,
    EImpsCreateAttrListReq             = KImpsKeyCreateAttributeList_Request,
    EImpsPresenceAuthReq               = KImpsKeyPresenceAuth_Request,
    EImpsGetWatcherListReq             = KImpsKeyGetWatcherList_Request,
    EImpsGetWatcherListRes             = KImpsKeyGetWatcherList_Response,
    EImpsPresenceAuthUser              = KImpsKeyPresenceAuth_User,
    EImpsCancelAuthReq                 = KImpsKeyCancelAuth_Request,
    EImpsGetListReq                    = KImpsKeyGetList_Request,
    EImpsGetListRes                    = KImpsKeyGetList_Response,
    EImpsCreateListReq                 = KImpsKeyCreateList_Request,
    EImpsDeleteListReq                 = KImpsKeyDeleteList_Request,
    EImpsListManageReq                 = KImpsKeyListManage_Request,
    EImpsListManageRes                 = KImpsKeyListManage_Response,
    EImpsDeleteAttrListReq             = KImpsKeyDeleteAttributeList_Request,
    EImpsGetAttrListReq                = KImpsKeyGetAttributeList_Request,
    EImpsGetAttrListRes                = KImpsKeyGetAttributeList_Response,
    // CSP 1.2
    EImpsGetReactiveAuthStatusReq      = KImpsKeyGetReactiveAuthStatus_Request,
    EImpsGetReactiveAuthStatusRes      = KImpsKeyGetReactiveAuthStatus_Response,

    // Group
    EImpsCreateGroupReq                = KImpsKeyCreateGroup_Request,
    EImpsDeleteGroupReq                = KImpsKeyDeleteGroup_Request,
    EImpsJoinGroupReq                  = KImpsKeyJoinGroup_Request,
    EImpsJoinGroupRes                  = KImpsKeyJoinGroup_Response,
    EImpsLeaveGroupReq                 = KImpsKeyLeaveGroup_Request,
    EImpsLeaveGroupRes                 = KImpsKeyLeaveGroup_Response,
    EImpsGroupMembersReq               = KImpsKeyGetGroupMembers_Request,
    EImpsGroupMembersRes               = KImpsKeyGetGroupMembers_Response,
    EImpsAddGroupMembersReq            = KImpsKeyAddGroupMembers_Request,
    EImpsRemoveGroupMembersReq         = KImpsKeyRemoveGroupMembers_Request,
    EImpsGroupMemberAccessReq          = KImpsKeyMemberAccess_Request,
    EImpsGroupPropertiesReq            = KImpsKeyGetGroupProps_Request,
    EImpsGroupPropertiesRes            = KImpsKeyGetGroupProps_Response,
    EImpsSetGroupPropertiesReq         = KImpsKeySetGroupProps_Request,
    EImpsGroupRejectListReq            = KImpsKeyRejectList_Request,
    EImpsGroupRejectListRes            = KImpsKeyRejectList_Response,
    EImpsSubsGroupNoticeReq            = KImpsKeySubscribeGroupNotice_Request,
    EImpsSubsGroupNoticeRes            = KImpsKeySubscribeGroupNotice_Response,
    EImpsGroupChangeNotice             = KImpsKeyGroupChangeNotice,
    // CSP 1.2
    EImpsGetJoinedUsersReq             = KImpsKeyGetJoinedUsers_Request,
    EImpsGetJoinedUsersRes             = KImpsKeyGetJoinedUsers_Respone,


    // Fundamental
    EImpsSearchReq                     = KImpsKeySearch_Request,
    EImpsStopSearchReq                 = KImpsKeyStopSearch_Request,
    EImpsSearchRes                     = KImpsKeySearch_Response,
    EImpsInviteReq                     = KImpsKeyInvite_Request,
    EImpsInviteRes                     = KImpsKeyInvite_Response,
    EImpsInviteUserReq                 = KImpsKeyInviteUser_Request,
    EImpsInviteUserRes                 = KImpsKeyInviteUser_Response,
    EImpsCancelInviteReq               = KImpsKeyCancelInvite_Request,
    EImpsCancelInviteUserReq           = KImpsKeyCancelInviteUser_Request,
    // CSP 1.2
    EImpsVerifyIDReq                   = KImpsKeyVerifyID_Request,

    // Pure data
    EImpsPureData                      = KImpsKeyPureData,
    // THE FOLLOWING ONES ARE NOT REAL PRIMITIVES BUT USED
    // INTERNALLY IN ENGINE
    EImpsSubsGroupNoticeUnset          = KImpsKeyEND + 1,
    EImpsSubsGroupNoticeGet            = KImpsKeyEND + 2,
    EImpsSubsGroupNoticeSet            = KImpsKeyEND + 3,
    EImpsNewUsers                      = KImpsKeyEND + 4,
    EImpsLeftUsers                     = KImpsKeyEND + 5
    };

// This is also in client API with different name, but if we split into dlls
// then this is better to be in this way. Or move to impsconst.h.
enum EImpsInternalStatus
    {
    EInternal_ON_LINE,
    EInternal_OFF_LINE,
    EInternal_NOT_LOGGED,
    EInternal_NO_IAP,
    EInternal_NO_IAP_AUTH,
    EInternal_IAP_OPEN,
    EInternal_SHUTTING_DOWN
    };

// Signal in process set up
class TImpsSignal
    {
    public:
        inline TImpsSignal();
        inline TInt Set( const TDesC& aData );
        inline TImpsSignal( TInt aRate );
        inline TPtrC Get() const;
        TRequestStatus* iStatus;
        TThreadId iId;
        TInt iRate;
    };

inline TImpsSignal::TImpsSignal()
        : iStatus( NULL ), iRate( 0 ) {}

inline TImpsSignal::TImpsSignal( TInt aRate )
        : iStatus( NULL ), iId( RThread().Id() ), iRate( aRate )
    {  }

inline TPtrC TImpsSignal::Get() const
    {
    return TPtrC( ( const TText* )this, sizeof( *this ) / sizeof( TText ) );
    }

inline TInt TImpsSignal::Set( const TDesC& aData )
    {
    return aData.Size() != sizeof( *this ) ?
           KErrGeneral :
           ( Mem::Copy( this, aData.Ptr(), sizeof( *this ) ), KErrNone );
    }

// Parameter passing for the launcher process
class TImpsLaunchParams
    {
    public:
        inline TImpsLaunchParams () {};
        inline TImpsLaunchParams(
            const TDesC& aAppID,
            const TDesC& aSAP,
            const TDesC& aUserID );
        inline TInt Set( const TDesC& aData );
        inline TPtrC Get() const;

        // data
        TBuf<KImpsMaxClientId> 			iApplicationId;
        TBuf<KImpsMaxSAP>            	iSAP;
        TBuf<KImpsMaxUserId>         	iUserId;
    };

inline TImpsLaunchParams::TImpsLaunchParams( const TDesC& aAppID,
                                             const TDesC& aSAP,
                                             const TDesC& aUserID )
        : iApplicationId( aAppID ), iSAP( aSAP ),  iUserId( aUserID ) {}

inline TPtrC TImpsLaunchParams::Get() const
    {
    return TPtrC( ( const TText* )this, sizeof( *this ) / sizeof( TText ) );
    }

inline TInt TImpsLaunchParams::Set( const TDesC& aData )
    {
    return aData.Size() != sizeof( *this ) ?
           KErrGeneral :
           ( Mem::Copy( this, aData.Ptr(), sizeof( *this ) ), KErrNone );
    }
#endif      // ?INCLUDE_H   

// End of File