diff -r c892c53c664e -r 9d2210c8eed2 connectivity/com.nokia.tcf/native/TCFNative/TCFServer/MessageFile.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/connectivity/com.nokia.tcf/native/TCFNative/TCFServer/MessageFile.h Mon Apr 06 15:18:48 2009 -0500 @@ -0,0 +1,92 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* +*/ +// MessageFile.h: interface for the CMessageFile class. +// +// One per client +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_MESSAGEFILE_H__1049F760_2A8A_491F_A868_B063D52B18E8__INCLUDED_) +#define AFX_MESSAGEFILE_H__1049F760_2A8A_491F_A868_B063D52B18E8__INCLUDED_ + +#include +#include "stdio.h" +#include "mutex.h" +//#include "ServerClient.h" + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + +//---------------------------------- +// Message File Mutex +//---------------------------------- +// Mutex name is basename + clientID +#define MESSAGEFILE_MUTEX_BASENAME "TCFMessageFileMutex" +#define MESSAGEFILE_MUTEX_TIMEOUT (60000L) + +class CMessageFile +{ +public: + CMessageFile(CHAR* pFilePath, long inClientID); + virtual ~CMessageFile(); + + + long Open(); + long Close(); + long AddMessage(DWORD inLength, BYTE* inMessage); + void UnLockMessageFile() { ReleaseAccess(); } + + BOOL WaitForAccess() { if (m_FileLocked) return TRUE; else { m_FileLocked = TRUE; return m_Mutex.Wait();} }; + BOOL ReleaseAccess() { if (m_FileLocked) { m_FileLocked = FALSE; return m_Mutex.Release();} else return TRUE; }; + BOOL isOpen() { return m_Open; } + long ClearFile(); + void FlushFile(BOOL numberTimeOut = FALSE); + + long m_ClientID; + BOOL m_Open; + Mutex m_Mutex; + CHAR m_FilePath[MAX_FILEPATH]; + BOOL m_FileLocked; + FILE* m_hFile; + DWORD m_numWritten; // total number written + DWORD m_numWrittenSinceLastFlush; // number written and not flushed yet + + // logging performance +// for performance - independent of debug logging +//#define LOG_FILE_PERFORMANCE +#ifdef LOG_FILE_PERFORMANCE + char* perfFileName; + FILE *fpLog; + int numLogged; + void logPerf(char* msg); + void openPerf(); + void closePerf(); +#define OPENFILEPERF() openPerf() +#define LOGFILEPERF(s) logPerf(s) +#define CLOSEFILEPERF() closePerf() +#else +#define OPENFILEPERF() +#define LOGFILEPERF(s) +#define CLOSEFILEPERF() +#endif + + + +}; + +#endif // !defined(AFX_MESSAGEFILE_H__1049F760_2A8A_491F_A868_B063D52B18E8__INCLUDED_)