mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-23 18:03:04 +01:00
Added the current XNET implementation.
Let's hope it works not only for me <g>
This commit is contained in:
parent
b0499ab7cb
commit
efe2cbce0d
@ -171,9 +171,6 @@ Package=<4>
|
|||||||
Project_Dep_Name dsql_server_classic
|
Project_Dep_Name dsql_server_classic
|
||||||
End Project Dependency
|
End Project Dependency
|
||||||
Begin Project Dependency
|
Begin Project Dependency
|
||||||
Project_Dep_Name ipserver
|
|
||||||
End Project Dependency
|
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name lock_classic
|
Project_Dep_Name lock_classic
|
||||||
End Project Dependency
|
End Project Dependency
|
||||||
Begin Project Dependency
|
Begin Project Dependency
|
||||||
@ -311,9 +308,6 @@ Package=<4>
|
|||||||
Begin Project Dependency
|
Begin Project Dependency
|
||||||
Project_Dep_Name engine
|
Project_Dep_Name engine
|
||||||
End Project Dependency
|
End Project Dependency
|
||||||
Begin Project Dependency
|
|
||||||
Project_Dep_Name ipserver
|
|
||||||
End Project Dependency
|
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -540,18 +534,6 @@ Package=<4>
|
|||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
Project: "ipserver"=.\ipserver.dsp - Package Owner=<4>
|
|
||||||
|
|
||||||
Package=<5>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
Package=<4>
|
|
||||||
{{{
|
|
||||||
}}}
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
Project: "isql"=.\isql.dsp - Package Owner=<4>
|
Project: "isql"=.\isql.dsp - Package Owner=<4>
|
||||||
|
|
||||||
Package=<5>
|
Package=<5>
|
||||||
|
@ -43,7 +43,7 @@ RSC=rc.exe
|
|||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GDS32_EXPORTS" /YX /FD /GZ /c
|
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GDS32_EXPORTS" /YX /FD /GZ /c
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../src/include" /I "../../../src/include/gen" /D "_DEBUG" /D "DEV_BUILD" /D "_WINDOWS" /D "_USRDLL" /D "CLIENT" /D "SUPERCLIENT" /D "SERVER_SHUTDOWN" /D "IPSERV" /D "GOVERNOR" /D "EXACT_NUMERICS" /D "WIN32" /D "_MBCS" /D "_X86_" /FR /FD /GZ /c
|
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../src/include" /I "../../../src/include/gen" /D "_DEBUG" /D "DEV_BUILD" /D "_WINDOWS" /D "_USRDLL" /D "CLIENT" /D "SUPERCLIENT" /D "SERVER_SHUTDOWN" /D "GOVERNOR" /D "EXACT_NUMERICS" /D "WIN32" /D "_MBCS" /D "_X86_" /FR /FD /GZ /c
|
||||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
||||||
@ -70,7 +70,7 @@ LINK32=link.exe
|
|||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../src/include" /I "../../../src/include/gen" /I "../../../src" /D "_DEBUG" /D "DEV_BUILD" /D "_WINDOWS" /D "_USRDLL" /D "GDS32_EXPORTS" /D "CLIENT" /D "SUPERCLIENT" /D "NOMSG" /D "SERVER_SHUTDOWN" /D "IPSERV" /D "GOVERNOR" /D "EXACT_NUMERICS" /D "I386" /D _X86_=1 /D "WIN32" /D "_MBCS" /D "_X86_" /FR /FD /GZ /c
|
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../../src/include" /I "../../../src/include/gen" /I "../../../src" /D "_DEBUG" /D "DEV_BUILD" /D "_WINDOWS" /D "_USRDLL" /D "GDS32_EXPORTS" /D "CLIENT" /D "SUPERCLIENT" /D "NOMSG" /D "SERVER_SHUTDOWN" /D "IPSERV" /D "GOVERNOR" /D "EXACT_NUMERICS" /D "I386" /D _X86_=1 /D "WIN32" /D "_MBCS" /D "_X86_" /FR /FD /GZ /c
|
||||||
# ADD CPP /nologo /MD /W3 /GX /Ot /Og /Oi /Op /Oy /Ob1 /I "../../../src/include" /I "../../../src/include/gen" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "CLIENT" /D "SUPERCLIENT" /D "SERVER_SHUTDOWN" /D "IPSERV" /D "GOVERNOR" /D "EXACT_NUMERICS" /D "I386" /D _X86_=1 /D "WIN32" /D "_MBCS" /D "_X86_" /FR /FD /EHc- /c
|
# ADD CPP /nologo /MD /W3 /GX /Ot /Og /Oi /Op /Oy /Ob1 /I "../../../src/include" /I "../../../src/include/gen" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "CLIENT" /D "SUPERCLIENT" /D "SERVER_SHUTDOWN" /D "GOVERNOR" /D "EXACT_NUMERICS" /D "I386" /D _X86_=1 /D "WIN32" /D "_MBCS" /D "_X86_" /FR /FD /EHc- /c
|
||||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
||||||
@ -227,22 +227,6 @@ SOURCE=..\..\..\src\dsql\user_dsql.cpp
|
|||||||
SOURCE=..\..\..\src\dsql\utld.cpp
|
SOURCE=..\..\..\src\dsql\utld.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# End Group
|
# End Group
|
||||||
# Begin Group "IPSERVER files"
|
|
||||||
|
|
||||||
# PROP Default_Filter ""
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\..\src\ipserver\alli.cpp
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\..\src\ipserver\ipcevent.cpp
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\..\src\ipserver\ipclient.cpp
|
|
||||||
# End Source File
|
|
||||||
# End Group
|
|
||||||
# Begin Group "REMOTE files"
|
# Begin Group "REMOTE files"
|
||||||
|
|
||||||
# PROP Default_Filter ""
|
# PROP Default_Filter ""
|
||||||
|
@ -41,7 +41,7 @@ RSC=rc.exe
|
|||||||
# PROP Intermediate_Dir "..\..\..\temp\debug\remote_ss"
|
# PROP Intermediate_Dir "..\..\..\temp\debug\remote_ss"
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../src/include" /I "../../../src/include/gen" /D "_DEBUG" /D "_LIB" /D "SUPERSERVER" /D "SERVER_SHUTDOWN" /D "IPSERVER" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /FD /GZ /c
|
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../src/include" /I "../../../src/include/gen" /D "_DEBUG" /D "_LIB" /D "SUPERSERVER" /D "SERVER_SHUTDOWN" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /FD /GZ /c
|
||||||
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
||||||
# ADD RSC /l 0x41d /d "_DEBUG"
|
# ADD RSC /l 0x41d /d "_DEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
@ -65,7 +65,7 @@ LIB32=link.exe -lib
|
|||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /GX /Ot /Oi /Op /Oy /Ob2 /I "../../../src/include" /I "../../../src/include/gen" /D "_DEBUG" /D "_LIB" /D "SUPERCLIENT" /D "WIN32" /D "_MBCS" /D "NOMSG" /D "_X86_" /FD /GZ /c
|
# ADD BASE CPP /nologo /MDd /W3 /GX /Ot /Oi /Op /Oy /Ob2 /I "../../../src/include" /I "../../../src/include/gen" /D "_DEBUG" /D "_LIB" /D "SUPERCLIENT" /D "WIN32" /D "_MBCS" /D "NOMSG" /D "_X86_" /FD /GZ /c
|
||||||
# SUBTRACT BASE CPP /YX
|
# SUBTRACT BASE CPP /YX
|
||||||
# ADD CPP /nologo /MD /W3 /GX /Ot /Og /Oi /Op /Oy /Ob1 /I "../../../src/include" /I "../../../src/include/gen" /D "NDEBUG" /D "_LIB" /D "SUPERSERVER" /D "SERVER_SHUTDOWN" /D "IPSERVER" /D "WIN32" /D "_MBCS" /D "_X86_" /FD /EHc- /c
|
# ADD CPP /nologo /MD /W3 /GX /Ot /Og /Oi /Op /Oy /Ob1 /I "../../../src/include" /I "../../../src/include/gen" /D "NDEBUG" /D "_LIB" /D "SUPERSERVER" /D "SERVER_SHUTDOWN" /D "WIN32" /D "_MBCS" /D "_X86_" /FD /EHc- /c
|
||||||
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
||||||
# ADD RSC /l 0x41d /d "_DEBUG"
|
# ADD RSC /l 0x41d /d "_DEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
|
@ -41,7 +41,7 @@ RSC=rc.exe
|
|||||||
# PROP Intermediate_Dir "..\..\..\temp\debug\remote_cs"
|
# PROP Intermediate_Dir "..\..\..\temp\debug\remote_cs"
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../src/include" /I "../../../src/include/gen" /D "_DEBUG" /D "_LIB" /D "SERVER_SHUTDOWN" /D "IPSERVER" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /FD /GZ /c
|
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../src/include" /I "../../../src/include/gen" /D "_DEBUG" /D "_LIB" /D "SERVER_SHUTDOWN" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /FD /GZ /c
|
||||||
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
||||||
# ADD RSC /l 0x41d /d "_DEBUG"
|
# ADD RSC /l 0x41d /d "_DEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
@ -65,7 +65,7 @@ LIB32=link.exe -lib
|
|||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /MDd /W3 /GX /Ot /Oi /Op /Oy /Ob2 /I "../../../src/include" /I "../../../src/include/gen" /D "_DEBUG" /D "_LIB" /D "SUPERCLIENT" /D "WIN32" /D "_MBCS" /D "NOMSG" /D "_X86_" /FD /GZ /c
|
# ADD BASE CPP /nologo /MDd /W3 /GX /Ot /Oi /Op /Oy /Ob2 /I "../../../src/include" /I "../../../src/include/gen" /D "_DEBUG" /D "_LIB" /D "SUPERCLIENT" /D "WIN32" /D "_MBCS" /D "NOMSG" /D "_X86_" /FD /GZ /c
|
||||||
# SUBTRACT BASE CPP /YX
|
# SUBTRACT BASE CPP /YX
|
||||||
# ADD CPP /nologo /MD /W3 /GX /Ot /Og /Oi /Op /Oy /Ob1 /I "../../../src/include" /I "../../../src/include/gen" /D "NDEBUG" /D "_LIB" /D "SERVER_SHUTDOWN" /D "IPSERVER" /D "WIN32" /D "_MBCS" /D "_X86_" /FD /EHc- /c
|
# ADD CPP /nologo /MD /W3 /GX /Ot /Og /Oi /Op /Oy /Ob1 /I "../../../src/include" /I "../../../src/include/gen" /D "NDEBUG" /D "_LIB" /D "SERVER_SHUTDOWN" /D "WIN32" /D "_MBCS" /D "_X86_" /FD /EHc- /c
|
||||||
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
||||||
# ADD RSC /l 0x41d /d "_DEBUG"
|
# ADD RSC /l 0x41d /d "_DEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
|
@ -51,9 +51,6 @@
|
|||||||
#include "../jrd/sch_proto.h"
|
#include "../jrd/sch_proto.h"
|
||||||
#include "../remote/os/win32/window.h"
|
#include "../remote/os/win32/window.h"
|
||||||
#include "../common/config/config.h"
|
#include "../common/config/config.h"
|
||||||
#define NO_PORT
|
|
||||||
#include "../remote/xnet_proto.h"
|
|
||||||
#undef NO_PORT
|
|
||||||
|
|
||||||
#define statistics stat
|
#define statistics stat
|
||||||
|
|
||||||
@ -3807,8 +3804,6 @@ static SSHORT init( ISC_STATUS * user_status, ICC * picc)
|
|||||||
initialized = true;
|
initialized = true;
|
||||||
gds__register_cleanup(reinterpret_cast<void(*)(void*)>(IPC_release_all),
|
gds__register_cleanup(reinterpret_cast<void(*)(void*)>(IPC_release_all),
|
||||||
NULL);
|
NULL);
|
||||||
gds__register_cleanup(reinterpret_cast<void(*)(void*)>(XNET_release_all),
|
|
||||||
NULL);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -4580,7 +4575,6 @@ void IPC_process_event(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifndef XNET
|
|
||||||
void IPC_release_all(void)
|
void IPC_release_all(void)
|
||||||
{
|
{
|
||||||
/**************************************
|
/**************************************
|
||||||
@ -4726,7 +4720,6 @@ void IPC_release_all(void)
|
|||||||
initialized = false;
|
initialized = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
$Id: why.cpp,v 1.24 2003-08-28 13:16:03 brodsom Exp $
|
$Id: why.cpp,v 1.25 2003-09-08 14:09:34 dimitr Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "firebird.h"
|
#include "firebird.h"
|
||||||
@ -548,14 +548,14 @@ static const ENTRY entrypoints[PROC_count * SUBSYSTEMS] =
|
|||||||
#define ENTRYPOINT(gen,cur,bridge,rem,os2_rem,csi,rdb,pipe,bridge_pipe,win,winipi) {NULL, rdb},
|
#define ENTRYPOINT(gen,cur,bridge,rem,os2_rem,csi,rdb,pipe,bridge_pipe,win,winipi) {NULL, rdb},
|
||||||
#include "../jrd/entry.h"
|
#include "../jrd/entry.h"
|
||||||
#endif
|
#endif
|
||||||
|
/*
|
||||||
#ifdef IPSERV
|
#ifdef IPSERV
|
||||||
#ifndef XNET
|
#ifndef XNET
|
||||||
#define ENTRYPOINT(gen,cur,bridge,rem,os2_rem,csi,rdb,pipe,bridge_pipe,win,winipi) {NULL, winipi},
|
#define ENTRYPOINT(gen,cur,bridge,rem,os2_rem,csi,rdb,pipe,bridge_pipe,win,winipi) {NULL, winipi},
|
||||||
#include "../jrd/entry.h"
|
#include "../jrd/entry.h"
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef SUPERCLIENT
|
#ifndef SUPERCLIENT
|
||||||
|
@ -4873,7 +4873,24 @@ static PORT analyze(TEXT* file_name,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
} // if (!port)
|
}
|
||||||
|
|
||||||
|
#if defined(XNET) && !defined(IPSERV)
|
||||||
|
|
||||||
|
/* all remote attempts have failed, so access locally through the
|
||||||
|
interprocess server */
|
||||||
|
|
||||||
|
if (!port)
|
||||||
|
{
|
||||||
|
return XNET_analyze(file_name,
|
||||||
|
file_length,
|
||||||
|
status_vector,
|
||||||
|
node_name,
|
||||||
|
user_string,
|
||||||
|
uv_flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* XNET */
|
||||||
|
|
||||||
#if defined(SUPERCLIENT) && !defined(EMBEDDED)
|
#if defined(SUPERCLIENT) && !defined(EMBEDDED)
|
||||||
/* Coerce host connections to loopback to SUPERSERVER. */
|
/* Coerce host connections to loopback to SUPERSERVER. */
|
||||||
@ -4904,23 +4921,6 @@ static PORT analyze(TEXT* file_name,
|
|||||||
#endif /* IPSERV */
|
#endif /* IPSERV */
|
||||||
#endif /* WIN_NT */
|
#endif /* WIN_NT */
|
||||||
|
|
||||||
#if defined(XNET) && !defined(IPSERV)
|
|
||||||
|
|
||||||
/* all remote attempts have failed, so access locally through the
|
|
||||||
interprocess server */
|
|
||||||
|
|
||||||
if (!port)
|
|
||||||
{
|
|
||||||
return XNET_analyze(file_name,
|
|
||||||
file_length,
|
|
||||||
status_vector,
|
|
||||||
node_name,
|
|
||||||
user_string,
|
|
||||||
uv_flag);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* XNET */
|
|
||||||
|
|
||||||
#ifdef UNIX
|
#ifdef UNIX
|
||||||
|
|
||||||
if (!port && !node_name[0])
|
if (!port && !node_name[0])
|
||||||
|
@ -312,7 +312,7 @@ static char *MakeVersionString(char *pchBuf, int nLen,
|
|||||||
if (p < end)
|
if (p < end)
|
||||||
*p++ = '\n';
|
*p++ = '\n';
|
||||||
}
|
}
|
||||||
if (usServerFlagMask & SRVR_ipc) {
|
if (usServerFlagMask & SRVR_xnet || usServerFlagMask & SRVR_ipc) {
|
||||||
p += LoadString(hInstance, IDS_IPC, p, end - p);
|
p += LoadString(hInstance, IDS_IPC, p, end - p);
|
||||||
}
|
}
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
@ -92,6 +92,5 @@ produced by Borland Resource Workshop
|
|||||||
#define IDS_NP 12
|
#define IDS_NP 12
|
||||||
#define IDS_IPC 13
|
#define IDS_IPC 13
|
||||||
|
|
||||||
|
|
||||||
#define IDS_SERVERPROD_NAME 76
|
#define IDS_SERVERPROD_NAME 76
|
||||||
#define IDS_LOCALPROD_NAME 77
|
#define IDS_LOCALPROD_NAME 77
|
||||||
|
@ -109,13 +109,13 @@
|
|||||||
#include "../jrd/file_params.h"
|
#include "../jrd/file_params.h"
|
||||||
#include "../common/config/config.h"
|
#include "../common/config/config.h"
|
||||||
|
|
||||||
static void THREAD_ROUTINE process_connection_thread(PORT);
|
|
||||||
static void THREAD_ROUTINE inet_connect_wait_thread(void *);
|
static void THREAD_ROUTINE inet_connect_wait_thread(void *);
|
||||||
static void THREAD_ROUTINE ipc_connect_wait_thread(void *);
|
static void THREAD_ROUTINE ipc_connect_wait_thread(void *);
|
||||||
static void service_connection(PORT);
|
|
||||||
static void THREAD_ROUTINE start_connections_thread(int);
|
static void THREAD_ROUTINE start_connections_thread(int);
|
||||||
static void THREAD_ROUTINE wnet_connect_wait_thread(void *);
|
static void THREAD_ROUTINE wnet_connect_wait_thread(void *);
|
||||||
|
static void THREAD_ROUTINE xnet_connect_wait_thread(void *);
|
||||||
static HANDLE parse_args(LPSTR, USHORT *);
|
static HANDLE parse_args(LPSTR, USHORT *);
|
||||||
|
static void service_connection(PORT);
|
||||||
|
|
||||||
static HINSTANCE hInst;
|
static HINSTANCE hInst;
|
||||||
|
|
||||||
@ -205,8 +205,8 @@ int WINAPI WinMain(HINSTANCE hThisInst,
|
|||||||
if (ISC_is_WinNT()) /* True - NT, False - Win95 */
|
if (ISC_is_WinNT()) /* True - NT, False - Win95 */
|
||||||
server_flag |= SRVR_wnet;
|
server_flag |= SRVR_wnet;
|
||||||
server_flag |= SRVR_inet;
|
server_flag |= SRVR_inet;
|
||||||
#ifdef SUPERSERVER
|
|
||||||
server_flag |= SRVR_xnet;
|
server_flag |= SRVR_xnet;
|
||||||
|
#ifdef SUPERSERVER
|
||||||
server_flag |= SRVR_ipc;
|
server_flag |= SRVR_ipc;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -247,6 +247,8 @@ int WINAPI WinMain(HINSTANCE hThisInst,
|
|||||||
port = INET_reconnect(connection_handle, 0, status_vector);
|
port = INET_reconnect(connection_handle, 0, status_vector);
|
||||||
else if (server_flag & SRVR_wnet)
|
else if (server_flag & SRVR_wnet)
|
||||||
port = WNET_reconnect(connection_handle, 0, status_vector);
|
port = WNET_reconnect(connection_handle, 0, status_vector);
|
||||||
|
else if (server_flag & SRVR_xnet)
|
||||||
|
port = XNET_reconnect((ULONG) connection_handle, 0, status_vector);
|
||||||
THREAD_EXIT;
|
THREAD_EXIT;
|
||||||
if (port) {
|
if (port) {
|
||||||
service_connection(port);
|
service_connection(port);
|
||||||
@ -272,6 +274,11 @@ int WINAPI WinMain(HINSTANCE hThisInst,
|
|||||||
(wnet_connect_wait_thread), 0, THREAD_medium, 0,
|
(wnet_connect_wait_thread), 0, THREAD_medium, 0,
|
||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
|
if (server_flag & SRVR_xnet) {
|
||||||
|
gds__thread_start(reinterpret_cast<FPTR_INT_VOID_PTR>
|
||||||
|
(xnet_connect_wait_thread), 0, THREAD_medium, 0,
|
||||||
|
0);
|
||||||
|
}
|
||||||
/* No need to waste a thread if we are running as a window. Just start
|
/* No need to waste a thread if we are running as a window. Just start
|
||||||
* the IPC communication
|
* the IPC communication
|
||||||
*/
|
*/
|
||||||
@ -306,52 +313,7 @@ int WINAPI WinMain(HINSTANCE hThisInst,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ULONG SRVR_xnet_start_thread(ULONG client_pid)
|
void THREAD_ROUTINE process_connection_thread( PORT port)
|
||||||
{
|
|
||||||
/**************************************
|
|
||||||
*
|
|
||||||
* S R V R _ x n e t _ s t a r t _ t h r e a d
|
|
||||||
*
|
|
||||||
**************************************
|
|
||||||
*
|
|
||||||
* Functional description
|
|
||||||
* Start an interprocess thread. This allocates
|
|
||||||
* the next available chunk of the mapped file and
|
|
||||||
* tells the client where it is.
|
|
||||||
*
|
|
||||||
**************************************/
|
|
||||||
PORT port;
|
|
||||||
ULONG response;
|
|
||||||
|
|
||||||
/* get a port */
|
|
||||||
port = XNET_start_thread(client_pid, &response);
|
|
||||||
|
|
||||||
/* Ensure that the main port is set with this new port if we are the first
|
|
||||||
* XNET connection
|
|
||||||
*/
|
|
||||||
if (!xnet_server_set) {
|
|
||||||
USHORT flags = ((USHORT) SRVR_xnet | (USHORT) SRVR_multi_client |
|
|
||||||
(USHORT) SRVR_thread_per_port);
|
|
||||||
PORT xnet_header_port = (PORT) ALLR_alloc(sizeof(struct port));
|
|
||||||
if (xnet_header_port)
|
|
||||||
*xnet_header_port = *port;
|
|
||||||
else
|
|
||||||
return FALSE;
|
|
||||||
xnet_server_set = TRUE;
|
|
||||||
set_server(xnet_header_port, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* start the thread for this client */
|
|
||||||
gds__thread_start(reinterpret_cast<FPTR_INT_VOID_PTR>
|
|
||||||
(process_connection_thread), port,
|
|
||||||
THREAD_medium, 0, 0);
|
|
||||||
|
|
||||||
/* return combined mapped area and number */
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void THREAD_ROUTINE process_connection_thread( PORT port)
|
|
||||||
{
|
{
|
||||||
/**************************************
|
/**************************************
|
||||||
*
|
*
|
||||||
@ -472,6 +434,32 @@ static void THREAD_ROUTINE ipc_connect_wait_thread( void *dummy)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void THREAD_ROUTINE xnet_connect_wait_thread(void *dummy)
|
||||||
|
{
|
||||||
|
/**************************************
|
||||||
|
*
|
||||||
|
* x n e t _ c o n n e c t _ w a i t _ t h r e a d
|
||||||
|
*
|
||||||
|
**************************************
|
||||||
|
*
|
||||||
|
* Functional description
|
||||||
|
* Starts xnet server side interprocess thread
|
||||||
|
*
|
||||||
|
**************************************/
|
||||||
|
void *thread;
|
||||||
|
|
||||||
|
if (!(server_flag & SRVR_non_service))
|
||||||
|
thread = CNTL_insert_thread();
|
||||||
|
|
||||||
|
THREAD_ENTER;
|
||||||
|
XNET_srv(server_flag);
|
||||||
|
THREAD_EXIT;
|
||||||
|
|
||||||
|
if (!(server_flag & SRVR_non_service))
|
||||||
|
CNTL_remove_thread(thread);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void service_connection( PORT port)
|
static void service_connection( PORT port)
|
||||||
{
|
{
|
||||||
/**************************************
|
/**************************************
|
||||||
@ -509,6 +497,10 @@ static void THREAD_ROUTINE start_connections_thread( int flag)
|
|||||||
gds__thread_start(reinterpret_cast<FPTR_INT_VOID_PTR>
|
gds__thread_start(reinterpret_cast<FPTR_INT_VOID_PTR>
|
||||||
(wnet_connect_wait_thread), 0, THREAD_medium, 0, 0);
|
(wnet_connect_wait_thread), 0, THREAD_medium, 0, 0);
|
||||||
}
|
}
|
||||||
|
if (server_flag & SRVR_xnet) {
|
||||||
|
gds__thread_start(reinterpret_cast<FPTR_INT_VOID_PTR>
|
||||||
|
(xnet_connect_wait_thread), 0, THREAD_medium, 0, 0);
|
||||||
|
}
|
||||||
if (server_flag & SRVR_ipc) {
|
if (server_flag & SRVR_ipc) {
|
||||||
const int bFailed =
|
const int bFailed =
|
||||||
gds__thread_start(reinterpret_cast<FPTR_INT_VOID_PTR>
|
gds__thread_start(reinterpret_cast<FPTR_INT_VOID_PTR>
|
||||||
|
@ -30,7 +30,6 @@
|
|||||||
#include "../remote/remote_def.h"
|
#include "../remote/remote_def.h"
|
||||||
#include "../remote/os/win32/window.rh"
|
#include "../remote/os/win32/window.rh"
|
||||||
#include "../remote/os/win32/property.rh"
|
#include "../remote/os/win32/property.rh"
|
||||||
#include "../remote/xnet.h"
|
|
||||||
#ifdef IPSERVER
|
#ifdef IPSERVER
|
||||||
#include "../ipserver/ips.h"
|
#include "../ipserver/ips.h"
|
||||||
#endif
|
#endif
|
||||||
@ -51,7 +50,6 @@
|
|||||||
#define NO_PORT
|
#define NO_PORT
|
||||||
#include "../remote/protocol.h"
|
#include "../remote/protocol.h"
|
||||||
#include "../remote/serve_proto.h"
|
#include "../remote/serve_proto.h"
|
||||||
#include "../remote/xnet_proto.h"
|
|
||||||
#undef NO_PORT
|
#undef NO_PORT
|
||||||
|
|
||||||
#include "../common/config/config.h"
|
#include "../common/config/config.h"
|
||||||
@ -139,29 +137,6 @@ int WINDOW_main( HINSTANCE hThisInst, int nWndMode, USHORT usServerFlagMask)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (!XNET_init(hWnd, 0, 0, 0)) {
|
|
||||||
char szMsgString[TMP_STRINGLEN];
|
|
||||||
hWnd = FindWindow(szClassName, APP_NAME);
|
|
||||||
if (hWnd) {
|
|
||||||
LoadString(hInstance, IDS_ALREADYSTARTED, szMsgString,
|
|
||||||
TMP_STRINGLEN);
|
|
||||||
if (usServerFlagMask & SRVR_non_service) {
|
|
||||||
MessageBox(NULL, szMsgString, APP_LABEL,
|
|
||||||
MB_OK | MB_ICONHAND);
|
|
||||||
}
|
|
||||||
gds__log(szMsgString);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
LoadString(hInstance, IDS_MAPERROR, szMsgString,
|
|
||||||
TMP_STRINGLEN);
|
|
||||||
if (usServerFlagMask & SRVR_non_service) {
|
|
||||||
MessageBox(NULL, szMsgString, APP_LABEL,
|
|
||||||
MB_OK | MB_ICONHAND);
|
|
||||||
}
|
|
||||||
gds__log(szMsgString);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* initialize main window */
|
/* initialize main window */
|
||||||
|
@ -24,20 +24,29 @@
|
|||||||
#ifndef _REMOTE_SERVE_PROTO_H_
|
#ifndef _REMOTE_SERVE_PROTO_H_
|
||||||
#define _REMOTE_SERVE_PROTO_H_
|
#define _REMOTE_SERVE_PROTO_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef WINDOWS_ROUTER
|
#ifdef WINDOWS_ROUTER
|
||||||
extern void SRVR_WinMain (struct port *, USHORT, HINSTANCE, HINSTANCE, int);
|
extern void SRVR_WinMain(struct port *, USHORT, HINSTANCE, HINSTANCE, int);
|
||||||
#else /* WINDOWS_ROUTER */
|
#else /* WINDOWS_ROUTER */
|
||||||
extern void SRVR_main (struct port *, USHORT);
|
extern void SRVR_main(struct port *, USHORT);
|
||||||
#endif /* WINDOWS_ROUTER */
|
#endif /* WINDOWS_ROUTER */
|
||||||
|
|
||||||
#ifdef NO_PORT
|
#ifdef NO_PORT
|
||||||
#define PORT void*
|
#define PORT void*
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern void SRVR_multi_thread (struct port *, USHORT);
|
extern void SRVR_multi_thread(struct port *, USHORT);
|
||||||
extern ULONG SRVR_xnet_start_thread(ULONG);
|
extern BOOLEAN process_packet(PORT, PACKET *, PACKET *, PORT *);
|
||||||
extern SLONG check_license (void);
|
extern void set_server(PORT, USHORT);
|
||||||
extern BOOLEAN process_packet (PORT, PACKET *, PACKET *, PORT *);
|
extern void THREAD_ROUTINE process_connection_thread(PORT);
|
||||||
extern void set_server (PORT, USHORT);
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif /* _REMOTE_SERVE_PROTO_H_ */
|
#endif /* _REMOTE_SERVE_PROTO_H_ */
|
||||||
|
3171
src/remote/xnet.cpp
3171
src/remote/xnet.cpp
File diff suppressed because it is too large
Load Diff
@ -19,6 +19,8 @@
|
|||||||
*
|
*
|
||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
* Contributor(s): ______________________________________.
|
* Contributor(s): ______________________________________.
|
||||||
|
*
|
||||||
|
* 2003.05.01 Victor Seryodkin, Dmitry Yemanov: Completed XNET implementation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _REMOTE_XNET_H_
|
#ifndef _REMOTE_XNET_H_
|
||||||
@ -26,7 +28,6 @@
|
|||||||
|
|
||||||
#ifndef WIN_NT
|
#ifndef WIN_NT
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
//typedef short DWORD;
|
|
||||||
#define PID_T pid_t
|
#define PID_T pid_t
|
||||||
#define CADDR_T caddr_t
|
#define CADDR_T caddr_t
|
||||||
#define FILE_ID int
|
#define FILE_ID int
|
||||||
@ -36,129 +37,150 @@
|
|||||||
#define FILE_ID HANDLE
|
#define FILE_ID HANDLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define XNET_CONNECT_TIMEOUT 10000 /* client connect timeout (ms) */
|
||||||
|
|
||||||
|
#define XNET_RECV_WAIT_TIMEOUT 10000 /* Receive wait timeout (ms) */
|
||||||
|
#define XNET_SEND_WAIT_TIMEOUT XNET_RECV_WAIT_TIMEOUT /* Send wait timeout (ms) */
|
||||||
|
|
||||||
/* mapped file parameters */
|
/* mapped file parameters */
|
||||||
|
|
||||||
#define XPS_MAPPED_PER_CLI(p) ((ULONG)(p) * 1024L)
|
#define XPS_MAPPED_PER_CLI(p) ((ULONG)(p) * 1024L)
|
||||||
#define XPS_MAPPED_FOR_CLI(p,x) ((ULONG)(x) * XPS_MAPPED_PER_CLI(p))
|
#define XPS_SLOT_OFFSET(pages,slot) (XPS_MAPPED_PER_CLI(pages) * (ULONG)(slot))
|
||||||
#define XPS_MAPPED_SIZE(p,c) ((ULONG)(c) * XPS_MAPPED_PER_CLI(p))
|
#define XPS_MAPPED_SIZE(users,pages) ((ULONG)(users) * XPS_MAPPED_PER_CLI(pages))
|
||||||
#define XPS_USEFUL_SPACE(p) (XPS_MAPPED_PER_CLI(p) - sizeof( struct xps))
|
|
||||||
|
#define XPS_USEFUL_SPACE(p) (XPS_MAPPED_PER_CLI(p) - sizeof(struct xps))
|
||||||
|
|
||||||
#define XPS_DEF_NUM_CLI 10 /* default clients per mapped file */
|
#define XPS_DEF_NUM_CLI 10 /* default clients per mapped file */
|
||||||
#define XPS_DEF_NUM_MAPS 10 /* default maps available */
|
|
||||||
#define XPS_DEF_PAGES_PER_CLI 8 /* default 1k pages space per client */
|
#define XPS_DEF_PAGES_PER_CLI 8 /* default 1k pages space per client */
|
||||||
|
|
||||||
#define XPS_MIN_NUM_CLI 1 /* min clients per mapped file */
|
#define XPS_MIN_NUM_CLI 1 /* min clients per mapped file */
|
||||||
#define XPS_MIN_NUM_MAPS 1 /* min maps available */
|
|
||||||
#define XPS_MIN_PAGES_PER_CLI 1 /* min 1k pages space per client */
|
#define XPS_MIN_PAGES_PER_CLI 1 /* min 1k pages space per client */
|
||||||
|
|
||||||
#define XPS_MAX_NUM_CLI 64 /* max clients per mapped file */
|
#define XPS_MAX_NUM_CLI 64 /* max clients per mapped file */
|
||||||
#define XPS_MAX_NUM_MAPS 64 /* max maps available */
|
|
||||||
#define XPS_MAX_PAGES_PER_CLI 16 /* max 1k pages space per client */
|
#define XPS_MAX_PAGES_PER_CLI 16 /* max 1k pages space per client */
|
||||||
|
|
||||||
#define XPS_PACK_PARAMS(x,p,m,u) (((ULONG)(x) << 24) + ((ULONG)(p) << 16) + ((m) << 8) + (u))
|
|
||||||
#define XPS_UNPACK_MAX_SLOTS(n) (((ULONG)(n) >> 24) & 0xFF)
|
#define XNET_INVALID_MAP_NUM 0xFFFFFFFF
|
||||||
#define XPS_UNPACK_PAGES(n) (((ULONG)(n) >> 16) & 0xFF)
|
|
||||||
#define XPS_UNPACK_MAPNUM(n) (((ULONG)(n) >> 8) & 0xFF)
|
#define XNET_EVENT_SPACE 100 /* half of space (bytes) for event handling per connection */
|
||||||
#define XPS_UNPACK_SLOTNUM(n) ((n) & 0xFF)
|
|
||||||
|
|
||||||
/* mapped file structure */
|
/* mapped file structure */
|
||||||
|
|
||||||
typedef struct xpm {
|
typedef struct xpm {
|
||||||
struct xpm *xpm_next; /* pointer to next one */
|
struct xpm *xpm_next; /* pointer to next one */
|
||||||
USHORT xpm_count; /* slots in use */
|
ULONG xpm_count; /* slots in use */
|
||||||
USHORT xpm_number; /* mapped area number */
|
ULONG xpm_number; /* mapped area number */
|
||||||
FILE_ID xpm_handle; /* handle of mapped memory */
|
FILE_ID xpm_handle; /* handle of mapped memory */
|
||||||
USHORT xpm_flags; /* flag word */
|
USHORT xpm_flags; /* flag word */
|
||||||
CADDR_T xpm_address; /* address of mapped memory */
|
CADDR_T xpm_address; /* address of mapped memory */
|
||||||
UCHAR *xpm_ids[XPS_MAX_NUM_CLI]; /* ids */
|
UCHAR xpm_ids[XPS_MAX_NUM_CLI]; /* ids */
|
||||||
|
time_t xpm_timestamp; /* timestamp to avoid map name confilcts */
|
||||||
} *XPM;
|
} *XPM;
|
||||||
|
|
||||||
/* mapped structure flags */
|
/* mapped structure flags */
|
||||||
|
|
||||||
#define XPMF_SERVER_SHUTDOWN 1 /* server has shut down */
|
#define XPMF_SERVER_SHUTDOWN 1 /* server has shut down */
|
||||||
|
#define XPM_FREE 0 /* xpm structure is free for use */
|
||||||
|
#define XPM_BUSY 1 /* xpm structure is in use */
|
||||||
|
|
||||||
/* thread connection control block */
|
|
||||||
|
|
||||||
typedef struct xcc {
|
/* xch comm channel structure - four per connection (client to server data,
|
||||||
struct xcc *xcc_next; /* pointer to next thread */
|
|
||||||
struct xpm *xcc_xpm; /* pointer back to xpm */
|
|
||||||
BOOLEAN xcc_send_channel_locked; /* status of send channel */
|
|
||||||
SSHORT xcc_file; /* this thread's mapped file number */
|
|
||||||
USHORT xcc_slot; /* this thread's slot number */
|
|
||||||
FILE_ID xcc_file_handle; /* mapped file's handle */
|
|
||||||
#ifdef WIN_NT
|
|
||||||
HANDLE xcc_server_proc; /* server's process handle */
|
|
||||||
HANDLE xcc_client_proc; /* client's process handle */
|
|
||||||
#endif
|
|
||||||
PID_T xcc_server_id; /* server's process id */
|
|
||||||
PID_T xcc_client_id; /* client's process id */
|
|
||||||
#ifdef WIN_NT
|
|
||||||
HANDLE xcc_recv_sem; /* start receive semaphore handle */
|
|
||||||
HANDLE xcc_send_sem; /* start send semaphore handle */
|
|
||||||
#endif
|
|
||||||
struct xch *xcc_receive_channel; /* receive channel structure */
|
|
||||||
struct xch *xcc_send_channel; /* send channel structure */
|
|
||||||
USHORT xcc_flags; /* status bits */
|
|
||||||
UCHAR *xcc_mapped_addr; /* where the thread's mapped to */
|
|
||||||
} *XCC;
|
|
||||||
|
|
||||||
/* xcc structure flags */
|
|
||||||
|
|
||||||
#define XCCF_SHUTDOWN 1 /* shutdown in progress */
|
|
||||||
#define XCCF_SERVER_SHUTDOWN 2 /* server has shut down */
|
|
||||||
|
|
||||||
/* comm channel structure - four per connection (client to server data,
|
|
||||||
server to client data, client to server events, server to client events) */
|
server to client data, client to server events, server to client events) */
|
||||||
|
|
||||||
typedef struct xch
|
typedef struct xch
|
||||||
{
|
{
|
||||||
USHORT xch_sent; /* messages sent */
|
ULONG xch_length; /* message length */
|
||||||
USHORT xch_received; /* messages received */
|
ULONG xch_size; /* channel data size */
|
||||||
USHORT xch_length; /* message length */
|
USHORT xch_flags; /* flags */
|
||||||
USHORT xch_size; /* channel data size */
|
UCHAR *xch_buffer; /* message */
|
||||||
USHORT xch_flags; /* flags */
|
UCHAR *xch_client_ptr; /* client pointer to xch buffers */
|
||||||
UCHAR *xch_buffer; /* message */
|
|
||||||
UCHAR *xch_client_ptr; /* client pointer to xch buffers */
|
|
||||||
} *XCH;
|
} *XCH;
|
||||||
|
|
||||||
#define XCHFLAG_more_data 1 /* more data coming */
|
|
||||||
#define XCHFLAG_data_overrun 2 /* receive buffer full */
|
|
||||||
|
|
||||||
/*
|
/* thread connection control block (xcc) */
|
||||||
This structure is mapped to the start of the allocated
|
|
||||||
communications area between the client and server.
|
typedef struct xcc {
|
||||||
*/
|
struct xcc *xcc_next; /* pointer to next thread */
|
||||||
|
XPM xcc_xpm; /* pointer back to xpm */
|
||||||
|
ULONG xcc_map_num; /* this thread's mapped file number */
|
||||||
|
ULONG xcc_slot; /* this thread's slot number */
|
||||||
|
FILE_ID xcc_map_handle; /* mapped file's handle */
|
||||||
|
#ifdef WIN_NT
|
||||||
|
HANDLE xcc_proc_h; /* for server client's process handle
|
||||||
|
for client server's process handle */
|
||||||
|
|
||||||
|
HANDLE xcc_event_send_channel_filled; /* xcc_send_channel ready for reading */
|
||||||
|
HANDLE xcc_event_send_channel_empted; /* xcc_send_channel ready for writting */
|
||||||
|
HANDLE xcc_event_recv_channel_filled; /* xcc_receive_channel ready for reading */
|
||||||
|
HANDLE xcc_event_recv_channel_empted; /* xcc_receive_channel ready for writing */
|
||||||
|
#endif
|
||||||
|
XCH xcc_recv_channel; /* receive channel structure */
|
||||||
|
XCH xcc_send_channel; /* send channel structure */
|
||||||
|
ULONG xcc_flags; /* status bits */
|
||||||
|
UCHAR *xcc_mapped_addr; /* where the thread's mapped to */
|
||||||
|
} *XCC;
|
||||||
|
|
||||||
|
/* xcc structure flags */
|
||||||
|
#define XCCF_SERVER_SHUTDOWN 2 /* server has shutdown detected */
|
||||||
|
|
||||||
|
|
||||||
|
/* This structure (xps) is mapped to the start of the allocated
|
||||||
|
communications area between the client and server. */
|
||||||
|
|
||||||
typedef struct xps
|
typedef struct xps
|
||||||
{
|
{
|
||||||
ULONG xps_server_protocol; /* server's protocol level */
|
ULONG xps_server_protocol; /* server's protocol level */
|
||||||
ULONG xps_client_protocol; /* client's protocol level */
|
ULONG xps_client_protocol; /* client's protocol level */
|
||||||
#ifdef WIN_NT
|
PID_T xps_server_proc_id; /* server's process id */
|
||||||
HANDLE xps_server_proc; /* server's process handle */
|
PID_T xps_client_proc_id; /* client's process id */
|
||||||
HANDLE xps_client_proc; /* client's process handle */
|
|
||||||
#endif
|
|
||||||
PID_T xps_server_id; /* server's process id */
|
|
||||||
PID_T xps_client_id; /* client's process id */
|
|
||||||
USHORT xps_flags; /* flags word */
|
USHORT xps_flags; /* flags word */
|
||||||
struct xch xps_channels[4]; /* comm channels */
|
struct xch xps_channels[4]; /* comm channels */
|
||||||
ULONG xps_data[1]; /* start of data area */
|
ULONG xps_data[1]; /* start of data area */
|
||||||
} *XPS;
|
} *XPS;
|
||||||
|
|
||||||
|
|
||||||
|
/* xps_channel numbers */
|
||||||
|
|
||||||
|
#define XPS_CHANNEL_C2S_DATA 0 /* 0 - client to server data */
|
||||||
|
#define XPS_CHANNEL_S2C_DATA 1 /* 1 - server to client data */
|
||||||
|
#define XPS_CHANNEL_C2S_EVENTS 2 /* 2 - client to server events */
|
||||||
|
#define XPS_CHANNEL_S2C_EVENTS 3 /* 3 - server to client events */
|
||||||
|
|
||||||
|
|
||||||
|
#define XPI_CLIENT_PROTOCOL_VERSION 3L
|
||||||
|
#define XPI_SERVER_PROTOCOL_VERSION 3L
|
||||||
|
|
||||||
|
/* XNET_RESPONSE - server response on client connect request */
|
||||||
|
typedef struct{
|
||||||
|
ULONG proc_id;
|
||||||
|
ULONG slots_per_map;
|
||||||
|
ULONG pages_per_slot;
|
||||||
|
ULONG map_num;
|
||||||
|
ULONG slot_num;
|
||||||
|
time_t timestamp;
|
||||||
|
} XNET_RESPONSE, *PXNET_RESPONSE;
|
||||||
|
|
||||||
|
/* XNET_CONNECT_RESPONZE_SIZE - amount of bytes server writes on connect response */
|
||||||
|
#define XNET_CONNECT_RESPONZE_SIZE sizeof(XNET_RESPONSE)
|
||||||
|
|
||||||
/* Windows names used to identify various named objects */
|
/* Windows names used to identify various named objects */
|
||||||
|
|
||||||
#define XPI_PREFIX "FirebirdXPI"
|
#define XNET_PREFIX "FirebirdXNET"
|
||||||
|
#define XNET_MAPPED_FILE_NAME "%s_MAP_%d_%d"
|
||||||
|
|
||||||
#define XPI_SERVER_NAME "%sServer"
|
#define XNET_MA_CONNECT_MAP "%s_CONNECT_MAP"
|
||||||
#define XPI_SERVER_CLASS "%sServerClass"
|
#define XNET_MU_CONNECT_MUTEX "%s_CONNECT_MUTEX"
|
||||||
#define XPI_MAPPED_FILE_NAME "%sMappedArea%d"
|
#define XNET_E_CONNECT_EVENT "%s_E_CONNECT_EVENT"
|
||||||
#define XPI_C_TO_S_SEM_NAME "%sCtoS%d_%d"
|
#define XNET_E_RESPONSE_EVENT "%s_E_RESPONSE_EVENT"
|
||||||
#define XPI_S_TO_C_SEM_NAME "%sStoC%d_%d"
|
|
||||||
#define XPI_C_TO_S_EVT_SEM_NAME "%sCtoSEvent%d_%d"
|
|
||||||
#define XPI_S_TO_C_EVT_SEM_NAME "%sStoCEvent%d_%d"
|
|
||||||
#define XPI_EVENT_NAME "%sEvent%d"
|
|
||||||
#define XPI_EVENT_CLASS "%sEventClass"
|
|
||||||
#define XPI_EVENT_THREAD "%sEventThread%d_%d"
|
|
||||||
|
|
||||||
#define XPI_CONNECT_MESSAGE WM_USER + 3
|
#define XNET_E_C2S_DATA_CHAN_FILLED "%s_E_C2S_DATA_FILLED_%d_%d_%d"
|
||||||
|
#define XNET_E_C2S_DATA_CHAN_EMPTED "%s_E_C2S_DATA_EMPTED_%d_%d_%d"
|
||||||
|
#define XNET_E_S2C_DATA_CHAN_FILLED "%s_E_S2C_DATA_FILLED_%d_%d_%d"
|
||||||
|
#define XNET_E_S2C_DATA_CHAN_EMPTED "%s_E_S2C_DATA_EMPTED_%d_%d_%d"
|
||||||
|
|
||||||
|
#define XNET_E_C2S_EVNT_CHAN_FILLED "%s_E_C2S_EVNT_FILLED_%d_%d_%d"
|
||||||
|
#define XNET_E_C2S_EVNT_CHAN_EMPTED "%s_E_C2S_EVNT_EMPTED_%d_%d_%d"
|
||||||
|
#define XNET_E_S2C_EVNT_CHAN_FILLED "%s_E_S2C_EVNT_FILLED_%d_%d_%d"
|
||||||
|
#define XNET_E_S2C_EVNT_CHAN_EMPTED "%s_E_S2C_EVNT_EMPTED_%d_%d_%d"
|
||||||
|
|
||||||
#endif /* _REMOTE_XNET_H_ */
|
#endif /* _REMOTE_XNET_H_ */
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
*
|
*
|
||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
* Contributor(s): ______________________________________.
|
* Contributor(s): ______________________________________.
|
||||||
|
*
|
||||||
|
* 2003.05.01 Victor Seryodkin, Dmitry Yemanov: Completed XNET implementation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _REMOTE_XNET_PROTO_H_
|
#ifndef _REMOTE_XNET_PROTO_H_
|
||||||
@ -32,11 +34,13 @@ extern "C" {
|
|||||||
#define PORT void*
|
#define PORT void*
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern PORT XNET_analyze( TEXT *, USHORT *, ISC_STATUS *, TEXT *, TEXT *, USHORT);
|
extern PORT XNET_analyze(TEXT *, USHORT *, ISC_STATUS *, TEXT *, TEXT *, USHORT);
|
||||||
extern PORT XNET_connect( TEXT *, struct packet *, ISC_STATUS *, USHORT);
|
extern PORT XNET_connect(TEXT *, struct packet *, ISC_STATUS *, USHORT);
|
||||||
extern USHORT XNET_init( HWND, USHORT, USHORT, USHORT);
|
|
||||||
extern void XNET_release_all(void);
|
#ifndef SUPERCLIENT
|
||||||
extern PORT XNET_start_thread( ULONG, ULONG *);
|
extern void XNET_srv(USHORT flag);
|
||||||
|
extern PORT XNET_reconnect(ULONG, TEXT *, ISC_STATUS *);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
Loading…
Reference in New Issue
Block a user