IMPSengine/enginc/impsservercommon.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IMPSengine/enginc/impsservercommon.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,677 @@
+/*
+* 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