connectivity/com.nokia.tcf/native/TCFNative/TCFClient/ClientManager.h
author Chad Peckham <chad.peckham@nokia.com>
Wed, 10 Feb 2010 14:32:22 -0600
branchRCL_2_4
changeset 916 6743933eec70
parent 60 9d2210c8eed2
child 1481 c7f22cc57d44
permissions -rw-r--r--
Fix for TCFServer life-cycle issues bug 10621
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
// ClientManager.h: interface for the CClientManager 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
//////////////////////////////////////////////////////////////////////
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    20
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    21
#if !defined(AFX_CLIENTMANAGER_H__D8CD8281_5D57_43E9_922D_9532DC8669C4__INCLUDED_)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    22
#define AFX_CLIENTMANAGER_H__D8CD8281_5D57_43E9_922D_9532DC8669C4__INCLUDED_
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    23
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    24
#if _MSC_VER > 1000
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    25
#pragma once
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    26
#endif // _MSC_VER > 1000
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    27
#include <vector>
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    28
#include <list>
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    29
#include "ServerClient.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    30
#include "InputStream.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    31
#include "ErrorMonitorData.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    32
#include "TCErrorConstants.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    33
#include "TCDebugLog.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    34
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    35
typedef std::vector<CInputStream*> InputStreamList;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    36
typedef std::vector<CErrorMonitor*> ErrorMonitorList;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    37
//typedef std::vector<CInputStream> InputStreamList;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    38
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    39
#define ERRORMONITORLIST_MUTEX_BASENAME		"TCFErrorMonitorList"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    40
#define ERRORMONITORLIST_MUTEX_TIMEOUT		(60000L)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    41
#define INPUTSTREAMLIST_MUTEX_BASENAME		"TCFInputStreamList"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    42
#define INPUTSTREAMLIST_MUTEX_TIMEOUT		(60000L)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    43
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    44
#ifdef WIN32
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    45
#define SERVER_PROCESS_NAME		"TCFServer.exe"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    46
#define SERVER_LOCKFILE_NAME	"TCFServer.lock"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    47
#define PATH_DELIMITER			'\\'
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    48
#else
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    49
#error not WIN32
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    50
#endif
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    51
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    52
#define MAX_DLLPATHNAME (2048)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    53
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    54
class CClientManager  
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    55
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    56
public:
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    57
	CClientManager();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    58
	CClientManager(HINSTANCE hinstDLL);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    59
	virtual ~CClientManager();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    61
	// starting/stopping server
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    62
	BOOL StartServer(pServerProcessData pData);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    63
	BOOL StopServer(pServerProcessData pData);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    64
	long StartServer();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    65
	long StopServer();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    66
	BOOL IsServerRunning(); // { return m_ServerRunning; }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    67
	BOOL m_ServerRunning;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    68
	void TerminateServerThroughLockFile(pServerProcessData pData);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    69
	void CreateLockFile(DWORD processId);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    70
	void AppendToLockFile(DWORD processId);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    71
	void DeleteLockFile();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    72
	void DeleteFromLockFile(DWORD processId);
916
6743933eec70 Fix for TCFServer life-cycle issues bug 10621
Chad Peckham <chad.peckham@nokia.com>
parents: 60
diff changeset
    73
	BOOL IsTCFServerActive(DWORD processId);
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    74
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    75
	// input stream
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    76
	CInputStream* FindInputStream(long inClientId);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    77
	long InputStreamListSize();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    78
	void RemoveInputStream(CInputStream* inputStream);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    79
	void AddInputStream(CInputStream* stream);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    80
	BOOL WaitForStreamListAccess() { return m_StreamListMutex.Wait(); }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    81
	BOOL ReleaseStreamListAccess() { return m_StreamListMutex.Release(); }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    82
	Mutex m_StreamListMutex;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    83
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    84
	// error monitors
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    85
	CErrorMonitor* FindErrorMonitor(long inClientId);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    86
	long ErrorMonitorListSize();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    87
	void RemoveErrorMonitor(CErrorMonitor* errorMonitor);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    88
	void AddErrorMonitor(CErrorMonitor* monitor);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    89
	BOOL WaitForErrorMonitorListAccess() { return m_ErrorMonitorListMutex.Wait(); }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    90
	BOOL ReleaseErrorMonitorListAccess() { return m_ErrorMonitorListMutex.Release(); }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    91
	Mutex m_ErrorMonitorListMutex;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    92
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    93
	CServerCommand* m_Server;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    94
	TCDebugLog* m_DebugLog;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    95
	InputStreamList* m_StreamList;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    96
	ErrorMonitorList* m_ErrorMonitorList;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    97
	char* m_DllLocation;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    98
	HANDLE m_hServer;			// our handle to the server process (per process)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    99
	HANDLE m_hServerThread;		// handle to server main thread (creator process only)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   100
	char m_Version[MAX_VERSION_STRING]; // our version string
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   101
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   102
	char* m_ServerLockFile; // TCFServer lock file name at the DLL location
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   103
	char* m_ServerExeFile;	// TCFServer exe
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   104
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   105
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   106
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   107
#endif // !defined(AFX_CLIENTMANAGER_H__D8CD8281_5D57_43E9_922D_9532DC8669C4__INCLUDED_)