connectivity/com.nokia.tcf/native/TCFNative/Common/Headers/ServerClient.h
author Chad Peckham <chad.peckham@nokia.com>
Wed, 02 Sep 2009 16:30:45 -0500
changeset 476 1e1ad434efb1
parent 60 9d2210c8eed2
permissions -rw-r--r--
Decrease TCFServer response timeout to 10 seconds
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
#ifndef __SERVERCLIENT_H__
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    18
#define __SERVERCLIENT_H__
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    19
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    20
#include "shareddata.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    21
#include "mutex.h"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    22
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    23
#define MAX_IPADDRESS_SIZE (20)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    24
#define MAX_PORT_SIZE	(6)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    25
typedef struct tagTcpConnectData 
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    26
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    27
	char ipAddress[MAX_IPADDRESS_SIZE];
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    28
	char ipPort[MAX_PORT_SIZE];
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    29
} *pTcpConnectData, TcpConnectData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    30
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    31
enum eFlowControl
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    32
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    33
	eFlowControlNone,
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    34
	eFlowControlHW,
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    35
	eFlowControlSW,
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    36
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    37
enum eStopBits
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    38
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    39
	eStopBits1,
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    40
	eStopBits15,
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    41
	eStopBits2,
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    42
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    43
enum eParity
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    44
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    45
	eParityNone,
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    46
	eParityOdd,
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    47
	eParityEven,
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    48
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    49
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    50
#define MAX_COMPORT_SIZE	(20)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    51
typedef struct tagRealSerialConnectData
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    52
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    53
	eFlowControl flowControl;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    54
	eStopBits stopBits;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    55
	eParity parity;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    56
	DWORD baudRate;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    57
	DWORD dataBits;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    58
	char comPort[MAX_COMPORT_SIZE];
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    59
} *pRealSerialConnectData, RealSerialConnectData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    61
typedef struct tagVirtualSerialConnectData
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    62
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    63
	char comPort[MAX_COMPORT_SIZE];
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    64
} *pVirtualSerialConnectData, VirtualSerialConnectData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    65
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    66
#define MAX_USBDEVICE_SIZE	(100)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    67
typedef struct tagUSBConnectData
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    68
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    69
	// TODO
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    70
	char device[MAX_USBDEVICE_SIZE];
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    71
} *pUSBConnectData, USBConnectData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    72
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    73
#define MAX_NUMBER_OPTIONS	(20)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    74
#define MAX_DECODE_FORMAT	(16)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    75
#define MAX_CONNECTION_TYPE	(16)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    76
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    77
// per connection settings
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    78
typedef struct tagConnectData 
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    79
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    80
	DWORD retryInterval;				// retry interval option
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    81
	DWORD retryTimeout;					// retry timeout option
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    82
	DWORD traceBoxChannel;					// added TraceBox information
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    83
	char  decodeFormat[MAX_DECODE_FORMAT];	// decode format (e.g. "ost") option
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    84
	char connectType[MAX_CONNECTION_TYPE];	// connection type (e.g. "tcp") 
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    85
	TcpConnectData tcpSettings;			// TCP/IP settings
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    86
	RealSerialConnectData realSerialSettings;	// real serial
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    87
	VirtualSerialConnectData virtualSerialSettings;	// virtual serial
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    88
	USBConnectData usbSettings;			// real USB
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    89
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    90
} *pConnectData, ConnectData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    91
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    92
// per client options - done at connect time
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    93
typedef struct tagClientOptions
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    94
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    95
	DWORD unWrapFormat;					// message unwrapping option (PN or OST)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    96
	DWORD ostVersion;					// which OST version to use on sendmessage (unused in native)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    97
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    98
} *pClientOptions, ClientOptions;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
    99
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   100
// per client options - done on opening stream
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   101
enum eMessageDestination
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   102
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   103
	eDestinationInputStream = 0,		// input stream
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   104
	eDestinationFile,					// message file
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   105
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   106
#define MAX_FILEPATH (2048L)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   107
typedef struct tagDestinationOptions
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   108
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   109
	eMessageDestination destination;	// eMessageDestination
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   110
	DWORD streamSize;					// input stream size
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   111
	BOOL overFlowToFile;				// overflow stream to file option
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   112
	CHAR destinationFile[MAX_FILEPATH];	// stream overflow file or message file
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   113
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   114
} *pDestinationOptions, DestinationOptions;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   115
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   116
enum eServerCommand
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   117
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   118
	eCmdNone = 0,						// no command to process
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   119
	eCmdConnect,							// connect (connectSettings clientOptions *clientId)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   120
	eCmdDisconnect,						// disconnect (clientId)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   121
	eCmdGetClientStatus,					// getclientstatus (clientId *clientStatus)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   122
	eCmdGetConnectionStatus,				// getconnstatus
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   123
	eCmdSetMessageIds,						// setmessageIds (clientId number messageIds)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   124
	eCmdGetNumberVersions,					// getnumberversions (clientId *number)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   125
	eCmdGetVersion,						// getversion (clientId index *version)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   126
	eCmdGetNumberConnections,				// getnumberconnections (*number)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   127
	eCmdGetConnectionType,					// getconnectiontype (index *connectionSettings.connectType)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   128
	eCmdGetConnection,						// getconnection (index *connectionSettings)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   129
	eCmdGetNumberClients,					// getnumclients (*number)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   130
	eCmdOpenStream,							// openstream (clientId destinationoptions)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   131
	eCmdCloseStream,						// closestream (clientId)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   132
	eCmdStart,								// start (clientId)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   133
	eCmdStop,								// stop (clientId)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   134
	eCmdSendMessage,						// sendmessage (clientId number message)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   135
	eCmdTestClientConnection,				// testconnection (clientId)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   136
	eCmdTestConnection,					// testconnection (connectSettings)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   137
	eCmdExit,								// tell server to exit its main command thread
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   138
	eCmdOpenMessageFile,					// openfile (clientId destinationoptions)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   139
	eCmdCloseMessageFile,					// closefile (clientId)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   140
	eCmdClearMessageFile,					// clearfile (clientId)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   141
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   142
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   143
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   144
enum eServerResponse
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   145
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   146
	eRspNone = 0,						// no response generated
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   147
	eRspOK,								// response with no errors
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   148
	eRspError,							// error response: error
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   149
	eRspExitted,						// server has exitted
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   150
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   151
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   152
enum eClientStatus
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   153
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   154
	eStarted,							// message processing started
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   155
	eStopped,							// message processing stopped
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   156
	eUnknownClient,						// client not found
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   157
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   158
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   159
enum eConnectionStatus
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   160
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   161
	eConnected,							// connection is OK
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   162
	eDisconnected,						// disconnected
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   163
	eRetryInProgress,					// inside retry interval (connected)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   164
	eRetryTimedOut,						// retry timedout (disconnected)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   165
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   166
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   167
// ----------- Command/Response Data -------------------
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   168
#define MAX_VERSION_STRING		(80)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   169
#define MAX_MESSAGEIDS			(256)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   170
typedef struct tagServerCommandData
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   171
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   172
	eServerCommand command;				// command type
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   173
	eServerResponse response;			// response type
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   174
	eClientStatus clientStatus;			// client status
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   175
	eConnectionStatus connectionStatus;	// connection status
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   176
	long error;							// response error
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   177
	unsigned long osError;				// error from the OS if applicable
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   178
	long clientId;						// clientID for command/response
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   179
	long index;							// eGetVersion command/eGetConnection command
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   180
	long number;						// length or other number value (see commands)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   181
	char version[MAX_VERSION_STRING];	// eGetVersion response
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   182
	ConnectData connectSettings;		// eConnect command/eGetConnection response
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   183
	ClientOptions clientOptions;		// per client options
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   184
	DestinationOptions destinationOptions;		// input stream or message file options
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   185
	long numClients;					// eGetNumberClients response
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   186
	long numConnections;				// eGetNumberConnections response
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   187
	long encodeOption;					// eSendMessage - what to do with protocol headers
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   188
	BYTE protocolVersion;				// eSendMessage - OST version byte if OST protocol
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   189
	BOOL useMyId;						// eSendMessage
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   190
	BYTE myId;							// eSendMessage
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   191
	BYTE messageIds[MAX_MESSAGEIDS];	// eSetMessageIds command
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   192
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   193
} *pServerCommandData, ServerCommandData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   194
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   195
#define SERVERCOMMANDDATA_MAP_SIZE	(sizeof(ServerCommandData))
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   196
#define SERVERCOMMANDDATA_MAP_NAME	"TCFServerCommandData"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   197
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   198
#define SERVERCOMMANDDATA_MUTEX_NAME	"TCFServerCommandDataMutex"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   199
//#define SERVERCOMMANDDATA_MUTEX_TIMEOUT	(60000L)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   200
#define SERVERCOMMANDDATA_MUTEX_TIMEOUT	(1000L)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   201
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   202
class CServerCommandData : public CSharedData
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   203
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   204
public:
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   205
	BOOL Init() { 	if (IsCreator()) \
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   206
	{\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   207
		pServerCommandData pData = (pServerCommandData)GetDataPtr();\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   208
		pData->command = eCmdNone;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   209
		pData->response = eRspNone;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   210
		pData->clientStatus = eStopped;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   211
		pData->connectionStatus = eDisconnected;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   212
		pData->clientId = -1;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   213
		pData->index = 0;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   214
		pData->number = 0;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   215
		pData->version[0] = 0;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   216
		pData->numClients = 0;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   217
		pData->numConnections = 0;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   218
		memset(&pData->messageIds, 0, MAX_MESSAGEIDS);\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   219
	}\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   220
	return TRUE; }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   221
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   222
// ----------- Command/Response Data -------------------
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   223
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   224
// ----------- Send Message Data -------------------
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   225
#define MAX_SENDMESSAGE			(64*1024L+12)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   226
typedef struct tagServerMessageData
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   227
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   228
	long length;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   229
	BYTE message[MAX_SENDMESSAGE];	// eSendMessage command
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   230
} *pServerMessageData, ServerMessageData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   231
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   232
#define SERVERMESSAGEDATA_MAP_SIZE	(sizeof(ServerMessageData))
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   233
#define SERVERMESSAGEDATA_MAP_NAME	"TCFServerMessageData"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   234
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   235
class CServerMessageData : public CSharedData
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   236
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   237
public:
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   238
	BOOL Init() { if (IsCreator()) \
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   239
	{\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   240
		pServerMessageData pData = (pServerMessageData)GetDataPtr();\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   241
		memset(&pData->message, 0, MAX_SENDMESSAGE);\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   242
		pData->length = 0;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   243
	}\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   244
	return TRUE; }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   245
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   246
// ----------- Send Message Data -------------------
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   247
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   248
// ----------- Server Process Data -------------------
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   249
typedef struct tagServerProcessData
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   250
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   251
	long numRefs;						// reference count (first creates server process/last destroys server process)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   252
	PROCESS_INFORMATION serverProcess;	// Server process information
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   253
} *pServerProcessData, ServerProcessData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   254
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   255
#define SERVERPROCESSDATA_MAP_SIZE	(sizeof(ServerProcessData))
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   256
#define SERVERPROCESSDATA_MAP_NAME	"TCFServerProcessData"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   257
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   258
class CServerProcessData : public CSharedData
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   259
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   260
public:
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   261
	BOOL Init() { if (IsCreator()) \
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   262
	{\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   263
		pServerProcessData pData = (pServerProcessData)GetDataPtr();\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   264
		pData->numRefs = 0;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   265
		memset(&pData->serverProcess, 0, sizeof(pData->serverProcess));\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   266
		pData->serverProcess.hProcess = NULL;\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   267
	}\
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   268
	return TRUE; }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   269
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   270
// ----------- Server Process Data -------------------
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   271
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   272
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   273
// Main server command/response class
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   274
#define SERVERPIPE_MUTEX_NAME	"TCFServerPipeMutex"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   275
#define SERVERPIPE_MUTEX_TIMEOUT	(60000L)
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   276
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   277
// Server command/response events
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   278
#define SERVER_COMMAND_READY_EVENTNAME	"TCFServerCommandReadyEvent"
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   279
#define SERVER_RESPONSE_READY_EVENTNAME	"TCFServerResponseReadyEvent"
476
1e1ad434efb1 Decrease TCFServer response timeout to 10 seconds
Chad Peckham <chad.peckham@nokia.com>
parents: 60
diff changeset
   280
