--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/IMPSengine/datautils/src/impsutils.cpp Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,257 @@
+/*
+* 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:
+* logger for imps client.
+*
+*/
+
+
+// INCLUDE FILES
+#include <e32std.h>
+#ifdef _DEBUG
+#include <flogger.h>
+#endif
+#include "impsutils.h"
+#include "impsservercommon.h"
+#include "impsservices.h"
+#include "ImpsVariantAPI.h"
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+
+
+//**********************************
+// CImpsClientLogger
+//**********************************
+const TInt KLogBufferLength = 356;
+//_LIT(KLogDir, "impsc");
+//_LIT(KLogFile, "impsc.txt");
+
+EXPORT_C void CImpsClientLogger::Log(TRefByValue<const TDesC> aFmt,...)
+ {
+ VA_LIST list;
+ VA_START(list, aFmt);
+
+ // Print to log file
+ TBuf<KLogBufferLength> buf;
+ buf.FormatList(aFmt, list);
+
+#ifdef _DEBUG
+ _LIT(KLogDir, "impsc");
+ _LIT(KLogFile, "impsc.txt");
+ // Write to log file
+ RFileLogger::Write(KLogDir, KLogFile, EFileLoggingModeAppend, buf);
+ RDebug::RawPrint( buf );
+#endif
+
+ }
+
+
+//**********************************
+// CImpsSettingFile
+//**********************************
+
+EXPORT_C CImpsSettingFile* CImpsSettingFile::NewL(
+ RFs& aFs )
+ {
+ CImpsSettingFile* self = new (ELeave) CImpsSettingFile( aFs );
+ return self;
+ }
+
+EXPORT_C CImpsSettingFile::~CImpsSettingFile()
+ {
+ if ( iOpen )
+ {
+ iReader.Close();
+ }
+ iOpen = EFalse;
+ }
+
+CImpsSettingFile::CImpsSettingFile( RFs& aFs)
+: iFs( aFs ),
+ iOpen( EFalse )
+ {
+
+ }
+
+EXPORT_C void CImpsSettingFile::OpenL(TDesC& aResFile)
+ {
+ // open a file
+ iFileName = aResFile;
+
+ TInt myError = iReader.Open( iFs,
+ iFileName,
+ EFileShareReadersOnly );
+
+ User::LeaveIfError( myError );
+ iOpen = ETrue;
+
+ }
+
+EXPORT_C TPtrC8 CImpsSettingFile::KeyValueL( const TDesC8& aKey )
+ {
+
+ TPtrC8 myKey;
+ TPtrC8 myValue;
+ TBool getIt(EFalse);
+ TInt err = 0;
+
+ // Reset the reader
+ OpenL( iFileName );
+
+ // Start to search
+ while ( !getIt)
+ {
+ TRAP ( err, ReadRowL( myKey, myValue ));
+ if ( err != KErrNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ if ( !myKey.CompareF( aKey ))
+ {
+ return myValue;
+ }
+ }
+ return TPtrC8();
+ }
+
+void CImpsSettingFile::ReadRowL( TPtrC8& aKey, TPtrC8& aValue )
+ {
+ // READ ONE ROW
+ TChar delim( 10 );
+ iReader.ReadL( iRowBuffer, delim);
+ TInt length = iRowBuffer.Length();
+ if ( length > 2 )
+ {
+ // DROP CR+LF FROM THE END OF LINE
+ iRowBuffer.Delete( length - 2, 2 );
+
+ TInt pos = 0;
+ pos = iRowBuffer.Find( _L8("=") );
+ if ( pos > 0 )
+ {
+ aKey.Set( iRowBuffer.Left( pos ) );
+ // Cut off separator
+ aValue.Set( iRowBuffer.Mid( pos + 1 ) );
+ }
+ }
+ }
+
+//**********************************
+// impsService
+//**********************************
+
+EXPORT_C GLDEF_C TImpsEventType impsService( const CImpsVariant* /*aVariant*/,
+ TImpsMessageType aMessage )
+ {
+ TImpsEventType event(EImpsEventNone);
+ // Notice: update this table when new methods supported
+
+
+ switch ( aMessage )
+ {
+ case EImpsLoginReq:
+ case EImpsLoginRes:
+ case EImpsLogoutReq:
+ case EImpsDisconnect:
+ case EImpsClientCapabilityReq: // this is not mistake,
+ // part of login procedure
+ case EImpsServiceReq: // Same here.
+ event = EImpsEventServerLogin;
+ break;
+ // IM
+ case EImpsSendMessageReq:
+ case EImpsSendMessageRes:
+ case EImpsGetMessageReq:
+ case EImpsNewMessage:
+ case EImpsMessageDelivered:
+ case EImpsGetBlockedListReq:
+ case EImpsGetBlockedListRes:
+ case EImpsBlockEntityReq:
+ case EImpsDeliveryReportReq:
+ event = EImpsEventMessage;
+ break;
+ // Presence
+ case EImpsSubscribePresenceReq:
+ case EImpsUnsubscribePresenceReq:
+ case EImpsGetPresenceReq:
+ case EImpsGetPresenceRes:
+ case EImpsUpdatePresenceReq:
+ case EImpsPresenceNotification:
+ case EImpsCreateAttrListReq:
+ case EImpsPureData:
+ case EImpsGetWatcherListReq:
+ case EImpsGetWatcherListRes:
+ case EImpsPresenceAuthReq:
+ case EImpsPresenceAuthUser:
+ case EImpsCancelAuthReq:
+ case EImpsGetListReq:
+ case EImpsGetListRes:
+ case EImpsCreateListReq:
+ case EImpsDeleteListReq:
+ case EImpsListManageReq:
+ case EImpsListManageRes:
+ case EImpsDeleteAttrListReq:
+ case EImpsGetAttrListReq:
+ case EImpsGetAttrListRes:
+ event = EImpsEventPresence;
+ break;
+ // Group
+ case EImpsCreateGroupReq:
+ case EImpsDeleteGroupReq:
+ case EImpsJoinGroupReq:
+ case EImpsJoinGroupRes:
+ case EImpsLeaveGroupReq:
+ case EImpsLeaveGroupRes:
+ case EImpsGroupMembersReq:
+ case EImpsGroupMembersRes:
+ case EImpsAddGroupMembersReq:
+ case EImpsRemoveGroupMembersReq:
+ case EImpsGroupMemberAccessReq:
+ case EImpsGroupPropertiesReq:
+ case EImpsGroupPropertiesRes:
+ case EImpsSetGroupPropertiesReq:
+ case EImpsGroupRejectListReq:
+ case EImpsGroupRejectListRes:
+ case EImpsSubsGroupNoticeReq:
+ case EImpsSubsGroupNoticeRes:
+ case EImpsGroupChangeNotice:
+ case EImpsSubsGroupNoticeUnset:
+ case EImpsSubsGroupNoticeGet:
+ case EImpsSubsGroupNoticeSet:
+ case EImpsNewUsers:
+ case EImpsLeftUsers:
+ event = EImpsEventGroup;
+ break;
+ // Fundamental
+ case EImpsSearchReq:
+ case EImpsStopSearchReq:
+ case EImpsSearchRes:
+ case EImpsInviteReq:
+ case EImpsInviteRes:
+ case EImpsInviteUserReq:
+ case EImpsInviteUserRes:
+ case EImpsCancelInviteReq:
+ case EImpsCancelInviteUserReq:
+ event = EImpsEventCommon;
+ break;
+ default:
+ event = EImpsEventNone;
+ }
+ return event;
+ }
+
+// End of File
+