60
|
1 |
/*
|
|
2 |
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
|
3 |
* All rights reserved.
|
|
4 |
* This component and the accompanying materials are made available
|
|
5 |
* under the terms of the License "Eclipse Public License v1.0"
|
|
6 |
* which accompanies this distribution, and is available
|
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
|
8 |
*
|
|
9 |
* Initial Contributors:
|
|
10 |
* Nokia Corporation - initial contribution.
|
|
11 |
*
|
|
12 |
* Contributors:
|
|
13 |
*
|
|
14 |
* Description:
|
|
15 |
*
|
|
16 |
*/
|
|
17 |
// ClientManager.h: interface for the CClientManager class.
|
|
18 |
//
|
|
19 |
//////////////////////////////////////////////////////////////////////
|
|
20 |
|
|
21 |
#if !defined(AFX_CLIENTMANAGER_H__D8CD8281_5D57_43E9_922D_9532DC8669C4__INCLUDED_)
|
|
22 |
#define AFX_CLIENTMANAGER_H__D8CD8281_5D57_43E9_922D_9532DC8669C4__INCLUDED_
|
|
23 |
|
|
24 |
#if _MSC_VER > 1000
|
|
25 |
#pragma once
|
|
26 |
#endif // _MSC_VER > 1000
|
|
27 |
#include <vector>
|
|
28 |
#include <list>
|
|
29 |
#include "ServerClient.h"
|
|
30 |
#include "InputStream.h"
|
|
31 |
#include "ErrorMonitorData.h"
|
|
32 |
#include "TCErrorConstants.h"
|
|
33 |
#include "TCDebugLog.h"
|
|
34 |
|
|
35 |
typedef std::vector<CInputStream*> InputStreamList;
|
|
36 |
typedef std::vector<CErrorMonitor*> ErrorMonitorList;
|
|
37 |
//typedef std::vector<CInputStream> InputStreamList;
|
|
38 |
|
|
39 |
#define ERRORMONITORLIST_MUTEX_BASENAME "TCFErrorMonitorList"
|
|
40 |
#define ERRORMONITORLIST_MUTEX_TIMEOUT (60000L)
|
|
41 |
#define INPUTSTREAMLIST_MUTEX_BASENAME "TCFInputStreamList"
|
|
42 |
#define INPUTSTREAMLIST_MUTEX_TIMEOUT (60000L)
|
|
43 |
|
|
44 |
#ifdef WIN32
|
|
45 |
#define SERVER_PROCESS_NAME "TCFServer.exe"
|
|
46 |
#define SERVER_LOCKFILE_NAME "TCFServer.lock"
|
|
47 |
#define PATH_DELIMITER '\\'
|
|
48 |
#else
|
|
49 |
#error not WIN32
|
|
50 |
#endif
|
|
51 |
|
|
52 |
#define MAX_DLLPATHNAME (2048)
|
|
53 |
|
|
54 |
class CClientManager
|
|
55 |
{
|
|
56 |
public:
|
|
57 |
CClientManager();
|
|
58 |
CClientManager(HINSTANCE hinstDLL);
|
|
59 |
virtual ~CClientManager();
|
|
60 |
|
|
61 |
// starting/stopping server
|
|
62 |
BOOL StartServer(pServerProcessData pData);
|
|
63 |
BOOL StopServer(pServerProcessData pData);
|
|
64 |
long StartServer();
|
|
65 |
long StopServer();
|
|
66 |
BOOL IsServerRunning(); // { return m_ServerRunning; }
|
|
67 |
BOOL m_ServerRunning;
|
|
68 |
void TerminateServerThroughLockFile(pServerProcessData pData);
|
|
69 |
void CreateLockFile(DWORD processId);
|
|
70 |
void AppendToLockFile(DWORD processId);
|
|
71 |
void DeleteLockFile();
|
|
72 |
void DeleteFromLockFile(DWORD processId);
|
|
73 |
|
|
74 |
// input stream
|
|
75 |
CInputStream* FindInputStream(long inClientId);
|
|
76 |
long InputStreamListSize();
|
|
77 |
void RemoveInputStream(CInputStream* inputStream);
|
|
78 |
void AddInputStream(CInputStream* stream);
|
|
79 |
BOOL WaitForStreamListAccess() { return m_StreamListMutex.Wait(); }
|
|
80 |
BOOL ReleaseStreamListAccess() { return m_StreamListMutex.Release(); }
|
|
81 |
Mutex m_StreamListMutex;
|
|
82 |
|
|
83 |
// error monitors
|
|
84 |
CErrorMonitor* FindErrorMonitor(long inClientId);
|
|
85 |
long ErrorMonitorListSize();
|
|
86 |
void RemoveErrorMonitor(CErrorMonitor* errorMonitor);
|
|
87 |
void AddErrorMonitor(CErrorMonitor* monitor);
|
|
88 |
BOOL WaitForErrorMonitorListAccess() { return m_ErrorMonitorListMutex.Wait(); }
|
|
89 |
BOOL ReleaseErrorMonitorListAccess() { return m_ErrorMonitorListMutex.Release(); }
|
|
90 |
Mutex m_ErrorMonitorListMutex;
|
|
91 |
|
|
92 |
CServerCommand* m_Server;
|
|
93 |
TCDebugLog* m_DebugLog;
|
|
94 |
InputStreamList* m_StreamList;
|
|
95 |
ErrorMonitorList* m_ErrorMonitorList;
|
|
96 |
char* m_DllLocation;
|
|
97 |
HANDLE m_hServer; // our handle to the server process (per process)
|
|
98 |
HANDLE m_hServerThread; // handle to server main thread (creator process only)
|
|
99 |
char m_Version[MAX_VERSION_STRING]; // our version string
|
|
100 |
|
|
101 |
char* m_ServerLockFile; // TCFServer lock file name at the DLL location
|
|
102 |
char* m_ServerExeFile; // TCFServer exe
|
|
103 |
|
|
104 |
};
|
|
105 |
|
|
106 |
#endif // !defined(AFX_CLIENTMANAGER_H__D8CD8281_5D57_43E9_922D_9532DC8669C4__INCLUDED_)
|