connectivity/com.nokia.tcf/native/TCFNative/TCFServer/MessageFile.h
author fturovic <frank.turovich@nokia.com>
Thu, 14 May 2009 16:28:33 -0500
changeset 152 9e83cc047260
parent 60 9d2210c8eed2
permissions -rw-r--r--
bug 8066 - revised image and option description for dynamic variants
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     1
/*
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     3
* All rights reserved.
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     4
* This component and the accompanying materials are made available
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     6
* which accompanies this distribution, and is available
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     8
*
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
     9
* Initial Contributors:
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    11
*
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    12
* Contributors:
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    13
*
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    14
* Description: 
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    15
*
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    16
*/
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    17
// MessageFile.h: interface for the CMessageFile class.
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    18
//
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    19
// One per client
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    20
//////////////////////////////////////////////////////////////////////
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    21
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    22
#if !defined(AFX_MESSAGEFILE_H__1049F760_2A8A_491F_A868_B063D52B18E8__INCLUDED_)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    23
#define AFX_MESSAGEFILE_H__1049F760_2A8A_491F_A868_B063D52B18E8__INCLUDED_
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    24
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    25
#include <share.h>
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    26
#include "stdio.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    27
#include "mutex.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    28
//#include "ServerClient.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    29
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    30
#if _MSC_VER > 1000
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    31
#pragma once
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    32
#endif // _MSC_VER > 1000
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    33
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    34
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    35
//----------------------------------
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    36
// Message File Mutex
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    37
//----------------------------------
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    38
// Mutex name is basename + clientID
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    39
#define MESSAGEFILE_MUTEX_BASENAME		"TCFMessageFileMutex"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    40
#define MESSAGEFILE_MUTEX_TIMEOUT		(60000L)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    41
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    42
class CMessageFile  
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    43
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    44
public:
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    45
	CMessageFile(CHAR* pFilePath, long inClientID);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    46
	virtual ~CMessageFile();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    47
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    48
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    49
	long Open();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    50
	long Close();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    51
	long AddMessage(DWORD inLength, BYTE* inMessage);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    52
	void UnLockMessageFile() { ReleaseAccess(); }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    53
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    54
	BOOL WaitForAccess() { if (m_FileLocked) return TRUE; else { m_FileLocked = TRUE; return m_Mutex.Wait();} };
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    55
	BOOL ReleaseAccess() { if (m_FileLocked) { m_FileLocked = FALSE; return m_Mutex.Release();} else return TRUE; };
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    56
	BOOL isOpen() { return m_Open; }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    57
	long ClearFile();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    58
	void FlushFile(BOOL numberTimeOut = FALSE);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    59
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    60
	long m_ClientID;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    61
	BOOL m_Open;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    62
	Mutex m_Mutex;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    63
	CHAR m_FilePath[MAX_FILEPATH];
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    64
	BOOL m_FileLocked;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    65
	FILE* m_hFile;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    66
	DWORD m_numWritten;		// total number written
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    67
	DWORD m_numWrittenSinceLastFlush;	// number written and not flushed yet
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    68
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    69
	// logging performance
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    70
// for performance - independent of debug logging
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    71
//#define LOG_FILE_PERFORMANCE
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    72
#ifdef LOG_FILE_PERFORMANCE
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    73
	char* perfFileName;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    74
	FILE *fpLog;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    75
	int numLogged;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    76
	void logPerf(char* msg);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    77
	void openPerf();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    78
	void closePerf();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    79
#define OPENFILEPERF() openPerf()
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    80
#define LOGFILEPERF(s) logPerf(s)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    81
#define CLOSEFILEPERF() closePerf()
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    82
#else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    83
#define OPENFILEPERF()
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    84
#define LOGFILEPERF(s)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    85
#define CLOSEFILEPERF()
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    86
#endif
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    87
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    88
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    89
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    90
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    91
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    92
#endif // !defined(AFX_MESSAGEFILE_H__1049F760_2A8A_491F_A868_B063D52B18E8__INCLUDED_)