#define SERVER_CMDRSP_EVENT_TIMEOUT	10000L
60
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   281
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   282
class CServerCommand
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   283
{
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   284
public:
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   285
	CServerCommand();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   286
	~CServerCommand();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   287
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   288
	// Client methods
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   289
	BOOL SendCommand(pServerCommandData pCmd, DWORD msgLength=0, BYTE* message=NULL);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   290
	BOOL GetResponse(pServerCommandData pRsp);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   291
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   292
	// Server methods
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   293
	BOOL GetCommand(pServerCommandData pCmd, pServerMessageData pMsg);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   294
	BOOL SendResponse(pServerCommandData pRsp);
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   295
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   296
	BOOL WaitforServerPipeAccess() { return m_ServerPipeMutex.Wait(); }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   297
	BOOL ReleaseServerPipeAccess() { return m_ServerPipeMutex.Release(); }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   298
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   299
	pServerProcessData GetProcessPtr() { return (pServerProcessData)m_ServerProcessData.GetDataPtr(); }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   300
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   301
private:
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   302
	pServerCommandData GetDataPtr() { return (pServerCommandData)m_ServerCommandData.GetDataPtr(); }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   303
	pServerMessageData GetMsgPtr() { return (pServerMessageData)m_ServerMessageData.GetDataPtr(); }
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   304
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   305
private:
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   306
	// Server Commands/Responses
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   307
	BOOL WaitForServerCommandAccess() { return m_ServerCommandMutex.Wait(); };
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   308
	BOOL ReleaseServerCommandAccess() { return m_ServerCommandMutex.Release(); };
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   309
//	BOOL WaitForServerCommandAccess() { return TRUE; };
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   310
//	BOOL ReleaseServerCommandAccess() { return TRUE; };
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   311
	CServerCommandData m_ServerCommandData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   312
	CServerMessageData m_ServerMessageData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   313
	CServerProcessData m_ServerProcessData;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   314
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   315
	Mutex m_ServerCommandMutex;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   316
	Mutex m_ServerPipeMutex;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   317
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   318
	// client
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   319
	void SetCommandReady();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   320
	// server
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   321
	void SetResponseReady();
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   322
	HANDLE m_hServerCommandReadyEvent;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   323
	HANDLE m_hServerResponseReadyEvent;
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   324
};
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   325
9d2210c8eed2 Commit changes for 2.1.0
chpeckha
parents:
diff changeset
   326
#endif// __SERVERCLIENT_H__